all: autogenerated update (2019-02-21)

Add:
- bigtableadmin/v1

Update:
- bigtableadmin/v2
- cloudidentity/v1
- cloudidentity/v1beta1
- cloudsearch/v1
- container/v1
- dfareporting/v3.3
- dialogflow/v2
- dialogflow/v2beta1
- dlp/v2
- dns/v1
- dns/v1beta2
- dns/v2beta1
- healthcare/v1alpha
- healthcare/v1alpha2
- iam/v1
- ml/v1
- remotebuildexecution/v1
- storagetransfer/v1
- tagmanager/v1
- tagmanager/v2
diff --git a/api-list.json b/api-list.json
index e9aeaea..806af05 100644
--- a/api-list.json
+++ b/api-list.json
@@ -3354,7 +3354,7 @@
    "name": "videointelligence",
    "version": "v1p1beta1",
    "title": "Cloud Video Intelligence API",
-   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text.",
+   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text. Supports both asynchronous API and streaming API.",
    "discoveryRestUrl": "https://videointelligence.googleapis.com/$discovery/rest?version=v1p1beta1",
    "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
@@ -3369,7 +3369,7 @@
    "name": "videointelligence",
    "version": "v1p2beta1",
    "title": "Cloud Video Intelligence API",
-   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text.",
+   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text. Supports both asynchronous API and streaming API.",
    "discoveryRestUrl": "https://videointelligence.googleapis.com/$discovery/rest?version=v1p2beta1",
    "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
@@ -3380,11 +3380,26 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "videointelligence:v1p3beta1",
+   "name": "videointelligence",
+   "version": "v1p3beta1",
+   "title": "Cloud Video Intelligence API",
+   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text. Supports both asynchronous API and streaming API.",
+   "discoveryRestUrl": "https://videointelligence.googleapis.com/$discovery/rest?version=v1p3beta1",
+   "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"
+   },
+   "documentationLink": "https://cloud.google.com/video-intelligence/docs/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "videointelligence:v1",
    "name": "videointelligence",
    "version": "v1",
    "title": "Cloud Video Intelligence API",
-   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text.",
+   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text. Supports both asynchronous API and streaming API.",
    "discoveryRestUrl": "https://videointelligence.googleapis.com/$discovery/rest?version=v1",
    "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
@@ -3399,7 +3414,7 @@
    "name": "videointelligence",
    "version": "v1beta2",
    "title": "Cloud Video Intelligence API",
-   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text.",
+   "description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text. Supports both asynchronous API and streaming API.",
    "discoveryRestUrl": "https://videointelligence.googleapis.com/$discovery/rest?version=v1beta2",
    "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
diff --git a/bigtableadmin/v1/bigtableadmin-api.json b/bigtableadmin/v1/bigtableadmin-api.json
new file mode 100644
index 0000000..d266502
--- /dev/null
+++ b/bigtableadmin/v1/bigtableadmin-api.json
@@ -0,0 +1,521 @@
+{
+  "basePath": "",
+  "baseUrl": "https://bigtableadmin.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Bigtable Admin",
+  "description": "",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/bigtable/",
+  "fullyEncodeReservedExpansion": true,
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "id": "bigtableadmin:v1",
+  "kind": "discovery#restDescription",
+  "name": "bigtableadmin",
+  "ownerDomain": "google.com",
+  "ownerName": "Google",
+  "parameters": {
+    "$.xgafv": {
+      "description": "V1 error format.",
+      "enum": [
+        "1",
+        "2"
+      ],
+      "enumDescriptions": [
+        "v1 error format",
+        "v2 error format"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "access_token": {
+      "description": "OAuth access token.",
+      "location": "query",
+      "type": "string"
+    },
+    "alt": {
+      "default": "json",
+      "description": "Data format for response.",
+      "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"
+    },
+    "callback": {
+      "description": "JSONP",
+      "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.",
+      "location": "query",
+      "type": "string"
+    },
+    "uploadType": {
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    }
+  },
+  "protocol": "rest",
+  "resources": {
+    "projects": {
+      "resources": {
+        "locations": {
+          "methods": {
+            "get": {
+              "description": "Gets information about a location.",
+              "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+              "httpMethod": "GET",
+              "id": "bigtableadmin.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"
+              }
+            },
+            "list": {
+              "description": "Lists information about the supported locations for this service.",
+              "flatPath": "v1/projects/{projectsId}/locations",
+              "httpMethod": "GET",
+              "id": "bigtableadmin.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"
+                },
+                "pageSize": {
+                  "description": "The standard list page size.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "The standard list page token.",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1/{+name}/locations",
+              "response": {
+                "$ref": "ListLocationsResponse"
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20190207",
+  "rootUrl": "https://bigtableadmin.googleapis.com/",
+  "schemas": {
+    "Cluster": {
+      "description": "A resizable group of nodes in a particular cloud location, capable\nof serving all Tables in the parent\nInstance.",
+      "id": "Cluster",
+      "properties": {
+        "defaultStorageType": {
+          "description": "(`CreationOnly`)\nThe type of storage used by this cluster to serve its\nparent instance's tables, unless explicitly overridden.",
+          "enum": [
+            "STORAGE_TYPE_UNSPECIFIED",
+            "SSD",
+            "HDD"
+          ],
+          "enumDescriptions": [
+            "The user did not specify a storage type.",
+            "Flash (SSD) storage should be used.",
+            "Magnetic drive (HDD) storage should be used."
+          ],
+          "type": "string"
+        },
+        "location": {
+          "description": "(`CreationOnly`)\nThe location where this cluster's nodes and storage reside. For best\nperformance, clients should be located as close as possible to this\ncluster. Currently only zones are supported, so values should be of the\nform `projects/\u003cproject\u003e/locations/\u003czone\u003e`.",
+          "type": "string"
+        },
+        "name": {
+          "description": "(`OutputOnly`)\nThe unique name of the cluster. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e/clusters/a-z*`.",
+          "type": "string"
+        },
+        "serveNodes": {
+          "description": "The number of nodes allocated to this cluster. More nodes enable higher\nthroughput and more consistent performance.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "state": {
+          "description": "(`OutputOnly`)\nThe current state of the cluster.",
+          "enum": [
+            "STATE_NOT_KNOWN",
+            "READY",
+            "CREATING",
+            "RESIZING",
+            "DISABLED"
+          ],
+          "enumDescriptions": [
+            "The state of the cluster could not be determined.",
+            "The cluster has been successfully created and is ready to serve requests.",
+            "The cluster is currently being created, and may be destroyed\nif the creation process encounters an error.\nA cluster may not be able to serve requests while being created.",
+            "The cluster is currently being resized, and may revert to its previous\nnode count if the process encounters an error.\nA cluster is still capable of serving requests while being resized,\nbut may exhibit performance as if its number of allocated nodes is\nbetween the starting and requested states.",
+            "The cluster has no backing nodes. The data (tables) still\nexist, but no operations can be performed on the cluster."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "CreateClusterMetadata": {
+      "description": "The metadata for the Operation returned by CreateCluster.",
+      "id": "CreateClusterMetadata",
+      "properties": {
+        "finishTime": {
+          "description": "The time at which the operation failed or was completed successfully.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "originalRequest": {
+          "$ref": "CreateClusterRequest",
+          "description": "The request that prompted the initiation of this CreateCluster operation."
+        },
+        "requestTime": {
+          "description": "The time at which the original request was received.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "tables": {
+          "additionalProperties": {
+            "$ref": "TableProgress"
+          },
+          "description": "Keys: the full `name` of each table that existed in the instance when\nCreateCluster was first called, i.e.\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e/tables/\u003ctable\u003e`. Any table added\nto the instance by a later API call will be created in the new cluster by\nthat API call, not this one.\n\nValues: information on how much of a table's data has been copied to the\nnewly-created cluster so far.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "CreateClusterRequest": {
+      "description": "Request message for BigtableInstanceAdmin.CreateCluster.",
+      "id": "CreateClusterRequest",
+      "properties": {
+        "cluster": {
+          "$ref": "Cluster",
+          "description": "The cluster to be created.\nFields marked `OutputOnly` must be left blank."
+        },
+        "clusterId": {
+          "description": "The ID to be used when referring to the new cluster within its instance,\ne.g., just `mycluster` rather than\n`projects/myproject/instances/myinstance/clusters/mycluster`.",
+          "type": "string"
+        },
+        "parent": {
+          "description": "The unique name of the instance in which to create the new cluster.\nValues are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "CreateInstanceMetadata": {
+      "description": "The metadata for the Operation returned by CreateInstance.",
+      "id": "CreateInstanceMetadata",
+      "properties": {
+        "finishTime": {
+          "description": "The time at which the operation failed or was completed successfully.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "originalRequest": {
+          "$ref": "CreateInstanceRequest",
+          "description": "The request that prompted the initiation of this CreateInstance operation."
+        },
+        "requestTime": {
+          "description": "The time at which the original request was received.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "CreateInstanceRequest": {
+      "description": "Request message for BigtableInstanceAdmin.CreateInstance.",
+      "id": "CreateInstanceRequest",
+      "properties": {
+        "clusters": {
+          "additionalProperties": {
+            "$ref": "Cluster"
+          },
+          "description": "The clusters to be created within the instance, mapped by desired\ncluster ID, e.g., just `mycluster` rather than\n`projects/myproject/instances/myinstance/clusters/mycluster`.\nFields marked `OutputOnly` must be left blank.\nCurrently, at most two clusters can be specified.",
+          "type": "object"
+        },
+        "instance": {
+          "$ref": "Instance",
+          "description": "The instance to create.\nFields marked `OutputOnly` must be left blank."
+        },
+        "instanceId": {
+          "description": "The ID to be used when referring to the new instance within its project,\ne.g., just `myinstance` rather than\n`projects/myproject/instances/myinstance`.",
+          "type": "string"
+        },
+        "parent": {
+          "description": "The unique name of the project in which to create the new instance.\nValues are of the form `projects/\u003cproject\u003e`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Instance": {
+      "description": "A collection of Bigtable Tables and\nthe resources that serve them.\nAll tables in an instance are served from all\nClusters in the instance.",
+      "id": "Instance",
+      "properties": {
+        "displayName": {
+          "description": "The descriptive name for this instance as it appears in UIs.\nCan be changed at any time, but should be kept globally unique\nto avoid confusion.",
+          "type": "string"
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Labels are a flexible and lightweight mechanism for organizing cloud\nresources into groups that reflect a customer's organizational needs and\ndeployment strategies. They can be used to filter resources and aggregate\nmetrics.\n\n* Label keys must be between 1 and 63 characters long and must conform to\n  the regular expression: `\\p{Ll}\\p{Lo}{0,62}`.\n* Label values must be between 0 and 63 characters long and must conform to\n  the regular expression: `[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}`.\n* No more than 64 labels can be associated with a given resource.\n* Keys and values must both be under 128 bytes.",
+          "type": "object"
+        },
+        "name": {
+          "description": "(`OutputOnly`)\nThe unique name of the instance. Values are of the form\n`projects/\u003cproject\u003e/instances/a-z+[a-z0-9]`.",
+          "type": "string"
+        },
+        "state": {
+          "description": "(`OutputOnly`)\nThe current state of the instance.",
+          "enum": [
+            "STATE_NOT_KNOWN",
+            "READY",
+            "CREATING"
+          ],
+          "enumDescriptions": [
+            "The state of the instance could not be determined.",
+            "The instance has been successfully created and can serve requests\nto its tables.",
+            "The instance is currently being created, and may be destroyed\nif the creation process encounters an error."
+          ],
+          "type": "string"
+        },
+        "type": {
+          "description": "The type of the instance. Defaults to `PRODUCTION`.",
+          "enum": [
+            "TYPE_UNSPECIFIED",
+            "PRODUCTION",
+            "DEVELOPMENT"
+          ],
+          "enumDescriptions": [
+            "The type of the instance is unspecified. If set when creating an\ninstance, a `PRODUCTION` instance will be created. If set when updating\nan instance, the type will be left unchanged.",
+            "An instance meant for production use. `serve_nodes` must be set\non the cluster.",
+            "The instance is meant for development and testing purposes only; it has\nno performance or uptime guarantees and is not covered by SLA.\nAfter a development instance is created, it can be upgraded by\nupdating the instance to type `PRODUCTION`. An instance created\nas a production instance cannot be changed to a development instance.\nWhen creating a development instance, `serve_nodes` on the cluster must\nnot be set."
+          ],
+          "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"
+    },
+    "Location": {
+      "description": "A resource that represents Google Cloud Platform location.",
+      "id": "Location",
+      "properties": {
+        "displayName": {
+          "description": "The friendly name for this location, typically a nearby city name.\nFor example, \"Tokyo\".",
+          "type": "string"
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Cross-service attributes for the location. For example\n\n    {\"cloud.googleapis.com/region\": \"us-east1\"}",
+          "type": "object"
+        },
+        "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"
+        },
+        "name": {
+          "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "PartialUpdateInstanceRequest": {
+      "description": "Request message for BigtableInstanceAdmin.PartialUpdateInstance.",
+      "id": "PartialUpdateInstanceRequest",
+      "properties": {
+        "instance": {
+          "$ref": "Instance",
+          "description": "The Instance which will (partially) replace the current value."
+        },
+        "updateMask": {
+          "description": "The subset of Instance fields which should be replaced.\nMust be explicitly set.",
+          "format": "google-fieldmask",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "TableProgress": {
+      "description": "Progress info for copying a table's data to the new cluster.",
+      "id": "TableProgress",
+      "properties": {
+        "estimatedCopiedBytes": {
+          "description": "Estimate of the number of bytes copied so far for this table.\nThis will eventually reach 'estimated_size_bytes' unless the table copy\nis CANCELLED.",
+          "format": "int64",
+          "type": "string"
+        },
+        "estimatedSizeBytes": {
+          "description": "Estimate of the size of the table to be copied.",
+          "format": "int64",
+          "type": "string"
+        },
+        "state": {
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "PENDING",
+            "COPYING",
+            "COMPLETED",
+            "CANCELLED"
+          ],
+          "enumDescriptions": [
+            "",
+            "The table has not yet begun copying to the new cluster.",
+            "The table is actively being copied to the new cluster.",
+            "The table has been fully copied to the new cluster.",
+            "The table was deleted before it finished copying to the new cluster.\nNote that tables deleted after completion will stay marked as\nCOMPLETED, not CANCELLED."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "UpdateAppProfileMetadata": {
+      "description": "The metadata for the Operation returned by UpdateAppProfile.",
+      "id": "UpdateAppProfileMetadata",
+      "properties": {},
+      "type": "object"
+    },
+    "UpdateClusterMetadata": {
+      "description": "The metadata for the Operation returned by UpdateCluster.",
+      "id": "UpdateClusterMetadata",
+      "properties": {
+        "finishTime": {
+          "description": "The time at which the operation failed or was completed successfully.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "originalRequest": {
+          "$ref": "Cluster",
+          "description": "The request that prompted the initiation of this UpdateCluster operation."
+        },
+        "requestTime": {
+          "description": "The time at which the original request was received.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "UpdateInstanceMetadata": {
+      "description": "The metadata for the Operation returned by UpdateInstance.",
+      "id": "UpdateInstanceMetadata",
+      "properties": {
+        "finishTime": {
+          "description": "The time at which the operation failed or was completed successfully.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "originalRequest": {
+          "$ref": "PartialUpdateInstanceRequest",
+          "description": "The request that prompted the initiation of this UpdateInstance operation."
+        },
+        "requestTime": {
+          "description": "The time at which the original request was received.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Cloud Bigtable Admin API",
+  "version": "v1",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/bigtableadmin/v1/bigtableadmin-gen.go b/bigtableadmin/v1/bigtableadmin-gen.go
new file mode 100644
index 0000000..c81cefb
--- /dev/null
+++ b/bigtableadmin/v1/bigtableadmin-gen.go
@@ -0,0 +1,1055 @@
+// Copyright 2019 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package bigtableadmin provides access to the Cloud Bigtable Admin API.
+//
+// See https://cloud.google.com/bigtable/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/bigtableadmin/v1"
+//   ...
+//   bigtableadminService, err := bigtableadmin.New(oauthHttpClient)
+package bigtableadmin // import "google.golang.org/api/bigtableadmin/v1"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "bigtableadmin:v1"
+const apiName = "bigtableadmin"
+const apiVersion = "v1"
+const basePath = "https://bigtableadmin.googleapis.com/"
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Projects = NewProjectsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Projects *ProjectsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.Locations = NewProjectsLocationsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Locations *ProjectsLocationsService
+}
+
+func NewProjectsLocationsService(s *Service) *ProjectsLocationsService {
+	rs := &ProjectsLocationsService{s: s}
+	return rs
+}
+
+type ProjectsLocationsService struct {
+	s *Service
+}
+
+// Cluster: A resizable group of nodes in a particular cloud location,
+// capable
+// of serving all Tables in the parent
+// Instance.
+type Cluster struct {
+	// DefaultStorageType: (`CreationOnly`)
+	// The type of storage used by this cluster to serve its
+	// parent instance's tables, unless explicitly overridden.
+	//
+	// Possible values:
+	//   "STORAGE_TYPE_UNSPECIFIED" - The user did not specify a storage
+	// type.
+	//   "SSD" - Flash (SSD) storage should be used.
+	//   "HDD" - Magnetic drive (HDD) storage should be used.
+	DefaultStorageType string `json:"defaultStorageType,omitempty"`
+
+	// Location: (`CreationOnly`)
+	// The location where this cluster's nodes and storage reside. For
+	// best
+	// performance, clients should be located as close as possible to
+	// this
+	// cluster. Currently only zones are supported, so values should be of
+	// the
+	// form `projects/<project>/locations/<zone>`.
+	Location string `json:"location,omitempty"`
+
+	// Name: (`OutputOnly`)
+	// The unique name of the cluster. Values are of the
+	// form
+	// `projects/<project>/instances/<instance>/clusters/a-z*`.
+	Name string `json:"name,omitempty"`
+
+	// ServeNodes: The number of nodes allocated to this cluster. More nodes
+	// enable higher
+	// throughput and more consistent performance.
+	ServeNodes int64 `json:"serveNodes,omitempty"`
+
+	// State: (`OutputOnly`)
+	// The current state of the cluster.
+	//
+	// Possible values:
+	//   "STATE_NOT_KNOWN" - The state of the cluster could not be
+	// determined.
+	//   "READY" - The cluster has been successfully created and is ready to
+	// serve requests.
+	//   "CREATING" - The cluster is currently being created, and may be
+	// destroyed
+	// if the creation process encounters an error.
+	// A cluster may not be able to serve requests while being created.
+	//   "RESIZING" - The cluster is currently being resized, and may revert
+	// to its previous
+	// node count if the process encounters an error.
+	// A cluster is still capable of serving requests while being
+	// resized,
+	// but may exhibit performance as if its number of allocated nodes
+	// is
+	// between the starting and requested states.
+	//   "DISABLED" - The cluster has no backing nodes. The data (tables)
+	// still
+	// exist, but no operations can be performed on the cluster.
+	State string `json:"state,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DefaultStorageType")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DefaultStorageType") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Cluster) MarshalJSON() ([]byte, error) {
+	type NoMethod Cluster
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CreateClusterMetadata: The metadata for the Operation returned by
+// CreateCluster.
+type CreateClusterMetadata struct {
+	// FinishTime: The time at which the operation failed or was completed
+	// successfully.
+	FinishTime string `json:"finishTime,omitempty"`
+
+	// OriginalRequest: The request that prompted the initiation of this
+	// CreateCluster operation.
+	OriginalRequest *CreateClusterRequest `json:"originalRequest,omitempty"`
+
+	// RequestTime: The time at which the original request was received.
+	RequestTime string `json:"requestTime,omitempty"`
+
+	// Tables: Keys: the full `name` of each table that existed in the
+	// instance when
+	// CreateCluster was first called,
+	// i.e.
+	// `projects/<project>/instances/<instance>/tables/<table>`. Any table
+	// added
+	// to the instance by a later API call will be created in the new
+	// cluster by
+	// that API call, not this one.
+	//
+	// Values: information on how much of a table's data has been copied to
+	// the
+	// newly-created cluster so far.
+	Tables map[string]TableProgress `json:"tables,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FinishTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FinishTime") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreateClusterMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod CreateClusterMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CreateClusterRequest: Request message for
+// BigtableInstanceAdmin.CreateCluster.
+type CreateClusterRequest struct {
+	// Cluster: The cluster to be created.
+	// Fields marked `OutputOnly` must be left blank.
+	Cluster *Cluster `json:"cluster,omitempty"`
+
+	// ClusterId: The ID to be used when referring to the new cluster within
+	// its instance,
+	// e.g., just `mycluster` rather
+	// than
+	// `projects/myproject/instances/myinstance/clusters/mycluster`.
+	ClusterId string `json:"clusterId,omitempty"`
+
+	// Parent: The unique name of the instance in which to create the new
+	// cluster.
+	// Values are of the form
+	// `projects/<project>/instances/<instance>`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Cluster") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Cluster") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreateClusterRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod CreateClusterRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CreateInstanceMetadata: The metadata for the Operation returned by
+// CreateInstance.
+type CreateInstanceMetadata struct {
+	// FinishTime: The time at which the operation failed or was completed
+	// successfully.
+	FinishTime string `json:"finishTime,omitempty"`
+
+	// OriginalRequest: The request that prompted the initiation of this
+	// CreateInstance operation.
+	OriginalRequest *CreateInstanceRequest `json:"originalRequest,omitempty"`
+
+	// RequestTime: The time at which the original request was received.
+	RequestTime string `json:"requestTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FinishTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FinishTime") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreateInstanceMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod CreateInstanceMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CreateInstanceRequest: Request message for
+// BigtableInstanceAdmin.CreateInstance.
+type CreateInstanceRequest struct {
+	// Clusters: The clusters to be created within the instance, mapped by
+	// desired
+	// cluster ID, e.g., just `mycluster` rather
+	// than
+	// `projects/myproject/instances/myinstance/clusters/mycluster`.
+	// Fie
+	// lds marked `OutputOnly` must be left blank.
+	// Currently, at most two clusters can be specified.
+	Clusters map[string]Cluster `json:"clusters,omitempty"`
+
+	// Instance: The instance to create.
+	// Fields marked `OutputOnly` must be left blank.
+	Instance *Instance `json:"instance,omitempty"`
+
+	// InstanceId: The ID to be used when referring to the new instance
+	// within its project,
+	// e.g., just `myinstance` rather
+	// than
+	// `projects/myproject/instances/myinstance`.
+	InstanceId string `json:"instanceId,omitempty"`
+
+	// Parent: The unique name of the project in which to create the new
+	// instance.
+	// Values are of the form `projects/<project>`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Clusters") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Clusters") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CreateInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod CreateInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Instance: A collection of Bigtable Tables and
+// the resources that serve them.
+// All tables in an instance are served from all
+// Clusters in the instance.
+type Instance struct {
+	// DisplayName: The descriptive name for this instance as it appears in
+	// UIs.
+	// Can be changed at any time, but should be kept globally unique
+	// to avoid confusion.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Labels: Labels are a flexible and lightweight mechanism for
+	// organizing cloud
+	// resources into groups that reflect a customer's organizational needs
+	// and
+	// deployment strategies. They can be used to filter resources and
+	// aggregate
+	// metrics.
+	//
+	// * Label keys must be between 1 and 63 characters long and must
+	// conform to
+	//   the regular expression: `\p{Ll}\p{Lo}{0,62}`.
+	// * Label values must be between 0 and 63 characters long and must
+	// conform to
+	//   the regular expression: `[\p{Ll}\p{Lo}\p{N}_-]{0,63}`.
+	// * No more than 64 labels can be associated with a given resource.
+	// * Keys and values must both be under 128 bytes.
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// Name: (`OutputOnly`)
+	// The unique name of the instance. Values are of the
+	// form
+	// `projects/<project>/instances/a-z+[a-z0-9]`.
+	Name string `json:"name,omitempty"`
+
+	// State: (`OutputOnly`)
+	// The current state of the instance.
+	//
+	// Possible values:
+	//   "STATE_NOT_KNOWN" - The state of the instance could not be
+	// determined.
+	//   "READY" - The instance has been successfully created and can serve
+	// requests
+	// to its tables.
+	//   "CREATING" - The instance is currently being created, and may be
+	// destroyed
+	// if the creation process encounters an error.
+	State string `json:"state,omitempty"`
+
+	// Type: The type of the instance. Defaults to `PRODUCTION`.
+	//
+	// Possible values:
+	//   "TYPE_UNSPECIFIED" - The type of the instance is unspecified. If
+	// set when creating an
+	// instance, a `PRODUCTION` instance will be created. If set when
+	// updating
+	// an instance, the type will be left unchanged.
+	//   "PRODUCTION" - An instance meant for production use. `serve_nodes`
+	// must be set
+	// on the cluster.
+	//   "DEVELOPMENT" - The instance is meant for development and testing
+	// purposes only; it has
+	// no performance or uptime guarantees and is not covered by SLA.
+	// After a development instance is created, it can be upgraded
+	// by
+	// updating the instance to type `PRODUCTION`. An instance created
+	// as a production instance cannot be changed to a development
+	// instance.
+	// When creating a development instance, `serve_nodes` on the cluster
+	// must
+	// not be set.
+	Type string `json:"type,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DisplayName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DisplayName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Instance) MarshalJSON() ([]byte, error) {
+	type NoMethod Instance
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListLocationsResponse: The response message for
+// Locations.ListLocations.
+type ListLocationsResponse struct {
+	// Locations: A list of locations that matches the specified filter in
+	// the request.
+	Locations []*Location `json:"locations,omitempty"`
+
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Locations") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Locations") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListLocationsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListLocationsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Location: A resource that represents Google Cloud Platform location.
+type Location struct {
+	// DisplayName: The friendly name for this location, typically a nearby
+	// city name.
+	// For example, "Tokyo".
+	DisplayName string `json:"displayName,omitempty"`
+
+	// Labels: Cross-service attributes for the location. For example
+	//
+	//     {"cloud.googleapis.com/region": "us-east1"}
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// LocationId: The canonical id for this location. For example:
+	// "us-east1".
+	LocationId string `json:"locationId,omitempty"`
+
+	// Metadata: Service-specific metadata. For example the available
+	// capacity at the given
+	// location.
+	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
+
+	// Name: Resource name for the location, which may vary between
+	// implementations.
+	// For example: "projects/example-project/locations/us-east1"
+	Name string `json:"name,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "DisplayName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DisplayName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Location) MarshalJSON() ([]byte, error) {
+	type NoMethod Location
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PartialUpdateInstanceRequest: Request message for
+// BigtableInstanceAdmin.PartialUpdateInstance.
+type PartialUpdateInstanceRequest struct {
+	// Instance: The Instance which will (partially) replace the current
+	// value.
+	Instance *Instance `json:"instance,omitempty"`
+
+	// UpdateMask: The subset of Instance fields which should be
+	// replaced.
+	// Must be explicitly set.
+	UpdateMask string `json:"updateMask,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Instance") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Instance") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *PartialUpdateInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod PartialUpdateInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TableProgress: Progress info for copying a table's data to the new
+// cluster.
+type TableProgress struct {
+	// EstimatedCopiedBytes: Estimate of the number of bytes copied so far
+	// for this table.
+	// This will eventually reach 'estimated_size_bytes' unless the table
+	// copy
+	// is CANCELLED.
+	EstimatedCopiedBytes int64 `json:"estimatedCopiedBytes,omitempty,string"`
+
+	// EstimatedSizeBytes: Estimate of the size of the table to be copied.
+	EstimatedSizeBytes int64 `json:"estimatedSizeBytes,omitempty,string"`
+
+	// Possible values:
+	//   "STATE_UNSPECIFIED"
+	//   "PENDING" - The table has not yet begun copying to the new cluster.
+	//   "COPYING" - The table is actively being copied to the new cluster.
+	//   "COMPLETED" - The table has been fully copied to the new cluster.
+	//   "CANCELLED" - The table was deleted before it finished copying to
+	// the new cluster.
+	// Note that tables deleted after completion will stay marked
+	// as
+	// COMPLETED, not CANCELLED.
+	State string `json:"state,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "EstimatedCopiedBytes") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "EstimatedCopiedBytes") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TableProgress) MarshalJSON() ([]byte, error) {
+	type NoMethod TableProgress
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// UpdateAppProfileMetadata: The metadata for the Operation returned by
+// UpdateAppProfile.
+type UpdateAppProfileMetadata struct {
+}
+
+// UpdateClusterMetadata: The metadata for the Operation returned by
+// UpdateCluster.
+type UpdateClusterMetadata struct {
+	// FinishTime: The time at which the operation failed or was completed
+	// successfully.
+	FinishTime string `json:"finishTime,omitempty"`
+
+	// OriginalRequest: The request that prompted the initiation of this
+	// UpdateCluster operation.
+	OriginalRequest *Cluster `json:"originalRequest,omitempty"`
+
+	// RequestTime: The time at which the original request was received.
+	RequestTime string `json:"requestTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FinishTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FinishTime") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UpdateClusterMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod UpdateClusterMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// UpdateInstanceMetadata: The metadata for the Operation returned by
+// UpdateInstance.
+type UpdateInstanceMetadata struct {
+	// FinishTime: The time at which the operation failed or was completed
+	// successfully.
+	FinishTime string `json:"finishTime,omitempty"`
+
+	// OriginalRequest: The request that prompted the initiation of this
+	// UpdateInstance operation.
+	OriginalRequest *PartialUpdateInstanceRequest `json:"originalRequest,omitempty"`
+
+	// RequestTime: The time at which the original request was received.
+	RequestTime string `json:"requestTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FinishTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FinishTime") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UpdateInstanceMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod UpdateInstanceMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "bigtableadmin.projects.locations.get":
+
+type ProjectsLocationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets information about a location.
+func (r *ProjectsLocationsService) Get(name string) *ProjectsLocationsGetCall {
+	c := &ProjectsLocationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsGetCall) Context(ctx context.Context) *ProjectsLocationsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "bigtableadmin.projects.locations.get" call.
+// Exactly one of *Location or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Location.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsLocationsGetCall) Do(opts ...googleapi.CallOption) (*Location, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Location{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets information about a location.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "bigtableadmin.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"
+	//   }
+	// }
+
+}
+
+// method id "bigtableadmin.projects.locations.list":
+
+type ProjectsLocationsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists information about the supported locations for this
+// service.
+func (r *ProjectsLocationsService) List(name string) *ProjectsLocationsListCall {
+	c := &ProjectsLocationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *ProjectsLocationsListCall) Filter(filter string) *ProjectsLocationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *ProjectsLocationsListCall) PageSize(pageSize int64) *ProjectsLocationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *ProjectsLocationsListCall) PageToken(pageToken string) *ProjectsLocationsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsLocationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *ProjectsLocationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsLocationsListCall) Context(ctx context.Context) *ProjectsLocationsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsLocationsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}/locations")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "bigtableadmin.projects.locations.list" call.
+// Exactly one of *ListLocationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListLocationsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsLocationsListCall) Do(opts ...googleapi.CallOption) (*ListLocationsResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListLocationsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists information about the supported locations for this service.",
+	//   "flatPath": "v1/projects/{projectsId}/locations",
+	//   "httpMethod": "GET",
+	//   "id": "bigtableadmin.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"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}/locations",
+	//   "response": {
+	//     "$ref": "ListLocationsResponse"
+	//   }
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsLocationsListCall) Pages(ctx context.Context, f func(*ListLocationsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
diff --git a/bigtableadmin/v2/bigtableadmin-api.json b/bigtableadmin/v2/bigtableadmin-api.json
index 7080af6..42ce484 100644
--- a/bigtableadmin/v2/bigtableadmin-api.json
+++ b/bigtableadmin/v2/bigtableadmin-api.json
@@ -1249,7 +1249,7 @@
       }
     }
   },
-  "revision": "20190106",
+  "revision": "20190207",
   "rootUrl": "https://bigtableadmin.googleapis.com/",
   "schemas": {
     "AppProfile": {
@@ -1428,7 +1428,7 @@
       "id": "ClusterState",
       "properties": {
         "replicationState": {
-          "description": "(`OutputOnly`)\nThe state of replication for the table in this cluster.",
+          "description": "Output only.\nThe state of replication for the table in this cluster.",
           "enum": [
             "STATE_NOT_KNOWN",
             "INITIALIZING",
@@ -2046,7 +2046,7 @@
           "additionalProperties": {
             "$ref": "ClusterState"
           },
-          "description": "(`OutputOnly`)\nMap from cluster ID to per-cluster table state.\nIf it could not be determined whether or not the table has data in a\nparticular cluster (for example, if its zone is unavailable), then\nthere will be an entry for the cluster with UNKNOWN `replication_status`.\nViews: `REPLICATION_VIEW`, `FULL`",
+          "description": "Output only.\nMap from cluster ID to per-cluster table state.\nIf it could not be determined whether or not the table has data in a\nparticular cluster (for example, if its zone is unavailable), then\nthere will be an entry for the cluster with UNKNOWN `replication_status`.\nViews: `REPLICATION_VIEW`, `FULL`",
           "type": "object"
         },
         "columnFamilies": {
@@ -2057,7 +2057,7 @@
           "type": "object"
         },
         "granularity": {
-          "description": "(`CreationOnly`)\nThe granularity (i.e. `MILLIS`) at which timestamps are stored in\nthis table. Timestamps not matching the granularity will be rejected.\nIf unspecified at creation time, the value will be set to `MILLIS`.\nViews: `SCHEMA_VIEW`, `FULL`",
+          "description": "(`CreationOnly`)\nThe granularity (i.e. `MILLIS`) at which timestamps are stored in\nthis table. Timestamps not matching the granularity will be rejected.\nIf unspecified at creation time, the value will be set to `MILLIS`.\nViews: `SCHEMA_VIEW`, `FULL`.",
           "enum": [
             "TIMESTAMP_GRANULARITY_UNSPECIFIED",
             "MILLIS"
@@ -2069,7 +2069,7 @@
           "type": "string"
         },
         "name": {
-          "description": "(`OutputOnly`)\nThe unique name of the table. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e/tables/_a-zA-Z0-9*`.\nViews: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `FULL`",
+          "description": "Output only.\nThe unique name of the table. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e/tables/_a-zA-Z0-9*`.\nViews: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `FULL`",
           "type": "string"
         }
       },
diff --git a/bigtableadmin/v2/bigtableadmin-gen.go b/bigtableadmin/v2/bigtableadmin-gen.go
index 426fa48..4891e26 100644
--- a/bigtableadmin/v2/bigtableadmin-gen.go
+++ b/bigtableadmin/v2/bigtableadmin-gen.go
@@ -648,7 +648,7 @@
 
 // ClusterState: The state of a table's data in a particular cluster.
 type ClusterState struct {
-	// ReplicationState: (`OutputOnly`)
+	// ReplicationState: Output only.
 	// The state of replication for the table in this cluster.
 	//
 	// Possible values:
@@ -2064,7 +2064,7 @@
 // timestamp.
 // Each table is served using the resources of its parent cluster.
 type Table struct {
-	// ClusterStates: (`OutputOnly`)
+	// ClusterStates: Output only.
 	// Map from cluster ID to per-cluster table state.
 	// If it could not be determined whether or not the table has data in
 	// a
@@ -2088,7 +2088,7 @@
 	// rejected.
 	// If unspecified at creation time, the value will be set to
 	// `MILLIS`.
-	// Views: `SCHEMA_VIEW`, `FULL`
+	// Views: `SCHEMA_VIEW`, `FULL`.
 	//
 	// Possible values:
 	//   "TIMESTAMP_GRANULARITY_UNSPECIFIED" - The user did not specify a
@@ -2097,7 +2097,7 @@
 	//   "MILLIS" - The table keeps data versioned at a granularity of 1ms.
 	Granularity string `json:"granularity,omitempty"`
 
-	// Name: (`OutputOnly`)
+	// Name: Output only.
 	// The unique name of the table. Values are of the
 	// form
 	// `projects/<project>/instances/<instance>/tables/_a-zA-Z0-9*`.
diff --git a/cloudidentity/v1/cloudidentity-api.json b/cloudidentity/v1/cloudidentity-api.json
index f0979de..bb31d1b 100644
--- a/cloudidentity/v1/cloudidentity-api.json
+++ b/cloudidentity/v1/cloudidentity-api.json
@@ -164,7 +164,7 @@
           "parameterOrder": [],
           "parameters": {
             "pageSize": {
-              "description": "Maximum number of groups to return.\n\nView  | Default | Maximum\n----- | ------- | -------\nBASIC | 200     | 1000\nFULL  | 50      | 500",
+              "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
               "format": "int32",
               "location": "query",
               "type": "integer"
@@ -257,7 +257,7 @@
           "parameterOrder": [],
           "parameters": {
             "pageSize": {
-              "description": "Maximum number of groups to return.\n\nView  | Default | Maximum\n----- | ------- | -------\nBASIC | 200     | 1000\nFULL  | 50      | 500",
+              "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
               "format": "int32",
               "location": "query",
               "type": "integer"
@@ -371,7 +371,7 @@
               ],
               "parameters": {
                 "pageSize": {
-                  "description": "Maximum number of Memberships to return.\n\nView | Default | Maximum\n-----|---------|--------\nBASIC| 200     | 1000\nFULL | 50      | 500",
+                  "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
                   "format": "int32",
                   "location": "query",
                   "type": "integer"
@@ -441,7 +441,7 @@
       }
     }
   },
-  "revision": "20190122",
+  "revision": "20190219",
   "rootUrl": "https://cloudidentity.googleapis.com/",
   "schemas": {
     "EntityKey": {
diff --git a/cloudidentity/v1/cloudidentity-gen.go b/cloudidentity/v1/cloudidentity-gen.go
index d7957d8..89e897c 100644
--- a/cloudidentity/v1/cloudidentity-gen.go
+++ b/cloudidentity/v1/cloudidentity-gen.go
@@ -1090,13 +1090,9 @@
 	return c
 }
 
-// PageSize sets the optional parameter "pageSize": Maximum number of
-// groups to return.
-//
-// View  | Default | Maximum
-// ----- | ------- | -------
-// BASIC | 200     | 1000
-// FULL  | 50      | 500
+// PageSize sets the optional parameter "pageSize": The default page
+// size is 200 (max 1000) for the BASIC view, and 50
+// (max 500) for the FULL view.
 func (c *GroupsListCall) PageSize(pageSize int64) *GroupsListCall {
 	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
 	return c
@@ -1231,7 +1227,7 @@
 	//   "parameterOrder": [],
 	//   "parameters": {
 	//     "pageSize": {
-	//       "description": "Maximum number of groups to return.\n\nView  | Default | Maximum\n----- | ------- | -------\nBASIC | 200     | 1000\nFULL  | 50      | 500",
+	//       "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
@@ -1614,13 +1610,9 @@
 	return c
 }
 
-// PageSize sets the optional parameter "pageSize": Maximum number of
-// groups to return.
-//
-// View  | Default | Maximum
-// ----- | ------- | -------
-// BASIC | 200     | 1000
-// FULL  | 50      | 500
+// PageSize sets the optional parameter "pageSize": The default page
+// size is 200 (max 1000) for the BASIC view, and 50
+// (max 500) for the FULL view.
 func (c *GroupsSearchCall) PageSize(pageSize int64) *GroupsSearchCall {
 	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
 	return c
@@ -1759,7 +1751,7 @@
 	//   "parameterOrder": [],
 	//   "parameters": {
 	//     "pageSize": {
-	//       "description": "Maximum number of groups to return.\n\nView  | Default | Maximum\n----- | ------- | -------\nBASIC | 200     | 1000\nFULL  | 50      | 500",
+	//       "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
@@ -2234,13 +2226,9 @@
 	return c
 }
 
-// PageSize sets the optional parameter "pageSize": Maximum number of
-// Memberships to return.
-//
-// View | Default | Maximum
-// -----|---------|--------
-// BASIC| 200     | 1000
-// FULL | 50      | 500
+// PageSize sets the optional parameter "pageSize": The default page
+// size is 200 (max 1000) for the BASIC view, and 50
+// (max 500) for the FULL view.
 func (c *GroupsMembershipsListCall) PageSize(pageSize int64) *GroupsMembershipsListCall {
 	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
 	return c
@@ -2372,7 +2360,7 @@
 	//   ],
 	//   "parameters": {
 	//     "pageSize": {
-	//       "description": "Maximum number of Memberships to return.\n\nView | Default | Maximum\n-----|---------|--------\nBASIC| 200     | 1000\nFULL | 50      | 500",
+	//       "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
diff --git a/cloudidentity/v1beta1/cloudidentity-api.json b/cloudidentity/v1beta1/cloudidentity-api.json
index 0ceea92..a572dd8 100644
--- a/cloudidentity/v1beta1/cloudidentity-api.json
+++ b/cloudidentity/v1beta1/cloudidentity-api.json
@@ -218,7 +218,7 @@
           "parameterOrder": [],
           "parameters": {
             "pageSize": {
-              "description": "The max number of groups to return.\nGroupView | Default | Maximum\n--------- | ------- | -------\nBASIC     | 200     | 1000\nFULL      | 50      | 500",
+              "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
               "format": "int32",
               "location": "query",
               "type": "integer"
@@ -331,7 +331,7 @@
               ],
               "parameters": {
                 "pageSize": {
-                  "description": "Maximum number of Memberships to return.\n\nMembershipView | Default | Maximum\n-------------- | ------- | -------\nBASIC          | 200     | 1000\nFULL           | 50      | 500",
+                  "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
                   "format": "int32",
                   "location": "query",
                   "type": "integer"
@@ -400,7 +400,7 @@
       }
     }
   },
-  "revision": "20181217",
+  "revision": "20190219",
   "rootUrl": "https://cloudidentity.googleapis.com/",
   "schemas": {
     "EntityKey": {
diff --git a/cloudidentity/v1beta1/cloudidentity-gen.go b/cloudidentity/v1beta1/cloudidentity-gen.go
index 9b0e295..98e566a 100644
--- a/cloudidentity/v1beta1/cloudidentity-gen.go
+++ b/cloudidentity/v1beta1/cloudidentity-gen.go
@@ -1371,12 +1371,9 @@
 	return c
 }
 
-// PageSize sets the optional parameter "pageSize": The max number of
-// groups to return.
-// GroupView | Default | Maximum
-// --------- | ------- | -------
-// BASIC     | 200     | 1000
-// FULL      | 50      | 500
+// PageSize sets the optional parameter "pageSize": The default page
+// size is 200 (max 1000) for the BASIC view, and 50
+// (max 500) for the FULL view.
 func (c *GroupsSearchCall) PageSize(pageSize int64) *GroupsSearchCall {
 	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
 	return c
@@ -1519,7 +1516,7 @@
 	//   "parameterOrder": [],
 	//   "parameters": {
 	//     "pageSize": {
-	//       "description": "The max number of groups to return.\nGroupView | Default | Maximum\n--------- | ------- | -------\nBASIC     | 200     | 1000\nFULL      | 50      | 500",
+	//       "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
@@ -1993,13 +1990,9 @@
 	return c
 }
 
-// PageSize sets the optional parameter "pageSize": Maximum number of
-// Memberships to return.
-//
-// MembershipView | Default | Maximum
-// -------------- | ------- | -------
-// BASIC          | 200     | 1000
-// FULL           | 50      | 500
+// PageSize sets the optional parameter "pageSize": The default page
+// size is 200 (max 1000) for the BASIC view, and 50
+// (max 500) for the FULL view.
 func (c *GroupsMembershipsListCall) PageSize(pageSize int64) *GroupsMembershipsListCall {
 	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
 	return c
@@ -2130,7 +2123,7 @@
 	//   ],
 	//   "parameters": {
 	//     "pageSize": {
-	//       "description": "Maximum number of Memberships to return.\n\nMembershipView | Default | Maximum\n-------------- | ------- | -------\nBASIC          | 200     | 1000\nFULL           | 50      | 500",
+	//       "description": "The default page size is 200 (max 1000) for the BASIC view, and 50\n(max 500) for the FULL view.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
diff --git a/cloudsearch/v1/cloudsearch-api.json b/cloudsearch/v1/cloudsearch-api.json
index 33b90b0..35b8911 100644
--- a/cloudsearch/v1/cloudsearch-api.json
+++ b/cloudsearch/v1/cloudsearch-api.json
@@ -1429,7 +1429,7 @@
       }
     }
   },
-  "revision": "20190212",
+  "revision": "20190221",
   "rootUrl": "https://cloudsearch.googleapis.com/",
   "schemas": {
     "BooleanOperatorOptions": {
@@ -2313,6 +2313,16 @@
       },
       "type": "object"
     },
+    "IndexItemOptions": {
+      "id": "IndexItemOptions",
+      "properties": {
+        "allowUnknownGsuitePrincipals": {
+          "description": "Specifies if the index request should allow gsuite principals that do not\nexist or are deleted in the index request.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
     "IndexItemRequest": {
       "id": "IndexItemRequest",
       "properties": {
@@ -2324,6 +2334,9 @@
           "$ref": "DebugOptions",
           "description": "Common debug options."
         },
+        "indexItemOptions": {
+          "$ref": "IndexItemOptions"
+        },
         "item": {
           "$ref": "Item",
           "description": "Name of the item.  Format:\ndatasources/{source_id}/items/{item_id}"
@@ -3284,7 +3297,7 @@
           "type": "boolean"
         },
         "isReturnable": {
-          "description": "Indicates that the property identifies data that should be returned in search\nresults via the Query API. If set to *true*, indicates that Query API\nusers can use matching property fields in results. However, storing fields\nrequires more space allocation and uses more bandwidth for search queries,\nwhich impacts performance over large datasets. Set to *true* here only if\nthe field is needed for search results. Cannot be true for properties\nwhose type is an object.",
+          "description": "Indicates that the property identifies data that should be returned in\nsearch results via the Query API. If set to *true*, indicates that Query\nAPI users can use matching property fields in results. However, storing\nfields requires more space allocation and uses more bandwidth for search\nqueries, which impacts performance over large datasets. Set to *true* here\nonly if the field is needed for search results. Cannot be true for\nproperties whose type is an object.",
           "type": "boolean"
         },
         "isSortable": {
@@ -3833,7 +3846,7 @@
           "type": "string"
         },
         "operationIds": {
-          "description": "IDs of the Long Running Operations (LROs) currently running for this schema.\nOutput only field.",
+          "description": "IDs of the Long Running Operations (LROs) currently running for this\nschema. Output only field.",
           "items": {
             "type": "string"
           },
@@ -4282,7 +4295,8 @@
       "id": "StructuredResult",
       "properties": {
         "person": {
-          "$ref": "Person"
+          "$ref": "Person",
+          "description": "Representation of a person"
         }
       },
       "type": "object"
diff --git a/cloudsearch/v1/cloudsearch-gen.go b/cloudsearch/v1/cloudsearch-gen.go
index 73e8e47..025e4ba 100644
--- a/cloudsearch/v1/cloudsearch-gen.go
+++ b/cloudsearch/v1/cloudsearch-gen.go
@@ -2219,6 +2219,37 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type IndexItemOptions struct {
+	// AllowUnknownGsuitePrincipals: Specifies if the index request should
+	// allow gsuite principals that do not
+	// exist or are deleted in the index request.
+	AllowUnknownGsuitePrincipals bool `json:"allowUnknownGsuitePrincipals,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AllowUnknownGsuitePrincipals") to unconditionally include in API
+	// requests. By default, fields with empty values are omitted from API
+	// requests. However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g.
+	// "AllowUnknownGsuitePrincipals") to include in API requests with the
+	// JSON null value. By default, fields with empty values are omitted
+	// from API requests. However, any field with an empty value appearing
+	// in NullFields will be sent to the server as null. It is an error if a
+	// field in this list has a non-empty value. This may be used to include
+	// null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *IndexItemOptions) MarshalJSON() ([]byte, error) {
+	type NoMethod IndexItemOptions
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type IndexItemRequest struct {
 	// ConnectorName: Name of connector making this call.
 	// <br />Format: datasources/{source_id}/connectors/{ID}
@@ -2227,6 +2258,8 @@
 	// DebugOptions: Common debug options.
 	DebugOptions *DebugOptions `json:"debugOptions,omitempty"`
 
+	IndexItemOptions *IndexItemOptions `json:"indexItemOptions,omitempty"`
+
 	// Item: Name of the item.
 	// Format:
 	// datasources/{source_id}/items/{item_id}
@@ -4025,18 +4058,18 @@
 	IsRepeatable bool `json:"isRepeatable,omitempty"`
 
 	// IsReturnable: Indicates that the property identifies data that should
-	// be returned in search
-	// results via the Query API. If set to *true*, indicates that Query
-	// API
-	// users can use matching property fields in results. However, storing
-	// fields
-	// requires more space allocation and uses more bandwidth for search
-	// queries,
-	// which impacts performance over large datasets. Set to *true* here
-	// only if
-	// the field is needed for search results. Cannot be true for
-	// properties
-	// whose type is an object.
+	// be returned in
+	// search results via the Query API. If set to *true*, indicates that
+	// Query
+	// API users can use matching property fields in results. However,
+	// storing
+	// fields requires more space allocation and uses more bandwidth for
+	// search
+	// queries, which impacts performance over large datasets. Set to *true*
+	// here
+	// only if the field is needed for search results. Cannot be true
+	// for
+	// properties whose type is an object.
 	IsReturnable bool `json:"isReturnable,omitempty"`
 
 	// IsSortable: Indicates that the property can be used for sorting.
@@ -5029,8 +5062,8 @@
 	Name string `json:"name,omitempty"`
 
 	// OperationIds: IDs of the Long Running Operations (LROs) currently
-	// running for this schema.
-	// Output only field.
+	// running for this
+	// schema. Output only field.
 	OperationIds []string `json:"operationIds,omitempty"`
 
 	// ScoringConfig: Configuration for ranking results.
@@ -5868,6 +5901,7 @@
 // StructuredResult: Structured results that are returned as part of
 // search request.
 type StructuredResult struct {
+	// Person: Representation of a person
 	Person *Person `json:"person,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Person") to
diff --git a/container/v1/container-api.json b/container/v1/container-api.json
index 6bdb8c3..acca60e 100644
--- a/container/v1/container-api.json
+++ b/container/v1/container-api.json
@@ -118,7 +118,7 @@
               ],
               "parameters": {
                 "name": {
-                  "description": "The name (project and location) of the server config to get\nSpecified in the format 'projects/*/locations/*'.",
+                  "description": "The name (project and location) of the server config to get,\nspecified in the format 'projects/*/locations/*'.",
                   "location": "path",
                   "pattern": "^projects/[^/]+/locations/[^/]+$",
                   "required": true,
@@ -1136,7 +1136,7 @@
               ],
               "parameters": {
                 "name": {
-                  "description": "The name (project and location) of the server config to get\nSpecified in the format 'projects/*/locations/*'.",
+                  "description": "The name (project and location) of the server config to get,\nspecified in the format 'projects/*/locations/*'.",
                   "location": "query",
                   "type": "string"
                 },
@@ -2415,7 +2415,7 @@
       }
     }
   },
-  "revision": "20190102",
+  "revision": "20190206",
   "rootUrl": "https://container.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -3282,7 +3282,7 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "The metadata key/value pairs assigned to instances in the cluster.\n\nKeys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes\nin length. These are reflected as part of a URL in the metadata server.\nAdditionally, to avoid ambiguity, keys must not conflict with any other\nmetadata keys for the project or be one of the reserved keys:\n \"cluster-location\"\n \"cluster-name\"\n \"cluster-uid\"\n \"configure-sh\"\n \"enable-os-login\"\n \"gci-update-strategy\"\n \"gci-ensure-gke-docker\"\n \"instance-template\"\n \"kube-env\"\n \"startup-script\"\n \"user-data\"\n\nValues are free-form strings, and only have meaning as interpreted by\nthe image running in the instance. The only restriction placed on them is\nthat each value's size must be less than or equal to 32 KB.\n\nThe total size of all keys and values must be less than 512 KB.",
+          "description": "The metadata key/value pairs assigned to instances in the cluster.\n\nKeys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes\nin length. These are reflected as part of a URL in the metadata server.\nAdditionally, to avoid ambiguity, keys must not conflict with any other\nmetadata keys for the project or be one of the reserved keys:\n \"cluster-location\"\n \"cluster-name\"\n \"cluster-uid\"\n \"configure-sh\"\n \"containerd-configure-sh\"\n \"enable-os-login\"\n \"gci-update-strategy\"\n \"gci-ensure-gke-docker\"\n \"instance-template\"\n \"kube-env\"\n \"startup-script\"\n \"user-data\"\n\nValues are free-form strings, and only have meaning as interpreted by\nthe image running in the instance. The only restriction placed on them is\nthat each value's size must be less than or equal to 32 KB.\n\nThe total size of all keys and values must be less than 512 KB.",
           "type": "object"
         },
         "minCpuPlatform": {
diff --git a/container/v1/container-gen.go b/container/v1/container-gen.go
index 6157920..d87be56 100644
--- a/container/v1/container-gen.go
+++ b/container/v1/container-gen.go
@@ -1978,6 +1978,7 @@
 	//  "cluster-name"
 	//  "cluster-uid"
 	//  "configure-sh"
+	//  "containerd-configure-sh"
 	//  "enable-os-login"
 	//  "gci-update-strategy"
 	//  "gci-ensure-gke-docker"
@@ -3750,7 +3751,7 @@
 	//   ],
 	//   "parameters": {
 	//     "name": {
-	//       "description": "The name (project and location) of the server config to get\nSpecified in the format 'projects/*/locations/*'.",
+	//       "description": "The name (project and location) of the server config to get,\nspecified in the format 'projects/*/locations/*'.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
 	//       "required": true,
@@ -8532,8 +8533,8 @@
 }
 
 // Name sets the optional parameter "name": The name (project and
-// location) of the server config to get
-// Specified in the format 'projects/*/locations/*'.
+// location) of the server config to get,
+// specified in the format 'projects/*/locations/*'.
 func (c *ProjectsZonesGetServerconfigCall) Name(name string) *ProjectsZonesGetServerconfigCall {
 	c.urlParams_.Set("name", name)
 	return c
@@ -8648,7 +8649,7 @@
 	//   ],
 	//   "parameters": {
 	//     "name": {
-	//       "description": "The name (project and location) of the server config to get\nSpecified in the format 'projects/*/locations/*'.",
+	//       "description": "The name (project and location) of the server config to get,\nspecified in the format 'projects/*/locations/*'.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/dfareporting/v3.3/dfareporting-gen.go b/dfareporting/v3.3/dfareporting-gen.go
index 1bd2bcf..c7aa33f 100644
--- a/dfareporting/v3.3/dfareporting-gen.go
+++ b/dfareporting/v3.3/dfareporting-gen.go
@@ -24813,7 +24813,7 @@
 		return nil, err
 	}
 	req.Header = reqHeaders
-	gensupport.SetGetBody(req, getBody)
+	req.GetBody = getBody
 	googleapi.Expand(req.URL, map[string]string{
 		"profileId":    strconv.FormatInt(c.profileId, 10),
 		"advertiserId": strconv.FormatInt(c.advertiserId, 10),
diff --git a/dialogflow/v2/dialogflow-api.json b/dialogflow/v2/dialogflow-api.json
index bab922e..528dada 100644
--- a/dialogflow/v2/dialogflow-api.json
+++ b/dialogflow/v2/dialogflow-api.json
@@ -1303,7 +1303,7 @@
       }
     }
   },
-  "revision": "20190215",
+  "revision": "20190219",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowV2Agent": {
@@ -1315,7 +1315,7 @@
           "type": "string"
         },
         "classificationThreshold": {
-          "description": "Optional. To filter out false positive results and still get variety in\nmatched natural language inputs for your agent, you can tune the machine\nlearning classification threshold. If the returned score value is less than\nthe threshold value, then a fallback intent is be triggered or, if there\nare no fallback intents defined, no intent will be triggered. The score\nvalues range from 0.0 (completely uncertain) to 1.0 (completely certain).\nIf set to 0.0, the default of 0.3 is used.",
+          "description": "Optional. To filter out false positive results and still get variety in\nmatched natural language inputs for your agent, you can tune the machine\nlearning classification threshold. If the returned score value is less than\nthe threshold value, then a fallback intent will be triggered or, if there\nare no fallback intents defined, no intent will be triggered. The score\nvalues range from 0.0 (completely uncertain) to 1.0 (completely certain).\nIf set to 0.0, the default of 0.3 is used.",
           "format": "float",
           "type": "number"
         },
@@ -2408,7 +2408,7 @@
           "type": "string"
         },
         "parts": {
-          "description": "Required. The collection of training phrase parts (can be annotated).\nFields: `entity_type`, `alias` and `user_defined` should be populated\nonly for the annotated parts of the training phrase.",
+          "description": "Required. The ordered list of training phrase parts.\nThe parts are concatenated in order to form the training phrase.\n\nNote: The API does not automatically annotate training phrases like the\nDialogflow Console does.\n\nNote: Do not forget to include whitespace at part boundaries,\nso the training phrase is well formatted when the parts are concatenated.\n\nIf the training phrase does not need to be annotated with parameters,\nyou just need a single part with only the Part.text field set.\n\nIf you want to annotate the training phrase, you must create multiple\nparts, where the fields of each part are populated in one of two ways:\n\n-   `Part.text` is set to a part of the phrase that has no parameters.\n-   `Part.text` is set to a part of the phrase that you want to annotate,\n    and the `entity_type`, `alias`, and `user_defined` fields are all\n    set.",
           "items": {
             "$ref": "GoogleCloudDialogflowV2IntentTrainingPhrasePart"
           },
@@ -2441,19 +2441,19 @@
       "id": "GoogleCloudDialogflowV2IntentTrainingPhrasePart",
       "properties": {
         "alias": {
-          "description": "Optional. The parameter name for the value extracted from the\nannotated part of the example.",
+          "description": "Optional. The parameter name for the value extracted from the\nannotated part of the example.\nThis field is required for annotated parts of the training phrase.",
           "type": "string"
         },
         "entityType": {
-          "description": "Optional. The entity type name prefixed with `@`. This field is\nrequired for the annotated part of the text and applies only to\nexamples.",
+          "description": "Optional. The entity type name prefixed with `@`.\nThis field is required for annotated parts of the training phrase.",
           "type": "string"
         },
         "text": {
-          "description": "Required. The text corresponding to the example,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
+          "description": "Required. The text for this part.",
           "type": "string"
         },
         "userDefined": {
-          "description": "Optional. Indicates whether the text was manually annotated by the\ndeveloper.",
+          "description": "Optional. Indicates whether the text was manually annotated.\nThis field is set to true when the Dialogflow Console is used to\nmanually annotate the part. When creating an annotated part with the\nAPI, you must set this to true.",
           "type": "boolean"
         }
       },
@@ -3662,7 +3662,7 @@
           "type": "string"
         },
         "parts": {
-          "description": "Required. The collection of training phrase parts (can be annotated).\nFields: `entity_type`, `alias` and `user_defined` should be populated\nonly for the annotated parts of the training phrase.",
+          "description": "Required. The ordered list of training phrase parts.\nThe parts are concatenated in order to form the training phrase.\n\nNote: The API does not automatically annotate training phrases like the\nDialogflow Console does.\n\nNote: Do not forget to include whitespace at part boundaries,\nso the training phrase is well formatted when the parts are concatenated.\n\nIf the training phrase does not need to be annotated with parameters,\nyou just need a single part with only the Part.text field set.\n\nIf you want to annotate the training phrase, you must create multiple\nparts, where the fields of each part are populated in one of two ways:\n\n-   `Part.text` is set to a part of the phrase that has no parameters.\n-   `Part.text` is set to a part of the phrase that you want to annotate,\n    and the `entity_type`, `alias`, and `user_defined` fields are all\n    set.",
           "items": {
             "$ref": "GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart"
           },
@@ -3695,19 +3695,19 @@
       "id": "GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart",
       "properties": {
         "alias": {
-          "description": "Optional. The parameter name for the value extracted from the\nannotated part of the example.",
+          "description": "Optional. The parameter name for the value extracted from the\nannotated part of the example.\nThis field is required for annotated parts of the training phrase.",
           "type": "string"
         },
         "entityType": {
-          "description": "Optional. The entity type name prefixed with `@`. This field is\nrequired for the annotated part of the text and applies only to\nexamples.",
+          "description": "Optional. The entity type name prefixed with `@`.\nThis field is required for annotated parts of the training phrase.",
           "type": "string"
         },
         "text": {
-          "description": "Required. The text corresponding to the example,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
+          "description": "Required. The text for this part.",
           "type": "string"
         },
         "userDefined": {
-          "description": "Optional. Indicates whether the text was manually annotated by the\ndeveloper.",
+          "description": "Optional. Indicates whether the text was manually annotated.\nThis field is set to true when the Dialogflow Console is used to\nmanually annotate the part. When creating an annotated part with the\nAPI, you must set this to true.",
           "type": "boolean"
         }
       },
diff --git a/dialogflow/v2/dialogflow-gen.go b/dialogflow/v2/dialogflow-gen.go
index f8094be..8dfce99 100644
--- a/dialogflow/v2/dialogflow-gen.go
+++ b/dialogflow/v2/dialogflow-gen.go
@@ -205,7 +205,7 @@
 	// machine
 	// learning classification threshold. If the returned score value is
 	// less than
-	// the threshold value, then a fallback intent is be triggered or, if
+	// the threshold value, then a fallback intent will be triggered or, if
 	// there
 	// are no fallback intents defined, no intent will be triggered. The
 	// score
@@ -2403,11 +2403,34 @@
 	// Name: Output only. The unique identifier of this training phrase.
 	Name string `json:"name,omitempty"`
 
-	// Parts: Required. The collection of training phrase parts (can be
-	// annotated).
-	// Fields: `entity_type`, `alias` and `user_defined` should be
-	// populated
-	// only for the annotated parts of the training phrase.
+	// Parts: Required. The ordered list of training phrase parts.
+	// The parts are concatenated in order to form the training
+	// phrase.
+	//
+	// Note: The API does not automatically annotate training phrases like
+	// the
+	// Dialogflow Console does.
+	//
+	// Note: Do not forget to include whitespace at part boundaries,
+	// so the training phrase is well formatted when the parts are
+	// concatenated.
+	//
+	// If the training phrase does not need to be annotated with
+	// parameters,
+	// you just need a single part with only the Part.text field set.
+	//
+	// If you want to annotate the training phrase, you must create
+	// multiple
+	// parts, where the fields of each part are populated in one of two
+	// ways:
+	//
+	// -   `Part.text` is set to a part of the phrase that has no
+	// parameters.
+	// -   `Part.text` is set to a part of the phrase that you want to
+	// annotate,
+	//     and the `entity_type`, `alias`, and `user_defined` fields are
+	// all
+	//     set.
 	Parts []*GoogleCloudDialogflowV2IntentTrainingPhrasePart `json:"parts,omitempty"`
 
 	// TimesAddedCount: Optional. Indicates how many times this example was
@@ -2466,23 +2489,23 @@
 	// Alias: Optional. The parameter name for the value extracted from
 	// the
 	// annotated part of the example.
+	// This field is required for annotated parts of the training phrase.
 	Alias string `json:"alias,omitempty"`
 
-	// EntityType: Optional. The entity type name prefixed with `@`. This
-	// field is
-	// required for the annotated part of the text and applies only
-	// to
-	// examples.
+	// EntityType: Optional. The entity type name prefixed with `@`.
+	// This field is required for annotated parts of the training phrase.
 	EntityType string `json:"entityType,omitempty"`
 
-	// Text: Required. The text corresponding to the example,
-	// if there are no annotations. For
-	// annotated examples, it is the text for one of the example's parts.
+	// Text: Required. The text for this part.
 	Text string `json:"text,omitempty"`
 
 	// UserDefined: Optional. Indicates whether the text was manually
-	// annotated by the
-	// developer.
+	// annotated.
+	// This field is set to true when the Dialogflow Console is used
+	// to
+	// manually annotate the part. When creating an annotated part with
+	// the
+	// API, you must set this to true.
 	UserDefined bool `json:"userDefined,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Alias") to
@@ -4934,11 +4957,34 @@
 	// Name: Output only. The unique identifier of this training phrase.
 	Name string `json:"name,omitempty"`
 
-	// Parts: Required. The collection of training phrase parts (can be
-	// annotated).
-	// Fields: `entity_type`, `alias` and `user_defined` should be
-	// populated
-	// only for the annotated parts of the training phrase.
+	// Parts: Required. The ordered list of training phrase parts.
+	// The parts are concatenated in order to form the training
+	// phrase.
+	//
+	// Note: The API does not automatically annotate training phrases like
+	// the
+	// Dialogflow Console does.
+	//
+	// Note: Do not forget to include whitespace at part boundaries,
+	// so the training phrase is well formatted when the parts are
+	// concatenated.
+	//
+	// If the training phrase does not need to be annotated with
+	// parameters,
+	// you just need a single part with only the Part.text field set.
+	//
+	// If you want to annotate the training phrase, you must create
+	// multiple
+	// parts, where the fields of each part are populated in one of two
+	// ways:
+	//
+	// -   `Part.text` is set to a part of the phrase that has no
+	// parameters.
+	// -   `Part.text` is set to a part of the phrase that you want to
+	// annotate,
+	//     and the `entity_type`, `alias`, and `user_defined` fields are
+	// all
+	//     set.
 	Parts []*GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart `json:"parts,omitempty"`
 
 	// TimesAddedCount: Optional. Indicates how many times this example was
@@ -4997,23 +5043,23 @@
 	// Alias: Optional. The parameter name for the value extracted from
 	// the
 	// annotated part of the example.
+	// This field is required for annotated parts of the training phrase.
 	Alias string `json:"alias,omitempty"`
 
-	// EntityType: Optional. The entity type name prefixed with `@`. This
-	// field is
-	// required for the annotated part of the text and applies only
-	// to
-	// examples.
+	// EntityType: Optional. The entity type name prefixed with `@`.
+	// This field is required for annotated parts of the training phrase.
 	EntityType string `json:"entityType,omitempty"`
 
-	// Text: Required. The text corresponding to the example,
-	// if there are no annotations. For
-	// annotated examples, it is the text for one of the example's parts.
+	// Text: Required. The text for this part.
 	Text string `json:"text,omitempty"`
 
 	// UserDefined: Optional. Indicates whether the text was manually
-	// annotated by the
-	// developer.
+	// annotated.
+	// This field is set to true when the Dialogflow Console is used
+	// to
+	// manually annotate the part. When creating an annotated part with
+	// the
+	// API, you must set this to true.
 	UserDefined bool `json:"userDefined,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Alias") to
diff --git a/dialogflow/v2beta1/dialogflow-api.json b/dialogflow/v2beta1/dialogflow-api.json
index d4a82aa..87d4f79 100644
--- a/dialogflow/v2beta1/dialogflow-api.json
+++ b/dialogflow/v2beta1/dialogflow-api.json
@@ -2386,7 +2386,7 @@
       }
     }
   },
-  "revision": "20190215",
+  "revision": "20190219",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowV2BatchUpdateEntityTypesResponse": {
@@ -3142,7 +3142,7 @@
           "type": "string"
         },
         "parts": {
-          "description": "Required. The collection of training phrase parts (can be annotated).\nFields: `entity_type`, `alias` and `user_defined` should be populated\nonly for the annotated parts of the training phrase.",
+          "description": "Required. The ordered list of training phrase parts.\nThe parts are concatenated in order to form the training phrase.\n\nNote: The API does not automatically annotate training phrases like the\nDialogflow Console does.\n\nNote: Do not forget to include whitespace at part boundaries,\nso the training phrase is well formatted when the parts are concatenated.\n\nIf the training phrase does not need to be annotated with parameters,\nyou just need a single part with only the Part.text field set.\n\nIf you want to annotate the training phrase, you must create multiple\nparts, where the fields of each part are populated in one of two ways:\n\n-   `Part.text` is set to a part of the phrase that has no parameters.\n-   `Part.text` is set to a part of the phrase that you want to annotate,\n    and the `entity_type`, `alias`, and `user_defined` fields are all\n    set.",
           "items": {
             "$ref": "GoogleCloudDialogflowV2IntentTrainingPhrasePart"
           },
@@ -3175,19 +3175,19 @@
       "id": "GoogleCloudDialogflowV2IntentTrainingPhrasePart",
       "properties": {
         "alias": {
-          "description": "Optional. The parameter name for the value extracted from the\nannotated part of the example.",
+          "description": "Optional. The parameter name for the value extracted from the\nannotated part of the example.\nThis field is required for annotated parts of the training phrase.",
           "type": "string"
         },
         "entityType": {
-          "description": "Optional. The entity type name prefixed with `@`. This field is\nrequired for the annotated part of the text and applies only to\nexamples.",
+          "description": "Optional. The entity type name prefixed with `@`.\nThis field is required for annotated parts of the training phrase.",
           "type": "string"
         },
         "text": {
-          "description": "Required. The text corresponding to the example,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
+          "description": "Required. The text for this part.",
           "type": "string"
         },
         "userDefined": {
-          "description": "Optional. Indicates whether the text was manually annotated by the\ndeveloper.",
+          "description": "Optional. Indicates whether the text was manually annotated.\nThis field is set to true when the Dialogflow Console is used to\nmanually annotate the part. When creating an annotated part with the\nAPI, you must set this to true.",
           "type": "boolean"
         }
       },
@@ -3372,7 +3372,7 @@
           "type": "string"
         },
         "classificationThreshold": {
-          "description": "Optional. To filter out false positive results and still get variety in\nmatched natural language inputs for your agent, you can tune the machine\nlearning classification threshold. If the returned score value is less than\nthe threshold value, then a fallback intent is be triggered or, if there\nare no fallback intents defined, no intent will be triggered. The score\nvalues range from 0.0 (completely uncertain) to 1.0 (completely certain).\nIf set to 0.0, the default of 0.3 is used.",
+          "description": "Optional. To filter out false positive results and still get variety in\nmatched natural language inputs for your agent, you can tune the machine\nlearning classification threshold. If the returned score value is less than\nthe threshold value, then a fallback intent will be triggered or, if there\nare no fallback intents defined, no intent will be triggered. The score\nvalues range from 0.0 (completely uncertain) to 1.0 (completely certain).\nIf set to 0.0, the default of 0.3 is used.",
           "format": "float",
           "type": "number"
         },
@@ -4599,7 +4599,7 @@
           "type": "string"
         },
         "parts": {
-          "description": "Required. The collection of training phrase parts (can be annotated).\nFields: `entity_type`, `alias` and `user_defined` should be populated\nonly for the annotated parts of the training phrase.",
+          "description": "Required. The ordered list of training phrase parts.\nThe parts are concatenated in order to form the training phrase.\n\nNote: The API does not automatically annotate training phrases like the\nDialogflow Console does.\n\nNote: Do not forget to include whitespace at part boundaries,\nso the training phrase is well formatted when the parts are concatenated.\n\nIf the training phrase does not need to be annotated with parameters,\nyou just need a single part with only the Part.text field set.\n\nIf you want to annotate the training phrase, you must create multiple\nparts, where the fields of each part are populated in one of two ways:\n\n-   `Part.text` is set to a part of the phrase that has no parameters.\n-   `Part.text` is set to a part of the phrase that you want to annotate,\n    and the `entity_type`, `alias`, and `user_defined` fields are all\n    set.",
           "items": {
             "$ref": "GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart"
           },
@@ -4632,19 +4632,19 @@
       "id": "GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart",
       "properties": {
         "alias": {
-          "description": "Optional. The parameter name for the value extracted from the\nannotated part of the example.",
+          "description": "Optional. The parameter name for the value extracted from the\nannotated part of the example.\nThis field is required for annotated parts of the training phrase.",
           "type": "string"
         },
         "entityType": {
-          "description": "Optional. The entity type name prefixed with `@`. This field is\nrequired for the annotated part of the text and applies only to\nexamples.",
+          "description": "Optional. The entity type name prefixed with `@`.\nThis field is required for annotated parts of the training phrase.",
           "type": "string"
         },
         "text": {
-          "description": "Required. The text corresponding to the example,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
+          "description": "Required. The text for this part.",
           "type": "string"
         },
         "userDefined": {
-          "description": "Optional. Indicates whether the text was manually annotated by the\ndeveloper.",
+          "description": "Optional. Indicates whether the text was manually annotated.\nThis field is set to true when the Dialogflow Console is used to\nmanually annotate the part. When creating an annotated part with the\nAPI, you must set this to true.",
           "type": "boolean"
         }
       },
diff --git a/dialogflow/v2beta1/dialogflow-gen.go b/dialogflow/v2beta1/dialogflow-gen.go
index 6fc4d9a..47e7691 100644
--- a/dialogflow/v2beta1/dialogflow-gen.go
+++ b/dialogflow/v2beta1/dialogflow-gen.go
@@ -1738,11 +1738,34 @@
 	// Name: Output only. The unique identifier of this training phrase.
 	Name string `json:"name,omitempty"`
 
-	// Parts: Required. The collection of training phrase parts (can be
-	// annotated).
-	// Fields: `entity_type`, `alias` and `user_defined` should be
-	// populated
-	// only for the annotated parts of the training phrase.
+	// Parts: Required. The ordered list of training phrase parts.
+	// The parts are concatenated in order to form the training
+	// phrase.
+	//
+	// Note: The API does not automatically annotate training phrases like
+	// the
+	// Dialogflow Console does.
+	//
+	// Note: Do not forget to include whitespace at part boundaries,
+	// so the training phrase is well formatted when the parts are
+	// concatenated.
+	//
+	// If the training phrase does not need to be annotated with
+	// parameters,
+	// you just need a single part with only the Part.text field set.
+	//
+	// If you want to annotate the training phrase, you must create
+	// multiple
+	// parts, where the fields of each part are populated in one of two
+	// ways:
+	//
+	// -   `Part.text` is set to a part of the phrase that has no
+	// parameters.
+	// -   `Part.text` is set to a part of the phrase that you want to
+	// annotate,
+	//     and the `entity_type`, `alias`, and `user_defined` fields are
+	// all
+	//     set.
 	Parts []*GoogleCloudDialogflowV2IntentTrainingPhrasePart `json:"parts,omitempty"`
 
 	// TimesAddedCount: Optional. Indicates how many times this example was
@@ -1801,23 +1824,23 @@
 	// Alias: Optional. The parameter name for the value extracted from
 	// the
 	// annotated part of the example.
+	// This field is required for annotated parts of the training phrase.
 	Alias string `json:"alias,omitempty"`
 
-	// EntityType: Optional. The entity type name prefixed with `@`. This
-	// field is
-	// required for the annotated part of the text and applies only
-	// to
-	// examples.
+	// EntityType: Optional. The entity type name prefixed with `@`.
+	// This field is required for annotated parts of the training phrase.
 	EntityType string `json:"entityType,omitempty"`
 
-	// Text: Required. The text corresponding to the example,
-	// if there are no annotations. For
-	// annotated examples, it is the text for one of the example's parts.
+	// Text: Required. The text for this part.
 	Text string `json:"text,omitempty"`
 
 	// UserDefined: Optional. Indicates whether the text was manually
-	// annotated by the
-	// developer.
+	// annotated.
+	// This field is set to true when the Dialogflow Console is used
+	// to
+	// manually annotate the part. When creating an annotated part with
+	// the
+	// API, you must set this to true.
 	UserDefined bool `json:"userDefined,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Alias") to
@@ -2193,7 +2216,7 @@
 	// machine
 	// learning classification threshold. If the returned score value is
 	// less than
-	// the threshold value, then a fallback intent is be triggered or, if
+	// the threshold value, then a fallback intent will be triggered or, if
 	// there
 	// are no fallback intents defined, no intent will be triggered. The
 	// score
@@ -4726,11 +4749,34 @@
 	// Name: Output only. The unique identifier of this training phrase.
 	Name string `json:"name,omitempty"`
 
-	// Parts: Required. The collection of training phrase parts (can be
-	// annotated).
-	// Fields: `entity_type`, `alias` and `user_defined` should be
-	// populated
-	// only for the annotated parts of the training phrase.
+	// Parts: Required. The ordered list of training phrase parts.
+	// The parts are concatenated in order to form the training
+	// phrase.
+	//
+	// Note: The API does not automatically annotate training phrases like
+	// the
+	// Dialogflow Console does.
+	//
+	// Note: Do not forget to include whitespace at part boundaries,
+	// so the training phrase is well formatted when the parts are
+	// concatenated.
+	//
+	// If the training phrase does not need to be annotated with
+	// parameters,
+	// you just need a single part with only the Part.text field set.
+	//
+	// If you want to annotate the training phrase, you must create
+	// multiple
+	// parts, where the fields of each part are populated in one of two
+	// ways:
+	//
+	// -   `Part.text` is set to a part of the phrase that has no
+	// parameters.
+	// -   `Part.text` is set to a part of the phrase that you want to
+	// annotate,
+	//     and the `entity_type`, `alias`, and `user_defined` fields are
+	// all
+	//     set.
 	Parts []*GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart `json:"parts,omitempty"`
 
 	// TimesAddedCount: Optional. Indicates how many times this example was
@@ -4789,23 +4835,23 @@
 	// Alias: Optional. The parameter name for the value extracted from
 	// the
 	// annotated part of the example.
+	// This field is required for annotated parts of the training phrase.
 	Alias string `json:"alias,omitempty"`
 
-	// EntityType: Optional. The entity type name prefixed with `@`. This
-	// field is
-	// required for the annotated part of the text and applies only
-	// to
-	// examples.
+	// EntityType: Optional. The entity type name prefixed with `@`.
+	// This field is required for annotated parts of the training phrase.
 	EntityType string `json:"entityType,omitempty"`
 
-	// Text: Required. The text corresponding to the example,
-	// if there are no annotations. For
-	// annotated examples, it is the text for one of the example's parts.
+	// Text: Required. The text for this part.
 	Text string `json:"text,omitempty"`
 
 	// UserDefined: Optional. Indicates whether the text was manually
-	// annotated by the
-	// developer.
+	// annotated.
+	// This field is set to true when the Dialogflow Console is used
+	// to
+	// manually annotate the part. When creating an annotated part with
+	// the
+	// API, you must set this to true.
 	UserDefined bool `json:"userDefined,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Alias") to
diff --git a/dlp/v2/dlp-api.json b/dlp/v2/dlp-api.json
index df38a22..edfa8b9 100644
--- a/dlp/v2/dlp-api.json
+++ b/dlp/v2/dlp-api.json
@@ -1519,7 +1519,7 @@
       }
     }
   },
-  "revision": "20190212",
+  "revision": "20190219",
   "rootUrl": "https://dlp.googleapis.com/",
   "schemas": {
     "GooglePrivacyDlpV2Action": {
@@ -1528,7 +1528,7 @@
       "properties": {
         "jobNotificationEmails": {
           "$ref": "GooglePrivacyDlpV2JobNotificationEmails",
-          "description": "Enable email notification to project owners and editors on job‘s\ncompletion/failure."
+          "description": "Enable email notification to project owners and editors on job's\ncompletion/failure."
         },
         "pubSub": {
           "$ref": "GooglePrivacyDlpV2PublishToPubSub",
@@ -2046,7 +2046,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2Condition": {
-      "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.",
+      "description": "The field type of `value` and `field` do not need to match to be\nconsidered equal, but not all comparisons are possible.\nEQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,\nbut all other comparisons are invalid with incompatible types.\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": "GooglePrivacyDlpV2Condition",
       "properties": {
         "field": {
@@ -2067,8 +2067,8 @@
           ],
           "enumDescriptions": [
             "",
-            "Equal.",
-            "Not equal to.",
+            "Equal. Attempts to match even with incompatible types.",
+            "Not equal to. Attempts to match even with incompatible types.",
             "Greater than.",
             "Less than.",
             "Greater than or equals.",
@@ -2964,12 +2964,12 @@
           "type": "array"
         },
         "maxFindingsPerItem": {
-          "description": "Max number of findings that will be returned for each item scanned.\nWhen set within `InspectDataSourceRequest`,\nthe maximum returned is 1000 regardless if this is set higher.\nWhen set within `InspectContentRequest`, this field is ignored.",
+          "description": "Max number of findings that will be returned for each item scanned.\nWhen set within `InspectDataSourceRequest`,\nthe maximum returned is 2000 regardless if this is set higher.\nWhen set within `InspectContentRequest`, this field is ignored.",
           "format": "int32",
           "type": "integer"
         },
         "maxFindingsPerRequest": {
-          "description": "Max number of findings that will be returned per request/job.\nWhen set within `InspectContentRequest`, the maximum returned is 1000\nregardless if this is set higher.",
+          "description": "Max number of findings that will be returned per request/job.\nWhen set within `InspectContentRequest`, the maximum returned is 2000\nregardless if this is set higher.",
           "format": "int32",
           "type": "integer"
         }
diff --git a/dlp/v2/dlp-gen.go b/dlp/v2/dlp-gen.go
index 70a7ba2..fc86d23 100644
--- a/dlp/v2/dlp-gen.go
+++ b/dlp/v2/dlp-gen.go
@@ -240,7 +240,7 @@
 // See https://cloud.google.com/dlp/docs/concepts-actions to learn more.
 type GooglePrivacyDlpV2Action struct {
 	// JobNotificationEmails: Enable email notification to project owners
-	// and editors on job‘s
+	// and editors on job's
 	// completion/failure.
 	JobNotificationEmails *GooglePrivacyDlpV2JobNotificationEmails `json:"jobNotificationEmails,omitempty"`
 
@@ -1251,7 +1251,9 @@
 // GooglePrivacyDlpV2Condition: The field type of `value` and `field` do
 // not need to match to be
 // considered equal, but not all comparisons are possible.
-//
+// EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible
+// types,
+// but all other comparisons are invalid with incompatible types.
 // A `value` of type:
 //
 // - `string` can be compared against all other types
@@ -1282,8 +1284,9 @@
 	//
 	// Possible values:
 	//   "RELATIONAL_OPERATOR_UNSPECIFIED"
-	//   "EQUAL_TO" - Equal.
-	//   "NOT_EQUAL_TO" - Not equal to.
+	//   "EQUAL_TO" - Equal. Attempts to match even with incompatible types.
+	//   "NOT_EQUAL_TO" - Not equal to. Attempts to match even with
+	// incompatible types.
 	//   "GREATER_THAN" - Greater than.
 	//   "LESS_THAN" - Less than.
 	//   "GREATER_THAN_OR_EQUALS" - Greater than or equals.
@@ -3147,14 +3150,14 @@
 	// MaxFindingsPerItem: Max number of findings that will be returned for
 	// each item scanned.
 	// When set within `InspectDataSourceRequest`,
-	// the maximum returned is 1000 regardless if this is set higher.
+	// the maximum returned is 2000 regardless if this is set higher.
 	// When set within `InspectContentRequest`, this field is ignored.
 	MaxFindingsPerItem int64 `json:"maxFindingsPerItem,omitempty"`
 
 	// MaxFindingsPerRequest: Max number of findings that will be returned
 	// per request/job.
 	// When set within `InspectContentRequest`, the maximum returned is
-	// 1000
+	// 2000
 	// regardless if this is set higher.
 	MaxFindingsPerRequest int64 `json:"maxFindingsPerRequest,omitempty"`
 
diff --git a/dns/v1/dns-api.json b/dns/v1/dns-api.json
index 4b86be6..d0602ad 100644
--- a/dns/v1/dns-api.json
+++ b/dns/v1/dns-api.json
@@ -23,7 +23,7 @@
   "description": "Configures and serves authoritative DNS records.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/cloud-dns",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/1ElZY34eO24rnTnPiiM5_YKoRVc\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/ATSzBKlKlNuMbykFz6TPz-5v-_s\"",
   "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"
@@ -83,7 +83,7 @@
     "changes": {
       "methods": {
         "create": {
-          "description": "Atomically update the ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "POST",
           "id": "dns.changes.create",
           "parameterOrder": [
@@ -92,18 +92,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -122,7 +119,7 @@
           ]
         },
         "get": {
-          "description": "Fetch the representation of an existing Change.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.changes.get",
           "parameterOrder": [
@@ -132,24 +129,20 @@
           ],
           "parameters": {
             "changeId": {
-              "description": "The identifier of the requested change, from a previous ResourceRecordSetsChangeResponse.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -167,7 +160,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate Changes to a ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.changes.list",
           "parameterOrder": [
@@ -176,31 +169,26 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "sortBy": {
               "default": "changeSequence",
-              "description": "Sorting criterion. The only supported value is change sequence.",
               "enum": [
                 "changeSequence"
               ],
@@ -211,7 +199,6 @@
               "type": "string"
             },
             "sortOrder": {
-              "description": "Sorting order direction: 'ascending' or 'descending'.",
               "location": "query",
               "type": "string"
             }
@@ -232,7 +219,7 @@
     "dnsKeys": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing DnsKey.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.dnsKeys.get",
           "parameterOrder": [
@@ -242,29 +229,24 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "digestType": {
-              "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
               "location": "query",
               "type": "string"
             },
             "dnsKeyId": {
-              "description": "The identifier of the requested DnsKey.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -282,7 +264,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate DnsKeys to a ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.dnsKeys.list",
           "parameterOrder": [
@@ -291,29 +273,24 @@
           ],
           "parameters": {
             "digestType": {
-              "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -335,7 +312,7 @@
     "managedZoneOperations": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing Operation.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZoneOperations.get",
           "parameterOrder": [
@@ -345,24 +322,20 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "operation": {
-              "description": "Identifies the operation addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -380,7 +353,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate Operations for the given ManagedZone.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZoneOperations.list",
           "parameterOrder": [
@@ -389,31 +362,26 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "sortBy": {
               "default": "startTime",
-              "description": "Sorting criterion. The only supported values are START_TIME and ID.",
               "enum": [
                 "id",
                 "startTime"
@@ -442,7 +410,7 @@
     "managedZones": {
       "methods": {
         "create": {
-          "description": "Create a new ManagedZone.",
+          "description": "",
           "httpMethod": "POST",
           "id": "dns.managedZones.create",
           "parameterOrder": [
@@ -450,12 +418,10 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -474,7 +440,7 @@
           ]
         },
         "delete": {
-          "description": "Delete a previously created ManagedZone.",
+          "description": "",
           "httpMethod": "DELETE",
           "id": "dns.managedZones.delete",
           "parameterOrder": [
@@ -483,18 +449,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -507,7 +470,7 @@
           ]
         },
         "get": {
-          "description": "Fetch the representation of an existing ManagedZone.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZones.get",
           "parameterOrder": [
@@ -516,18 +479,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -545,7 +505,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate ManagedZones that have been created but not yet deleted.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZones.list",
           "parameterOrder": [
@@ -553,23 +513,19 @@
           ],
           "parameters": {
             "dnsName": {
-              "description": "Restricts the list to return only zones with this domain name.",
               "location": "query",
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -587,7 +543,7 @@
           ]
         },
         "patch": {
-          "description": "Apply a partial update to an existing ManagedZone.",
+          "description": "",
           "httpMethod": "PATCH",
           "id": "dns.managedZones.patch",
           "parameterOrder": [
@@ -596,18 +552,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -626,7 +579,7 @@
           ]
         },
         "update": {
-          "description": "Update an existing ManagedZone.",
+          "description": "",
           "httpMethod": "PUT",
           "id": "dns.managedZones.update",
           "parameterOrder": [
@@ -635,18 +588,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -669,7 +619,7 @@
     "projects": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing Project.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.projects.get",
           "parameterOrder": [
@@ -677,12 +627,10 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -704,7 +652,7 @@
     "resourceRecordSets": {
       "methods": {
         "list": {
-          "description": "Enumerate ResourceRecordSets that have been created but not yet deleted.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.resourceRecordSets.list",
           "parameterOrder": [
@@ -713,35 +661,29 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "name": {
-              "description": "Restricts the list to return only records with this fully qualified domain name.",
               "location": "query",
               "type": "string"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "type": {
-              "description": "Restricts the list to return only records of this type. If present, the \"name\" parameter must also be present.",
               "location": "query",
               "type": "string"
             }
@@ -760,33 +702,28 @@
       }
     }
   },
-  "revision": "20181212",
+  "revision": "20190213",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Change": {
-      "description": "A Change represents a set of ResourceRecordSet additions and deletions applied atomically to a ManagedZone. ResourceRecordSets within a ManagedZone are modified by creating a new Change element in the Changes collection. In turn the Changes collection also records the past modifications to the ResourceRecordSets in a ManagedZone. The current state of the ManagedZone is the sum effect of applying all Change elements in the Changes collection in sequence.",
       "id": "Change",
       "properties": {
         "additions": {
-          "description": "Which ResourceRecordSets to add?",
           "items": {
             "$ref": "ResourceRecordSet"
           },
           "type": "array"
         },
         "deletions": {
-          "description": "Which ResourceRecordSets to remove? Must match existing data exactly.",
           "items": {
             "$ref": "ResourceRecordSet"
           },
           "type": "array"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only).",
           "type": "string"
         },
         "isServing": {
-          "description": "If the DNS queries for the zone will be served.",
           "type": "boolean"
         },
         "kind": {
@@ -795,11 +732,9 @@
           "type": "string"
         },
         "startTime": {
-          "description": "The time that this operation was started by the server (output only). This is in RFC3339 text format.",
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "done",
             "pending"
@@ -814,11 +749,9 @@
       "type": "object"
     },
     "ChangesListResponse": {
-      "description": "The response to a request to enumerate Changes to a ResourceRecordSets collection.",
       "id": "ChangesListResponse",
       "properties": {
         "changes": {
-          "description": "The requested changes.",
           "items": {
             "$ref": "Change"
           },
@@ -833,18 +766,15 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a \"snapshot\" of collections larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "DnsKey": {
-      "description": "A DNSSEC key pair.",
       "id": "DnsKey",
       "properties": {
         "algorithm": {
-          "description": "String mnemonic specifying the DNSSEC algorithm of this key. Immutable after creation time.",
           "enum": [
             "ecdsap256sha256",
             "ecdsap384sha384",
@@ -862,35 +792,28 @@
           "type": "string"
         },
         "creationTime": {
-          "description": "The time that this resource was created in the control plane. This is in RFC3339 text format. Output only.",
           "type": "string"
         },
         "description": {
-          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the resource's function.",
           "type": "string"
         },
         "digests": {
-          "description": "Cryptographic hashes of the DNSKEY resource record associated with this DnsKey. These digests are needed to construct a DS record that points at this DNS key. Output only.",
           "items": {
             "$ref": "DnsKeyDigest"
           },
           "type": "array"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only).",
           "type": "string"
         },
         "isActive": {
-          "description": "Active keys will be used to sign subsequent changes to the ManagedZone. Inactive keys will still be present as DNSKEY Resource Records for the use of resolvers validating existing signatures.",
           "type": "boolean"
         },
         "keyLength": {
-          "description": "Length of the key in bits. Specified at creation time then immutable.",
           "format": "uint32",
           "type": "integer"
         },
         "keyTag": {
-          "description": "The key tag is a non-cryptographic hash of the a DNSKEY resource record associated with this DnsKey. The key tag can be used to identify a DNSKEY more quickly (but it is not a unique identifier). In particular, the key tag is used in a parent zone's DS record to point at the DNSKEY in this child ManagedZone. The key tag is a number in the range [0, 65535] and the algorithm to calculate it is specified in RFC4034 Appendix B. Output only.",
           "format": "int32",
           "type": "integer"
         },
@@ -900,11 +823,9 @@
           "type": "string"
         },
         "publicKey": {
-          "description": "Base64 encoded public half of this key. Output only.",
           "type": "string"
         },
         "type": {
-          "description": "One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types. Immutable after creation time.",
           "enum": [
             "keySigning",
             "zoneSigning"
@@ -922,11 +843,9 @@
       "id": "DnsKeyDigest",
       "properties": {
         "digest": {
-          "description": "The base-16 encoded bytes of this digest. Suitable for use in a DS resource record.",
           "type": "string"
         },
         "type": {
-          "description": "Specifies the algorithm used to calculate this digest.",
           "enum": [
             "sha1",
             "sha256",
@@ -943,11 +862,9 @@
       "type": "object"
     },
     "DnsKeySpec": {
-      "description": "Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.",
       "id": "DnsKeySpec",
       "properties": {
         "algorithm": {
-          "description": "String mnemonic specifying the DNSSEC algorithm of this key.",
           "enum": [
             "ecdsap256sha256",
             "ecdsap384sha384",
@@ -965,12 +882,10 @@
           "type": "string"
         },
         "keyLength": {
-          "description": "Length of the keys in bits.",
           "format": "uint32",
           "type": "integer"
         },
         "keyType": {
-          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.",
           "enum": [
             "keySigning",
             "zoneSigning"
@@ -990,11 +905,9 @@
       "type": "object"
     },
     "DnsKeysListResponse": {
-      "description": "The response to a request to enumerate DnsKeys in a ManagedZone.",
       "id": "DnsKeysListResponse",
       "properties": {
         "dnsKeys": {
-          "description": "The requested resources.",
           "items": {
             "$ref": "DnsKey"
           },
@@ -1009,34 +922,27 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a \"snapshot\" of collections larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "ManagedZone": {
-      "description": "A zone is a subtree of the DNS namespace under one administrative responsibility. A ManagedZone is a resource that represents a DNS zone hosted by the Cloud DNS service.",
       "id": "ManagedZone",
       "properties": {
         "creationTime": {
-          "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only.",
           "type": "string"
         },
         "description": {
-          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function.",
           "type": "string"
         },
         "dnsName": {
-          "description": "The DNS name of this managed zone, for instance \"example.com.\".",
           "type": "string"
         },
         "dnssecConfig": {
-          "$ref": "ManagedZoneDnsSecConfig",
-          "description": "DNSSEC configuration."
+          "$ref": "ManagedZoneDnsSecConfig"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only)",
           "format": "uint64",
           "type": "string"
         },
@@ -1049,19 +955,15 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "User labels.",
           "type": "object"
         },
         "name": {
-          "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.",
           "type": "string"
         },
         "nameServerSet": {
-          "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users will leave this field unset.",
           "type": "string"
         },
         "nameServers": {
-          "description": "Delegate your managed_zone to these virtual name servers; defined by the server (output only)",
           "items": {
             "type": "string"
           },
@@ -1074,7 +976,6 @@
       "id": "ManagedZoneDnsSecConfig",
       "properties": {
         "defaultKeySpecs": {
-          "description": "Specifies parameters that will be used for generating initial DnsKeys for this ManagedZone. Output only while state is not OFF.",
           "items": {
             "$ref": "DnsKeySpec"
           },
@@ -1086,7 +987,6 @@
           "type": "string"
         },
         "nonExistence": {
-          "description": "Specifies the mechanism used to provide authenticated denial-of-existence responses. Output only while state is not OFF.",
           "enum": [
             "nsec",
             "nsec3"
@@ -1098,7 +998,6 @@
           "type": "string"
         },
         "state": {
-          "description": "Specifies whether DNSSEC is enabled, and what mode it is in.",
           "enum": [
             "off",
             "on",
@@ -1126,11 +1025,9 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         },
         "operations": {
-          "description": "The operation resources.",
           "items": {
             "$ref": "Operation"
           },
@@ -1151,29 +1048,24 @@
           "type": "string"
         },
         "managedZones": {
-          "description": "The managed zone resources.",
           "items": {
             "$ref": "ManagedZone"
           },
           "type": "array"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "Operation": {
-      "description": "An operation represents a successful mutation performed on a Cloud DNS resource. Operations provide: - An audit log of server resource mutations. - A way to recover/retry API calls in the case where the response is never received by the caller. Use the caller specified client_operation_id.",
       "id": "Operation",
       "properties": {
         "dnsKeyContext": {
-          "$ref": "OperationDnsKeyContext",
-          "description": "Only populated if the operation targeted a DnsKey (output only)."
+          "$ref": "OperationDnsKeyContext"
         },
         "id": {
-          "description": "Unique identifier for the resource. This is the client_operation_id if the client specified it when the mutation was initiated, otherwise, it is generated by the server. The name must be 1-63 characters long and match the regular expression [-a-z0-9]? (output only)",
           "type": "string"
         },
         "kind": {
@@ -1182,11 +1074,9 @@
           "type": "string"
         },
         "startTime": {
-          "description": "The time that this operation was started by the server. This is in RFC3339 text format (output only).",
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only). A status of \"DONE\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "done",
             "pending"
@@ -1198,16 +1088,13 @@
           "type": "string"
         },
         "type": {
-          "description": "Type of the operation. Operations include insert, update, and delete (output only).",
           "type": "string"
         },
         "user": {
-          "description": "User who requested the operation, for example: user@example.com. cloud-dns-system for operations automatically done by the system. (output only)",
           "type": "string"
         },
         "zoneContext": {
-          "$ref": "OperationManagedZoneContext",
-          "description": "Only populated if the operation targeted a ManagedZone (output only)."
+          "$ref": "OperationManagedZoneContext"
         }
       },
       "type": "object"
@@ -1216,12 +1103,10 @@
       "id": "OperationDnsKeyContext",
       "properties": {
         "newValue": {
-          "$ref": "DnsKey",
-          "description": "The post-operation DnsKey resource."
+          "$ref": "DnsKey"
         },
         "oldValue": {
-          "$ref": "DnsKey",
-          "description": "The pre-operation DnsKey resource."
+          "$ref": "DnsKey"
         }
       },
       "type": "object"
@@ -1230,22 +1115,18 @@
       "id": "OperationManagedZoneContext",
       "properties": {
         "newValue": {
-          "$ref": "ManagedZone",
-          "description": "The post-operation ManagedZone resource."
+          "$ref": "ManagedZone"
         },
         "oldValue": {
-          "$ref": "ManagedZone",
-          "description": "The pre-operation ManagedZone resource."
+          "$ref": "ManagedZone"
         }
       },
       "type": "object"
     },
     "Project": {
-      "description": "A project resource. The project is a top level container for resources including Cloud DNS ManagedZones. Projects can be created only in the APIs console.",
       "id": "Project",
       "properties": {
         "id": {
-          "description": "User assigned unique identifier for the resource (output only).",
           "type": "string"
         },
         "kind": {
@@ -1254,23 +1135,19 @@
           "type": "string"
         },
         "number": {
-          "description": "Unique numeric identifier for the resource; defined by the server (output only).",
           "format": "uint64",
           "type": "string"
         },
         "quota": {
-          "$ref": "Quota",
-          "description": "Quotas assigned to this project (output only)."
+          "$ref": "Quota"
         }
       },
       "type": "object"
     },
     "Quota": {
-      "description": "Limits associated with a Project.",
       "id": "Quota",
       "properties": {
         "dnsKeysPerManagedZone": {
-          "description": "Maximum allowed number of DnsKeys per ManagedZone.",
           "format": "int32",
           "type": "integer"
         },
@@ -1280,37 +1157,30 @@
           "type": "string"
         },
         "managedZones": {
-          "description": "Maximum allowed number of managed zones in the project.",
           "format": "int32",
           "type": "integer"
         },
         "resourceRecordsPerRrset": {
-          "description": "Maximum allowed number of ResourceRecords per ResourceRecordSet.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetAdditionsPerChange": {
-          "description": "Maximum allowed number of ResourceRecordSets to add per ChangesCreateRequest.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetDeletionsPerChange": {
-          "description": "Maximum allowed number of ResourceRecordSets to delete per ChangesCreateRequest.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetsPerManagedZone": {
-          "description": "Maximum allowed number of ResourceRecordSets per zone in the project.",
           "format": "int32",
           "type": "integer"
         },
         "totalRrdataSizePerChange": {
-          "description": "Maximum allowed size for total rrdata in one ChangesCreateRequest in bytes.",
           "format": "int32",
           "type": "integer"
         },
         "whitelistedKeySpecs": {
-          "description": "DNSSEC algorithm and key length types that can be used for DnsKeys.",
           "items": {
             "$ref": "DnsKeySpec"
           },
@@ -1320,7 +1190,6 @@
       "type": "object"
     },
     "ResourceRecordSet": {
-      "description": "A unit of data that will be returned by the DNS servers.",
       "id": "ResourceRecordSet",
       "properties": {
         "kind": {
@@ -1329,30 +1198,25 @@
           "type": "string"
         },
         "name": {
-          "description": "For example, www.example.com.",
           "type": "string"
         },
         "rrdatas": {
-          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1).",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "signatureRrdatas": {
-          "description": "As defined in RFC 4034 (section 3.2).",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "ttl": {
-          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers.",
           "format": "int32",
           "type": "integer"
         },
         "type": {
-          "description": "The identifier of a supported record type. See the list of Supported DNS record types.",
           "type": "string"
         }
       },
@@ -1370,11 +1234,9 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         },
         "rrsets": {
-          "description": "The resource record set resources.",
           "items": {
             "$ref": "ResourceRecordSet"
           },
@@ -1384,11 +1246,9 @@
       "type": "object"
     },
     "ResponseHeader": {
-      "description": "Elements common to every response.",
       "id": "ResponseHeader",
       "properties": {
         "operationId": {
-          "description": "For mutating operation requests that completed successfully. This is the client_operation_id if the client specified it, otherwise it is generated by the server (output only).",
           "type": "string"
         }
       },
diff --git a/dns/v1/dns-gen.go b/dns/v1/dns-gen.go
index e4d90bf..cf0467d 100644
--- a/dns/v1/dns-gen.go
+++ b/dns/v1/dns-gen.go
@@ -158,40 +158,21 @@
 	s *Service
 }
 
-// Change: A Change represents a set of ResourceRecordSet additions and
-// deletions applied atomically to a ManagedZone. ResourceRecordSets
-// within a ManagedZone are modified by creating a new Change element in
-// the Changes collection. In turn the Changes collection also records
-// the past modifications to the ResourceRecordSets in a ManagedZone.
-// The current state of the ManagedZone is the sum effect of applying
-// all Change elements in the Changes collection in sequence.
 type Change struct {
-	// Additions: Which ResourceRecordSets to add?
 	Additions []*ResourceRecordSet `json:"additions,omitempty"`
 
-	// Deletions: Which ResourceRecordSets to remove? Must match existing
-	// data exactly.
 	Deletions []*ResourceRecordSet `json:"deletions,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only).
 	Id string `json:"id,omitempty"`
 
-	// IsServing: If the DNS queries for the zone will be served.
 	IsServing bool `json:"isServing,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#change".
 	Kind string `json:"kind,omitempty"`
 
-	// StartTime: The time that this operation was started by the server
-	// (output only). This is in RFC3339 text format.
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation (output only). A status of "done"
-	// means that the request to update the authoritative servers has been
-	// sent, but the servers might not be updated yet.
-	//
 	// Possible values:
 	//   "done"
 	//   "pending"
@@ -224,10 +205,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ChangesListResponse: The response to a request to enumerate Changes
-// to a ResourceRecordSets collection.
 type ChangesListResponse struct {
-	// Changes: The requested changes.
 	Changes []*Change `json:"changes,omitempty"`
 
 	Header *ResponseHeader `json:"header,omitempty"`
@@ -235,17 +213,6 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a "snapshot" of collections
-	// larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -275,11 +242,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKey: A DNSSEC key pair.
 type DnsKey struct {
-	// Algorithm: String mnemonic specifying the DNSSEC algorithm of this
-	// key. Immutable after creation time.
-	//
 	// Possible values:
 	//   "ecdsap256sha256"
 	//   "ecdsap384sha384"
@@ -288,56 +251,26 @@
 	//   "rsasha512"
 	Algorithm string `json:"algorithm,omitempty"`
 
-	// CreationTime: The time that this resource was created in the control
-	// plane. This is in RFC3339 text format. Output only.
 	CreationTime string `json:"creationTime,omitempty"`
 
-	// Description: A mutable string of at most 1024 characters associated
-	// with this resource for the user's convenience. Has no effect on the
-	// resource's function.
 	Description string `json:"description,omitempty"`
 
-	// Digests: Cryptographic hashes of the DNSKEY resource record
-	// associated with this DnsKey. These digests are needed to construct a
-	// DS record that points at this DNS key. Output only.
 	Digests []*DnsKeyDigest `json:"digests,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only).
 	Id string `json:"id,omitempty"`
 
-	// IsActive: Active keys will be used to sign subsequent changes to the
-	// ManagedZone. Inactive keys will still be present as DNSKEY Resource
-	// Records for the use of resolvers validating existing signatures.
 	IsActive bool `json:"isActive,omitempty"`
 
-	// KeyLength: Length of the key in bits. Specified at creation time then
-	// immutable.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyTag: The key tag is a non-cryptographic hash of the a DNSKEY
-	// resource record associated with this DnsKey. The key tag can be used
-	// to identify a DNSKEY more quickly (but it is not a unique
-	// identifier). In particular, the key tag is used in a parent zone's DS
-	// record to point at the DNSKEY in this child ManagedZone. The key tag
-	// is a number in the range [0, 65535] and the algorithm to calculate it
-	// is specified in RFC4034 Appendix B. Output only.
 	KeyTag int64 `json:"keyTag,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#dnsKey".
 	Kind string `json:"kind,omitempty"`
 
-	// PublicKey: Base64 encoded public half of this key. Output only.
 	PublicKey string `json:"publicKey,omitempty"`
 
-	// Type: One of "KEY_SIGNING" or "ZONE_SIGNING". Keys of type
-	// KEY_SIGNING have the Secure Entry Point flag set and, when active,
-	// will be used to sign only resource record sets of type DNSKEY.
-	// Otherwise, the Secure Entry Point flag will be cleared and this key
-	// will be used to sign only resource record sets of other types.
-	// Immutable after creation time.
-	//
 	// Possible values:
 	//   "keySigning"
 	//   "zoneSigning"
@@ -371,12 +304,8 @@
 }
 
 type DnsKeyDigest struct {
-	// Digest: The base-16 encoded bytes of this digest. Suitable for use in
-	// a DS resource record.
 	Digest string `json:"digest,omitempty"`
 
-	// Type: Specifies the algorithm used to calculate this digest.
-	//
 	// Possible values:
 	//   "sha1"
 	//   "sha256"
@@ -406,13 +335,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKeySpec: Parameters for DnsKey key generation. Used for generating
-// initial keys for a new ManagedZone and as default when adding a new
-// DnsKey.
 type DnsKeySpec struct {
-	// Algorithm: String mnemonic specifying the DNSSEC algorithm of this
-	// key.
-	//
 	// Possible values:
 	//   "ecdsap256sha256"
 	//   "ecdsap384sha384"
@@ -421,16 +344,8 @@
 	//   "rsasha512"
 	Algorithm string `json:"algorithm,omitempty"`
 
-	// KeyLength: Length of the keys in bits.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyType: Specifies whether this is a key signing key (KSK) or a zone
-	// signing key (ZSK). Key signing keys have the Secure Entry Point flag
-	// set and, when active, will only be used to sign resource record sets
-	// of type DNSKEY. Zone signing keys do not have the Secure Entry Point
-	// flag set and will be used to sign all other types of resource record
-	// sets.
-	//
 	// Possible values:
 	//   "keySigning"
 	//   "zoneSigning"
@@ -463,10 +378,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKeysListResponse: The response to a request to enumerate DnsKeys
-// in a ManagedZone.
 type DnsKeysListResponse struct {
-	// DnsKeys: The requested resources.
 	DnsKeys []*DnsKey `json:"dnsKeys,omitempty"`
 
 	Header *ResponseHeader `json:"header,omitempty"`
@@ -474,17 +386,6 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a "snapshot" of collections
-	// larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -514,50 +415,27 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ManagedZone: A zone is a subtree of the DNS namespace under one
-// administrative responsibility. A ManagedZone is a resource that
-// represents a DNS zone hosted by the Cloud DNS service.
 type ManagedZone struct {
-	// CreationTime: The time that this resource was created on the server.
-	// This is in RFC3339 text format. Output only.
 	CreationTime string `json:"creationTime,omitempty"`
 
-	// Description: A mutable string of at most 1024 characters associated
-	// with this resource for the user's convenience. Has no effect on the
-	// managed zone's function.
 	Description string `json:"description,omitempty"`
 
-	// DnsName: The DNS name of this managed zone, for instance
-	// "example.com.".
 	DnsName string `json:"dnsName,omitempty"`
 
-	// DnssecConfig: DNSSEC configuration.
 	DnssecConfig *ManagedZoneDnsSecConfig `json:"dnssecConfig,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only)
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#managedZone".
 	Kind string `json:"kind,omitempty"`
 
-	// Labels: User labels.
 	Labels map[string]string `json:"labels,omitempty"`
 
-	// Name: User assigned name for this resource. Must be unique within the
-	// project. The name must be 1-63 characters long, must begin with a
-	// letter, end with a letter or digit, and only contain lowercase
-	// letters, digits or dashes.
 	Name string `json:"name,omitempty"`
 
-	// NameServerSet: Optionally specifies the NameServerSet for this
-	// ManagedZone. A NameServerSet is a set of DNS name servers that all
-	// host the same ManagedZones. Most users will leave this field unset.
 	NameServerSet string `json:"nameServerSet,omitempty"`
 
-	// NameServers: Delegate your managed_zone to these virtual name
-	// servers; defined by the server (output only)
 	NameServers []string `json:"nameServers,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -588,25 +466,17 @@
 }
 
 type ManagedZoneDnsSecConfig struct {
-	// DefaultKeySpecs: Specifies parameters that will be used for
-	// generating initial DnsKeys for this ManagedZone. Output only while
-	// state is not OFF.
 	DefaultKeySpecs []*DnsKeySpec `json:"defaultKeySpecs,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#managedZoneDnsSecConfig".
 	Kind string `json:"kind,omitempty"`
 
-	// NonExistence: Specifies the mechanism used to provide authenticated
-	// denial-of-existence responses. Output only while state is not OFF.
-	//
 	// Possible values:
 	//   "nsec"
 	//   "nsec3"
 	NonExistence string `json:"nonExistence,omitempty"`
 
-	// State: Specifies whether DNSSEC is enabled, and what mode it is in.
-	//
 	// Possible values:
 	//   "off"
 	//   "on"
@@ -643,20 +513,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// page token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// Operations: The operation resources.
 	Operations []*Operation `json:"operations,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -692,20 +550,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// ManagedZones: The managed zone resources.
 	ManagedZones []*ManagedZone `json:"managedZones,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// page token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -735,52 +581,26 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Operation: An operation represents a successful mutation performed on
-// a Cloud DNS resource. Operations provide: - An audit log of server
-// resource mutations. - A way to recover/retry API calls in the case
-// where the response is never received by the caller. Use the caller
-// specified client_operation_id.
 type Operation struct {
-	// DnsKeyContext: Only populated if the operation targeted a DnsKey
-	// (output only).
 	DnsKeyContext *OperationDnsKeyContext `json:"dnsKeyContext,omitempty"`
 
-	// Id: Unique identifier for the resource. This is the
-	// client_operation_id if the client specified it when the mutation was
-	// initiated, otherwise, it is generated by the server. The name must be
-	// 1-63 characters long and match the regular expression [-a-z0-9]?
-	// (output only)
 	Id string `json:"id,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#operation".
 	Kind string `json:"kind,omitempty"`
 
-	// StartTime: The time that this operation was started by the server.
-	// This is in RFC3339 text format (output only).
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation. Can be one of the following:
-	// "PENDING" or "DONE" (output only). A status of "DONE" means that the
-	// request to update the authoritative servers has been sent, but the
-	// servers might not be updated yet.
-	//
 	// Possible values:
 	//   "done"
 	//   "pending"
 	Status string `json:"status,omitempty"`
 
-	// Type: Type of the operation. Operations include insert, update, and
-	// delete (output only).
 	Type string `json:"type,omitempty"`
 
-	// User: User who requested the operation, for example:
-	// user@example.com. cloud-dns-system for operations automatically done
-	// by the system. (output only)
 	User string `json:"user,omitempty"`
 
-	// ZoneContext: Only populated if the operation targeted a ManagedZone
-	// (output only).
 	ZoneContext *OperationManagedZoneContext `json:"zoneContext,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -811,10 +631,8 @@
 }
 
 type OperationDnsKeyContext struct {
-	// NewValue: The post-operation DnsKey resource.
 	NewValue *DnsKey `json:"newValue,omitempty"`
 
-	// OldValue: The pre-operation DnsKey resource.
 	OldValue *DnsKey `json:"oldValue,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "NewValue") to
@@ -841,10 +659,8 @@
 }
 
 type OperationManagedZoneContext struct {
-	// NewValue: The post-operation ManagedZone resource.
 	NewValue *ManagedZone `json:"newValue,omitempty"`
 
-	// OldValue: The pre-operation ManagedZone resource.
 	OldValue *ManagedZone `json:"oldValue,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "NewValue") to
@@ -870,22 +686,15 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Project: A project resource. The project is a top level container for
-// resources including Cloud DNS ManagedZones. Projects can be created
-// only in the APIs console.
 type Project struct {
-	// Id: User assigned unique identifier for the resource (output only).
 	Id string `json:"id,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#project".
 	Kind string `json:"kind,omitempty"`
 
-	// Number: Unique numeric identifier for the resource; defined by the
-	// server (output only).
 	Number uint64 `json:"number,omitempty,string"`
 
-	// Quota: Quotas assigned to this project (output only).
 	Quota *Quota `json:"quota,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -915,41 +724,25 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Quota: Limits associated with a Project.
 type Quota struct {
-	// DnsKeysPerManagedZone: Maximum allowed number of DnsKeys per
-	// ManagedZone.
 	DnsKeysPerManagedZone int64 `json:"dnsKeysPerManagedZone,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#quota".
 	Kind string `json:"kind,omitempty"`
 
-	// ManagedZones: Maximum allowed number of managed zones in the project.
 	ManagedZones int64 `json:"managedZones,omitempty"`
 
-	// ResourceRecordsPerRrset: Maximum allowed number of ResourceRecords
-	// per ResourceRecordSet.
 	ResourceRecordsPerRrset int64 `json:"resourceRecordsPerRrset,omitempty"`
 
-	// RrsetAdditionsPerChange: Maximum allowed number of ResourceRecordSets
-	// to add per ChangesCreateRequest.
 	RrsetAdditionsPerChange int64 `json:"rrsetAdditionsPerChange,omitempty"`
 
-	// RrsetDeletionsPerChange: Maximum allowed number of ResourceRecordSets
-	// to delete per ChangesCreateRequest.
 	RrsetDeletionsPerChange int64 `json:"rrsetDeletionsPerChange,omitempty"`
 
-	// RrsetsPerManagedZone: Maximum allowed number of ResourceRecordSets
-	// per zone in the project.
 	RrsetsPerManagedZone int64 `json:"rrsetsPerManagedZone,omitempty"`
 
-	// TotalRrdataSizePerChange: Maximum allowed size for total rrdata in
-	// one ChangesCreateRequest in bytes.
 	TotalRrdataSizePerChange int64 `json:"totalRrdataSizePerChange,omitempty"`
 
-	// WhitelistedKeySpecs: DNSSEC algorithm and key length types that can
-	// be used for DnsKeys.
 	WhitelistedKeySpecs []*DnsKeySpec `json:"whitelistedKeySpecs,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g.
@@ -977,29 +770,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ResourceRecordSet: A unit of data that will be returned by the DNS
-// servers.
 type ResourceRecordSet struct {
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#resourceRecordSet".
 	Kind string `json:"kind,omitempty"`
 
-	// Name: For example, www.example.com.
 	Name string `json:"name,omitempty"`
 
-	// Rrdatas: As defined in RFC 1035 (section 5) and RFC 1034 (section
-	// 3.6.1).
 	Rrdatas []string `json:"rrdatas,omitempty"`
 
-	// SignatureRrdatas: As defined in RFC 4034 (section 3.2).
 	SignatureRrdatas []string `json:"signatureRrdatas,omitempty"`
 
-	// Ttl: Number of seconds that this ResourceRecordSet can be cached by
-	// resolvers.
 	Ttl int64 `json:"ttl,omitempty"`
 
-	// Type: The identifier of a supported record type. See the list of
-	// Supported DNS record types.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -1031,20 +814,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// Rrsets: The resource record set resources.
 	Rrsets []*ResourceRecordSet `json:"rrsets,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1074,11 +845,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ResponseHeader: Elements common to every response.
 type ResponseHeader struct {
-	// OperationId: For mutating operation requests that completed
-	// successfully. This is the client_operation_id if the client specified
-	// it, otherwise it is generated by the server (output only).
 	OperationId string `json:"operationId,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "OperationId") to
@@ -1116,7 +883,7 @@
 	header_     http.Header
 }
 
-// Create: Atomically update the ResourceRecordSet collection.
+// Create:
 func (r *ChangesService) Create(project string, managedZone string, change *Change) *ChangesCreateCall {
 	c := &ChangesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1126,9 +893,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ChangesCreateCall) ClientOperationId(clientOperationId string) *ChangesCreateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -1225,7 +989,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Atomically update the ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "POST",
 	//   "id": "dns.changes.create",
 	//   "parameterOrder": [
@@ -1234,18 +998,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1279,7 +1040,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Change.
+// Get:
 func (r *ChangesService) Get(project string, managedZone string, changeId string) *ChangesGetCall {
 	c := &ChangesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1289,9 +1050,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ChangesGetCall) ClientOperationId(clientOperationId string) *ChangesGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -1397,7 +1155,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Change.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.changes.get",
 	//   "parameterOrder": [
@@ -1407,24 +1165,20 @@
 	//   ],
 	//   "parameters": {
 	//     "changeId": {
-	//       "description": "The identifier of the requested change, from a previous ResourceRecordSetsChangeResponse.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1456,7 +1210,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate Changes to a ResourceRecordSet collection.
+// List:
 func (r *ChangesService) List(project string, managedZone string) *ChangesListCall {
 	c := &ChangesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1464,24 +1218,19 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ChangesListCall) MaxResults(maxResults int64) *ChangesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ChangesListCall) PageToken(pageToken string) *ChangesListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// SortBy sets the optional parameter "sortBy": Sorting criterion. The
-// only supported value is change sequence.
+// SortBy sets the optional parameter "sortBy":
 //
 // Possible values:
 //   "changeSequence" (default)
@@ -1490,8 +1239,7 @@
 	return c
 }
 
-// SortOrder sets the optional parameter "sortOrder": Sorting order
-// direction: 'ascending' or 'descending'.
+// SortOrder sets the optional parameter "sortOrder":
 func (c *ChangesListCall) SortOrder(sortOrder string) *ChangesListCall {
 	c.urlParams_.Set("sortOrder", sortOrder)
 	return c
@@ -1596,7 +1344,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate Changes to a ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.changes.list",
 	//   "parameterOrder": [
@@ -1605,31 +1353,26 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "sortBy": {
 	//       "default": "changeSequence",
-	//       "description": "Sorting criterion. The only supported value is change sequence.",
 	//       "enum": [
 	//         "changeSequence"
 	//       ],
@@ -1640,7 +1383,6 @@
 	//       "type": "string"
 	//     },
 	//     "sortOrder": {
-	//       "description": "Sorting order direction: 'ascending' or 'descending'.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
@@ -1693,7 +1435,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing DnsKey.
+// Get:
 func (r *DnsKeysService) Get(project string, managedZone string, dnsKeyId string) *DnsKeysGetCall {
 	c := &DnsKeysGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1703,18 +1445,12 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *DnsKeysGetCall) ClientOperationId(clientOperationId string) *DnsKeysGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
 }
 
-// DigestType sets the optional parameter "digestType": An optional
-// comma-separated list of digest types to compute and display for key
-// signing keys. If omitted, the recommended digest type will be
-// computed and displayed.
+// DigestType sets the optional parameter "digestType":
 func (c *DnsKeysGetCall) DigestType(digestType string) *DnsKeysGetCall {
 	c.urlParams_.Set("digestType", digestType)
 	return c
@@ -1820,7 +1556,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing DnsKey.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.dnsKeys.get",
 	//   "parameterOrder": [
@@ -1830,29 +1566,24 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "digestType": {
-	//       "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "dnsKeyId": {
-	//       "description": "The identifier of the requested DnsKey.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1884,7 +1615,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate DnsKeys to a ResourceRecordSet collection.
+// List:
 func (r *DnsKeysService) List(project string, managedZone string) *DnsKeysListCall {
 	c := &DnsKeysListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1892,26 +1623,19 @@
 	return c
 }
 
-// DigestType sets the optional parameter "digestType": An optional
-// comma-separated list of digest types to compute and display for key
-// signing keys. If omitted, the recommended digest type will be
-// computed and displayed.
+// DigestType sets the optional parameter "digestType":
 func (c *DnsKeysListCall) DigestType(digestType string) *DnsKeysListCall {
 	c.urlParams_.Set("digestType", digestType)
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *DnsKeysListCall) MaxResults(maxResults int64) *DnsKeysListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *DnsKeysListCall) PageToken(pageToken string) *DnsKeysListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
@@ -2016,7 +1740,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate DnsKeys to a ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.dnsKeys.list",
 	//   "parameterOrder": [
@@ -2025,29 +1749,24 @@
 	//   ],
 	//   "parameters": {
 	//     "digestType": {
-	//       "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2101,7 +1820,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Operation.
+// Get:
 func (r *ManagedZoneOperationsService) Get(project string, managedZone string, operation string) *ManagedZoneOperationsGetCall {
 	c := &ManagedZoneOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2111,9 +1830,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZoneOperationsGetCall) ClientOperationId(clientOperationId string) *ManagedZoneOperationsGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2219,7 +1935,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Operation.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZoneOperations.get",
 	//   "parameterOrder": [
@@ -2229,24 +1945,20 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "operation": {
-	//       "description": "Identifies the operation addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2278,7 +1990,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate Operations for the given ManagedZone.
+// List:
 func (r *ManagedZoneOperationsService) List(project string, managedZone string) *ManagedZoneOperationsListCall {
 	c := &ManagedZoneOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2286,24 +1998,19 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ManagedZoneOperationsListCall) MaxResults(maxResults int64) *ManagedZoneOperationsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ManagedZoneOperationsListCall) PageToken(pageToken string) *ManagedZoneOperationsListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// SortBy sets the optional parameter "sortBy": Sorting criterion. The
-// only supported values are START_TIME and ID.
+// SortBy sets the optional parameter "sortBy":
 //
 // Possible values:
 //   "id"
@@ -2413,7 +2120,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate Operations for the given ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZoneOperations.list",
 	//   "parameterOrder": [
@@ -2422,31 +2129,26 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "sortBy": {
 	//       "default": "startTime",
-	//       "description": "Sorting criterion. The only supported values are START_TIME and ID.",
 	//       "enum": [
 	//         "id",
 	//         "startTime"
@@ -2505,7 +2207,7 @@
 	header_     http.Header
 }
 
-// Create: Create a new ManagedZone.
+// Create:
 func (r *ManagedZonesService) Create(project string, managedzone *ManagedZone) *ManagedZonesCreateCall {
 	c := &ManagedZonesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2514,9 +2216,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesCreateCall) ClientOperationId(clientOperationId string) *ManagedZonesCreateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2612,7 +2311,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Create a new ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "POST",
 	//   "id": "dns.managedZones.create",
 	//   "parameterOrder": [
@@ -2620,12 +2319,10 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2657,7 +2354,7 @@
 	header_     http.Header
 }
 
-// Delete: Delete a previously created ManagedZone.
+// Delete:
 func (r *ManagedZonesService) Delete(project string, managedZone string) *ManagedZonesDeleteCall {
 	c := &ManagedZonesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2666,9 +2363,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesDeleteCall) ClientOperationId(clientOperationId string) *ManagedZonesDeleteCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2735,7 +2429,7 @@
 	}
 	return nil
 	// {
-	//   "description": "Delete a previously created ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "DELETE",
 	//   "id": "dns.managedZones.delete",
 	//   "parameterOrder": [
@@ -2744,18 +2438,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2782,7 +2473,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing ManagedZone.
+// Get:
 func (r *ManagedZonesService) Get(project string, managedZone string) *ManagedZonesGetCall {
 	c := &ManagedZonesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2791,9 +2482,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesGetCall) ClientOperationId(clientOperationId string) *ManagedZonesGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2898,7 +2586,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZones.get",
 	//   "parameterOrder": [
@@ -2907,18 +2595,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2949,32 +2634,26 @@
 	header_      http.Header
 }
 
-// List: Enumerate ManagedZones that have been created but not yet
-// deleted.
+// List:
 func (r *ManagedZonesService) List(project string) *ManagedZonesListCall {
 	c := &ManagedZonesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
 	return c
 }
 
-// DnsName sets the optional parameter "dnsName": Restricts the list to
-// return only zones with this domain name.
+// DnsName sets the optional parameter "dnsName":
 func (c *ManagedZonesListCall) DnsName(dnsName string) *ManagedZonesListCall {
 	c.urlParams_.Set("dnsName", dnsName)
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ManagedZonesListCall) MaxResults(maxResults int64) *ManagedZonesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ManagedZonesListCall) PageToken(pageToken string) *ManagedZonesListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
@@ -3078,7 +2757,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate ManagedZones that have been created but not yet deleted.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZones.list",
 	//   "parameterOrder": [
@@ -3086,23 +2765,19 @@
 	//   ],
 	//   "parameters": {
 	//     "dnsName": {
-	//       "description": "Restricts the list to return only zones with this domain name.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3155,7 +2830,7 @@
 	header_     http.Header
 }
 
-// Patch: Apply a partial update to an existing ManagedZone.
+// Patch:
 func (r *ManagedZonesService) Patch(project string, managedZone string, managedzone *ManagedZone) *ManagedZonesPatchCall {
 	c := &ManagedZonesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3165,9 +2840,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesPatchCall) ClientOperationId(clientOperationId string) *ManagedZonesPatchCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3264,7 +2936,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Apply a partial update to an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "PATCH",
 	//   "id": "dns.managedZones.patch",
 	//   "parameterOrder": [
@@ -3273,18 +2945,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3317,7 +2986,7 @@
 	header_     http.Header
 }
 
-// Update: Update an existing ManagedZone.
+// Update:
 func (r *ManagedZonesService) Update(project string, managedZone string, managedzone *ManagedZone) *ManagedZonesUpdateCall {
 	c := &ManagedZonesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3327,9 +2996,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesUpdateCall) ClientOperationId(clientOperationId string) *ManagedZonesUpdateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3426,7 +3092,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "PUT",
 	//   "id": "dns.managedZones.update",
 	//   "parameterOrder": [
@@ -3435,18 +3101,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3478,7 +3141,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Project.
+// Get:
 func (r *ProjectsService) Get(project string) *ProjectsGetCall {
 	c := &ProjectsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3486,9 +3149,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ProjectsGetCall) ClientOperationId(clientOperationId string) *ProjectsGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3592,7 +3252,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Project.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.projects.get",
 	//   "parameterOrder": [
@@ -3600,12 +3260,10 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3637,8 +3295,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate ResourceRecordSets that have been created but not yet
-// deleted.
+// List:
 func (r *ResourceRecordSetsService) List(project string, managedZone string) *ResourceRecordSetsListCall {
 	c := &ResourceRecordSetsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3646,32 +3303,25 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ResourceRecordSetsListCall) MaxResults(maxResults int64) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// Name sets the optional parameter "name": Restricts the list to return
-// only records with this fully qualified domain name.
+// Name sets the optional parameter "name":
 func (c *ResourceRecordSetsListCall) Name(name string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("name", name)
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ResourceRecordSetsListCall) PageToken(pageToken string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// Type sets the optional parameter "type": Restricts the list to return
-// only records of this type. If present, the "name" parameter must also
-// be present.
+// Type sets the optional parameter "type":
 func (c *ResourceRecordSetsListCall) Type(type_ string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("type", type_)
 	return c
@@ -3776,7 +3426,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate ResourceRecordSets that have been created but not yet deleted.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.resourceRecordSets.list",
 	//   "parameterOrder": [
@@ -3785,35 +3435,29 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "name": {
-	//       "description": "Restricts the list to return only records with this fully qualified domain name.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "type": {
-	//       "description": "Restricts the list to return only records of this type. If present, the \"name\" parameter must also be present.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
diff --git a/dns/v1beta2/dns-api.json b/dns/v1beta2/dns-api.json
index 6d7cdf9..21712d6 100644
--- a/dns/v1beta2/dns-api.json
+++ b/dns/v1beta2/dns-api.json
@@ -23,7 +23,7 @@
   "description": "Configures and serves authoritative DNS records.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/cloud-dns",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/4et2R7ypLJhR0EaJrh_558XMGjo\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/dl6oVHz1KLsMGWjKgNG5BO_5VGs\"",
   "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"
@@ -83,7 +83,7 @@
     "changes": {
       "methods": {
         "create": {
-          "description": "Atomically update the ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "POST",
           "id": "dns.changes.create",
           "parameterOrder": [
@@ -92,18 +92,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -122,7 +119,7 @@
           ]
         },
         "get": {
-          "description": "Fetch the representation of an existing Change.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.changes.get",
           "parameterOrder": [
@@ -132,24 +129,20 @@
           ],
           "parameters": {
             "changeId": {
-              "description": "The identifier of the requested change, from a previous ResourceRecordSetsChangeResponse.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -167,7 +160,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate Changes to a ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.changes.list",
           "parameterOrder": [
@@ -176,31 +169,26 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "sortBy": {
               "default": "changeSequence",
-              "description": "Sorting criterion. The only supported value is change sequence.",
               "enum": [
                 "changeSequence"
               ],
@@ -211,7 +199,6 @@
               "type": "string"
             },
             "sortOrder": {
-              "description": "Sorting order direction: 'ascending' or 'descending'.",
               "location": "query",
               "type": "string"
             }
@@ -232,7 +219,7 @@
     "dnsKeys": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing DnsKey.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.dnsKeys.get",
           "parameterOrder": [
@@ -242,29 +229,24 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "digestType": {
-              "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
               "location": "query",
               "type": "string"
             },
             "dnsKeyId": {
-              "description": "The identifier of the requested DnsKey.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -282,7 +264,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate DnsKeys to a ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.dnsKeys.list",
           "parameterOrder": [
@@ -291,29 +273,24 @@
           ],
           "parameters": {
             "digestType": {
-              "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -335,7 +312,7 @@
     "managedZoneOperations": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing Operation.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZoneOperations.get",
           "parameterOrder": [
@@ -345,24 +322,20 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "operation": {
-              "description": "Identifies the operation addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -380,7 +353,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate Operations for the given ManagedZone.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZoneOperations.list",
           "parameterOrder": [
@@ -389,31 +362,26 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "sortBy": {
               "default": "startTime",
-              "description": "Sorting criterion. The only supported values are START_TIME and ID.",
               "enum": [
                 "id",
                 "startTime"
@@ -442,7 +410,7 @@
     "managedZones": {
       "methods": {
         "create": {
-          "description": "Create a new ManagedZone.",
+          "description": "",
           "httpMethod": "POST",
           "id": "dns.managedZones.create",
           "parameterOrder": [
@@ -450,12 +418,10 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -474,7 +440,7 @@
           ]
         },
         "delete": {
-          "description": "Delete a previously created ManagedZone.",
+          "description": "",
           "httpMethod": "DELETE",
           "id": "dns.managedZones.delete",
           "parameterOrder": [
@@ -483,18 +449,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -507,7 +470,7 @@
           ]
         },
         "get": {
-          "description": "Fetch the representation of an existing ManagedZone.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZones.get",
           "parameterOrder": [
@@ -516,18 +479,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -545,7 +505,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate ManagedZones that have been created but not yet deleted.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZones.list",
           "parameterOrder": [
@@ -553,23 +513,19 @@
           ],
           "parameters": {
             "dnsName": {
-              "description": "Restricts the list to return only zones with this domain name.",
               "location": "query",
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -587,7 +543,7 @@
           ]
         },
         "patch": {
-          "description": "Apply a partial update to an existing ManagedZone.",
+          "description": "",
           "httpMethod": "PATCH",
           "id": "dns.managedZones.patch",
           "parameterOrder": [
@@ -596,18 +552,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -626,7 +579,7 @@
           ]
         },
         "update": {
-          "description": "Update an existing ManagedZone.",
+          "description": "",
           "httpMethod": "PUT",
           "id": "dns.managedZones.update",
           "parameterOrder": [
@@ -635,18 +588,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -669,7 +619,7 @@
     "policies": {
       "methods": {
         "create": {
-          "description": "Create a new Policy",
+          "description": "",
           "httpMethod": "POST",
           "id": "dns.policies.create",
           "parameterOrder": [
@@ -677,12 +627,10 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -701,7 +649,7 @@
           ]
         },
         "delete": {
-          "description": "Delete a previously created Policy. Will fail if the policy is still being referenced by a network.",
+          "description": "",
           "httpMethod": "DELETE",
           "id": "dns.policies.delete",
           "parameterOrder": [
@@ -710,18 +658,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "policy": {
-              "description": "User given friendly name of the policy addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -734,7 +679,7 @@
           ]
         },
         "get": {
-          "description": "Fetch the representation of an existing Policy.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.policies.get",
           "parameterOrder": [
@@ -743,18 +688,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "policy": {
-              "description": "User given friendly name of the policy addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -772,7 +714,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate all Policies associated with a project.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.policies.list",
           "parameterOrder": [
@@ -780,18 +722,15 @@
           ],
           "parameters": {
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -809,7 +748,7 @@
           ]
         },
         "patch": {
-          "description": "Apply a partial update to an existing Policy.",
+          "description": "",
           "httpMethod": "PATCH",
           "id": "dns.policies.patch",
           "parameterOrder": [
@@ -818,18 +757,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "policy": {
-              "description": "User given friendly name of the policy addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -848,7 +784,7 @@
           ]
         },
         "update": {
-          "description": "Update an existing Policy.",
+          "description": "",
           "httpMethod": "PUT",
           "id": "dns.policies.update",
           "parameterOrder": [
@@ -857,18 +793,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "policy": {
-              "description": "User given friendly name of the policy addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -891,7 +824,7 @@
     "projects": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing Project.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.projects.get",
           "parameterOrder": [
@@ -899,12 +832,10 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -926,7 +857,7 @@
     "resourceRecordSets": {
       "methods": {
         "list": {
-          "description": "Enumerate ResourceRecordSets that have been created but not yet deleted.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.resourceRecordSets.list",
           "parameterOrder": [
@@ -935,35 +866,29 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "name": {
-              "description": "Restricts the list to return only records with this fully qualified domain name.",
               "location": "query",
               "type": "string"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "type": {
-              "description": "Restricts the list to return only records of this type. If present, the \"name\" parameter must also be present.",
               "location": "query",
               "type": "string"
             }
@@ -982,33 +907,28 @@
       }
     }
   },
-  "revision": "20181212",
+  "revision": "20190213",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Change": {
-      "description": "A Change represents a set of ResourceRecordSet additions and deletions applied atomically to a ManagedZone. ResourceRecordSets within a ManagedZone are modified by creating a new Change element in the Changes collection. In turn the Changes collection also records the past modifications to the ResourceRecordSets in a ManagedZone. The current state of the ManagedZone is the sum effect of applying all Change elements in the Changes collection in sequence.",
       "id": "Change",
       "properties": {
         "additions": {
-          "description": "Which ResourceRecordSets to add?",
           "items": {
             "$ref": "ResourceRecordSet"
           },
           "type": "array"
         },
         "deletions": {
-          "description": "Which ResourceRecordSets to remove? Must match existing data exactly.",
           "items": {
             "$ref": "ResourceRecordSet"
           },
           "type": "array"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only).",
           "type": "string"
         },
         "isServing": {
-          "description": "If the DNS queries for the zone will be served.",
           "type": "boolean"
         },
         "kind": {
@@ -1017,11 +937,9 @@
           "type": "string"
         },
         "startTime": {
-          "description": "The time that this operation was started by the server (output only). This is in RFC3339 text format.",
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "done",
             "pending"
@@ -1036,11 +954,9 @@
       "type": "object"
     },
     "ChangesListResponse": {
-      "description": "The response to a request to enumerate Changes to a ResourceRecordSets collection.",
       "id": "ChangesListResponse",
       "properties": {
         "changes": {
-          "description": "The requested changes.",
           "items": {
             "$ref": "Change"
           },
@@ -1055,18 +971,15 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a \"snapshot\" of collections larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "DnsKey": {
-      "description": "A DNSSEC key pair.",
       "id": "DnsKey",
       "properties": {
         "algorithm": {
-          "description": "String mnemonic specifying the DNSSEC algorithm of this key. Immutable after creation time.",
           "enum": [
             "ecdsap256sha256",
             "ecdsap384sha384",
@@ -1084,35 +997,28 @@
           "type": "string"
         },
         "creationTime": {
-          "description": "The time that this resource was created in the control plane. This is in RFC3339 text format. Output only.",
           "type": "string"
         },
         "description": {
-          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the resource's function.",
           "type": "string"
         },
         "digests": {
-          "description": "Cryptographic hashes of the DNSKEY resource record associated with this DnsKey. These digests are needed to construct a DS record that points at this DNS key. Output only.",
           "items": {
             "$ref": "DnsKeyDigest"
           },
           "type": "array"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only).",
           "type": "string"
         },
         "isActive": {
-          "description": "Active keys will be used to sign subsequent changes to the ManagedZone. Inactive keys will still be present as DNSKEY Resource Records for the use of resolvers validating existing signatures.",
           "type": "boolean"
         },
         "keyLength": {
-          "description": "Length of the key in bits. Specified at creation time then immutable.",
           "format": "uint32",
           "type": "integer"
         },
         "keyTag": {
-          "description": "The key tag is a non-cryptographic hash of the a DNSKEY resource record associated with this DnsKey. The key tag can be used to identify a DNSKEY more quickly (but it is not a unique identifier). In particular, the key tag is used in a parent zone's DS record to point at the DNSKEY in this child ManagedZone. The key tag is a number in the range [0, 65535] and the algorithm to calculate it is specified in RFC4034 Appendix B. Output only.",
           "format": "int32",
           "type": "integer"
         },
@@ -1122,11 +1028,9 @@
           "type": "string"
         },
         "publicKey": {
-          "description": "Base64 encoded public half of this key. Output only.",
           "type": "string"
         },
         "type": {
-          "description": "One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types. Immutable after creation time.",
           "enum": [
             "keySigning",
             "zoneSigning"
@@ -1144,11 +1048,9 @@
       "id": "DnsKeyDigest",
       "properties": {
         "digest": {
-          "description": "The base-16 encoded bytes of this digest. Suitable for use in a DS resource record.",
           "type": "string"
         },
         "type": {
-          "description": "Specifies the algorithm used to calculate this digest.",
           "enum": [
             "sha1",
             "sha256",
@@ -1165,11 +1067,9 @@
       "type": "object"
     },
     "DnsKeySpec": {
-      "description": "Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.",
       "id": "DnsKeySpec",
       "properties": {
         "algorithm": {
-          "description": "String mnemonic specifying the DNSSEC algorithm of this key.",
           "enum": [
             "ecdsap256sha256",
             "ecdsap384sha384",
@@ -1187,12 +1087,10 @@
           "type": "string"
         },
         "keyLength": {
-          "description": "Length of the keys in bits.",
           "format": "uint32",
           "type": "integer"
         },
         "keyType": {
-          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.",
           "enum": [
             "keySigning",
             "zoneSigning"
@@ -1212,11 +1110,9 @@
       "type": "object"
     },
     "DnsKeysListResponse": {
-      "description": "The response to a request to enumerate DnsKeys in a ManagedZone.",
       "id": "DnsKeysListResponse",
       "properties": {
         "dnsKeys": {
-          "description": "The requested resources.",
           "items": {
             "$ref": "DnsKey"
           },
@@ -1231,38 +1127,30 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a \"snapshot\" of collections larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "ManagedZone": {
-      "description": "A zone is a subtree of the DNS namespace under one administrative responsibility. A ManagedZone is a resource that represents a DNS zone hosted by the Cloud DNS service.",
       "id": "ManagedZone",
       "properties": {
         "creationTime": {
-          "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only.",
           "type": "string"
         },
         "description": {
-          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function.",
           "type": "string"
         },
         "dnsName": {
-          "description": "The DNS name of this managed zone, for instance \"example.com.\".",
           "type": "string"
         },
         "dnssecConfig": {
-          "$ref": "ManagedZoneDnsSecConfig",
-          "description": "DNSSEC configuration."
+          "$ref": "ManagedZoneDnsSecConfig"
         },
         "forwardingConfig": {
-          "$ref": "ManagedZoneForwardingConfig",
-          "description": "The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to."
+          "$ref": "ManagedZoneForwardingConfig"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only)",
           "format": "uint64",
           "type": "string"
         },
@@ -1275,30 +1163,24 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "User labels.",
           "type": "object"
         },
         "name": {
-          "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.",
           "type": "string"
         },
         "nameServerSet": {
-          "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users will leave this field unset.",
           "type": "string"
         },
         "nameServers": {
-          "description": "Delegate your managed_zone to these virtual name servers; defined by the server (output only)",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "privateVisibilityConfig": {
-          "$ref": "ManagedZonePrivateVisibilityConfig",
-          "description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
+          "$ref": "ManagedZonePrivateVisibilityConfig"
         },
         "visibility": {
-          "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.",
           "enum": [
             "private",
             "public"
@@ -1316,7 +1198,6 @@
       "id": "ManagedZoneDnsSecConfig",
       "properties": {
         "defaultKeySpecs": {
-          "description": "Specifies parameters that will be used for generating initial DnsKeys for this ManagedZone. Output only while state is not OFF.",
           "items": {
             "$ref": "DnsKeySpec"
           },
@@ -1328,7 +1209,6 @@
           "type": "string"
         },
         "nonExistence": {
-          "description": "Specifies the mechanism used to provide authenticated denial-of-existence responses. Output only while state is not OFF.",
           "enum": [
             "nsec",
             "nsec3"
@@ -1340,7 +1220,6 @@
           "type": "string"
         },
         "state": {
-          "description": "Specifies whether DNSSEC is enabled, and what mode it is in.",
           "enum": [
             "off",
             "on",
@@ -1365,7 +1244,6 @@
           "type": "string"
         },
         "targetNameServers": {
-          "description": "List of target name servers to forward to. Cloud DNS will select the best available name server if more than one target is given.",
           "items": {
             "$ref": "ManagedZoneForwardingConfigNameServerTarget"
           },
@@ -1378,7 +1256,6 @@
       "id": "ManagedZoneForwardingConfigNameServerTarget",
       "properties": {
         "ipv4Address": {
-          "description": "IPv4 address of a target name server.",
           "type": "string"
         },
         "kind": {
@@ -1401,11 +1278,9 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         },
         "operations": {
-          "description": "The operation resources.",
           "items": {
             "$ref": "Operation"
           },
@@ -1423,7 +1298,6 @@
           "type": "string"
         },
         "networks": {
-          "description": "The list of VPC networks that can see this zone.",
           "items": {
             "$ref": "ManagedZonePrivateVisibilityConfigNetwork"
           },
@@ -1441,7 +1315,6 @@
           "type": "string"
         },
         "networkUrl": {
-          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
           "type": "string"
         }
       },
@@ -1459,29 +1332,24 @@
           "type": "string"
         },
         "managedZones": {
-          "description": "The managed zone resources.",
           "items": {
             "$ref": "ManagedZone"
           },
           "type": "array"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "Operation": {
-      "description": "An operation represents a successful mutation performed on a Cloud DNS resource. Operations provide: - An audit log of server resource mutations. - A way to recover/retry API calls in the case where the response is never received by the caller. Use the caller specified client_operation_id.",
       "id": "Operation",
       "properties": {
         "dnsKeyContext": {
-          "$ref": "OperationDnsKeyContext",
-          "description": "Only populated if the operation targeted a DnsKey (output only)."
+          "$ref": "OperationDnsKeyContext"
         },
         "id": {
-          "description": "Unique identifier for the resource. This is the client_operation_id if the client specified it when the mutation was initiated, otherwise, it is generated by the server. The name must be 1-63 characters long and match the regular expression [-a-z0-9]? (output only)",
           "type": "string"
         },
         "kind": {
@@ -1490,11 +1358,9 @@
           "type": "string"
         },
         "startTime": {
-          "description": "The time that this operation was started by the server. This is in RFC3339 text format (output only).",
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only). A status of \"DONE\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "done",
             "pending"
@@ -1506,16 +1372,13 @@
           "type": "string"
         },
         "type": {
-          "description": "Type of the operation. Operations include insert, update, and delete (output only).",
           "type": "string"
         },
         "user": {
-          "description": "User who requested the operation, for example: user@example.com. cloud-dns-system for operations automatically done by the system. (output only)",
           "type": "string"
         },
         "zoneContext": {
-          "$ref": "OperationManagedZoneContext",
-          "description": "Only populated if the operation targeted a ManagedZone (output only)."
+          "$ref": "OperationManagedZoneContext"
         }
       },
       "type": "object"
@@ -1524,12 +1387,10 @@
       "id": "OperationDnsKeyContext",
       "properties": {
         "newValue": {
-          "$ref": "DnsKey",
-          "description": "The post-operation DnsKey resource."
+          "$ref": "DnsKey"
         },
         "oldValue": {
-          "$ref": "DnsKey",
-          "description": "The pre-operation DnsKey resource."
+          "$ref": "DnsKey"
         }
       },
       "type": "object"
@@ -1538,12 +1399,10 @@
       "id": "OperationManagedZoneContext",
       "properties": {
         "newValue": {
-          "$ref": "ManagedZone",
-          "description": "The post-operation ManagedZone resource."
+          "$ref": "ManagedZone"
         },
         "oldValue": {
-          "$ref": "ManagedZone",
-          "description": "The pre-operation ManagedZone resource."
+          "$ref": "ManagedZone"
         }
       },
       "type": "object"
@@ -1560,11 +1419,9 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         },
         "policies": {
-          "description": "The policy resources.",
           "items": {
             "$ref": "Policy"
           },
@@ -1598,23 +1455,18 @@
       "type": "object"
     },
     "Policy": {
-      "description": "A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.",
       "id": "Policy",
       "properties": {
         "alternativeNameServerConfig": {
-          "$ref": "PolicyAlternativeNameServerConfig",
-          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified."
+          "$ref": "PolicyAlternativeNameServerConfig"
         },
         "description": {
-          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the policy's function.",
           "type": "string"
         },
         "enableInboundForwarding": {
-          "description": "Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address will be allocated from each of the sub-networks that are bound to this policy.",
           "type": "boolean"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only).",
           "format": "uint64",
           "type": "string"
         },
@@ -1624,11 +1476,9 @@
           "type": "string"
         },
         "name": {
-          "description": "User assigned name for this policy.",
           "type": "string"
         },
         "networks": {
-          "description": "List of network names specifying networks to which this policy is applied.",
           "items": {
             "$ref": "PolicyNetwork"
           },
@@ -1646,7 +1496,6 @@
           "type": "string"
         },
         "targetNameServers": {
-          "description": "Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.",
           "items": {
             "$ref": "PolicyAlternativeNameServerConfigTargetNameServer"
           },
@@ -1659,7 +1508,6 @@
       "id": "PolicyAlternativeNameServerConfigTargetNameServer",
       "properties": {
         "ipv4Address": {
-          "description": "IPv4 address to forward to.",
           "type": "string"
         },
         "kind": {
@@ -1679,18 +1527,15 @@
           "type": "string"
         },
         "networkUrl": {
-          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
           "type": "string"
         }
       },
       "type": "object"
     },
     "Project": {
-      "description": "A project resource. The project is a top level container for resources including Cloud DNS ManagedZones. Projects can be created only in the APIs console.",
       "id": "Project",
       "properties": {
         "id": {
-          "description": "User assigned unique identifier for the resource (output only).",
           "type": "string"
         },
         "kind": {
@@ -1699,23 +1544,19 @@
           "type": "string"
         },
         "number": {
-          "description": "Unique numeric identifier for the resource; defined by the server (output only).",
           "format": "uint64",
           "type": "string"
         },
         "quota": {
-          "$ref": "Quota",
-          "description": "Quotas assigned to this project (output only)."
+          "$ref": "Quota"
         }
       },
       "type": "object"
     },
     "Quota": {
-      "description": "Limits associated with a Project.",
       "id": "Quota",
       "properties": {
         "dnsKeysPerManagedZone": {
-          "description": "Maximum allowed number of DnsKeys per ManagedZone.",
           "format": "int32",
           "type": "integer"
         },
@@ -1725,67 +1566,54 @@
           "type": "string"
         },
         "managedZones": {
-          "description": "Maximum allowed number of managed zones in the project.",
           "format": "int32",
           "type": "integer"
         },
         "managedZonesPerNetwork": {
-          "description": "Maximum allowed number of managed zones which can be attached to a network.",
           "format": "int32",
           "type": "integer"
         },
         "networksPerManagedZone": {
-          "description": "Maximum allowed number of networks to which a privately scoped zone can be attached.",
           "format": "int32",
           "type": "integer"
         },
         "networksPerPolicy": {
-          "description": "Maximum allowed number of networks per policy.",
           "format": "int32",
           "type": "integer"
         },
         "policies": {
-          "description": "Maximum allowed number of policies per project.",
           "format": "int32",
           "type": "integer"
         },
         "resourceRecordsPerRrset": {
-          "description": "Maximum allowed number of ResourceRecords per ResourceRecordSet.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetAdditionsPerChange": {
-          "description": "Maximum allowed number of ResourceRecordSets to add per ChangesCreateRequest.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetDeletionsPerChange": {
-          "description": "Maximum allowed number of ResourceRecordSets to delete per ChangesCreateRequest.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetsPerManagedZone": {
-          "description": "Maximum allowed number of ResourceRecordSets per zone in the project.",
           "format": "int32",
           "type": "integer"
         },
         "targetNameServersPerManagedZone": {
-          "description": "Maximum allowed number of target name servers per managed forwarding zone.",
           "format": "int32",
           "type": "integer"
         },
         "targetNameServersPerPolicy": {
-          "description": "Maximum allowed number of alternative target name servers per policy.",
           "format": "int32",
           "type": "integer"
         },
         "totalRrdataSizePerChange": {
-          "description": "Maximum allowed size for total rrdata in one ChangesCreateRequest in bytes.",
           "format": "int32",
           "type": "integer"
         },
         "whitelistedKeySpecs": {
-          "description": "DNSSEC algorithm and key length types that can be used for DnsKeys.",
           "items": {
             "$ref": "DnsKeySpec"
           },
@@ -1795,7 +1623,6 @@
       "type": "object"
     },
     "ResourceRecordSet": {
-      "description": "A unit of data that will be returned by the DNS servers.",
       "id": "ResourceRecordSet",
       "properties": {
         "kind": {
@@ -1804,30 +1631,25 @@
           "type": "string"
         },
         "name": {
-          "description": "For example, www.example.com.",
           "type": "string"
         },
         "rrdatas": {
-          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1).",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "signatureRrdatas": {
-          "description": "As defined in RFC 4034 (section 3.2).",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "ttl": {
-          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers.",
           "format": "int32",
           "type": "integer"
         },
         "type": {
-          "description": "The identifier of a supported record type. See the list of Supported DNS record types.",
           "type": "string"
         }
       },
@@ -1845,11 +1667,9 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         },
         "rrsets": {
-          "description": "The resource record set resources.",
           "items": {
             "$ref": "ResourceRecordSet"
           },
@@ -1859,11 +1679,9 @@
       "type": "object"
     },
     "ResponseHeader": {
-      "description": "Elements common to every response.",
       "id": "ResponseHeader",
       "properties": {
         "operationId": {
-          "description": "For mutating operation requests that completed successfully. This is the client_operation_id if the client specified it, otherwise it is generated by the server (output only).",
           "type": "string"
         }
       },
diff --git a/dns/v1beta2/dns-gen.go b/dns/v1beta2/dns-gen.go
index ba506fa..93b0154 100644
--- a/dns/v1beta2/dns-gen.go
+++ b/dns/v1beta2/dns-gen.go
@@ -170,40 +170,21 @@
 	s *Service
 }
 
-// Change: A Change represents a set of ResourceRecordSet additions and
-// deletions applied atomically to a ManagedZone. ResourceRecordSets
-// within a ManagedZone are modified by creating a new Change element in
-// the Changes collection. In turn the Changes collection also records
-// the past modifications to the ResourceRecordSets in a ManagedZone.
-// The current state of the ManagedZone is the sum effect of applying
-// all Change elements in the Changes collection in sequence.
 type Change struct {
-	// Additions: Which ResourceRecordSets to add?
 	Additions []*ResourceRecordSet `json:"additions,omitempty"`
 
-	// Deletions: Which ResourceRecordSets to remove? Must match existing
-	// data exactly.
 	Deletions []*ResourceRecordSet `json:"deletions,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only).
 	Id string `json:"id,omitempty"`
 
-	// IsServing: If the DNS queries for the zone will be served.
 	IsServing bool `json:"isServing,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#change".
 	Kind string `json:"kind,omitempty"`
 
-	// StartTime: The time that this operation was started by the server
-	// (output only). This is in RFC3339 text format.
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation (output only). A status of "done"
-	// means that the request to update the authoritative servers has been
-	// sent, but the servers might not be updated yet.
-	//
 	// Possible values:
 	//   "done"
 	//   "pending"
@@ -236,10 +217,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ChangesListResponse: The response to a request to enumerate Changes
-// to a ResourceRecordSets collection.
 type ChangesListResponse struct {
-	// Changes: The requested changes.
 	Changes []*Change `json:"changes,omitempty"`
 
 	Header *ResponseHeader `json:"header,omitempty"`
@@ -247,17 +225,6 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a "snapshot" of collections
-	// larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -287,11 +254,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKey: A DNSSEC key pair.
 type DnsKey struct {
-	// Algorithm: String mnemonic specifying the DNSSEC algorithm of this
-	// key. Immutable after creation time.
-	//
 	// Possible values:
 	//   "ecdsap256sha256"
 	//   "ecdsap384sha384"
@@ -300,56 +263,26 @@
 	//   "rsasha512"
 	Algorithm string `json:"algorithm,omitempty"`
 
-	// CreationTime: The time that this resource was created in the control
-	// plane. This is in RFC3339 text format. Output only.
 	CreationTime string `json:"creationTime,omitempty"`
 
-	// Description: A mutable string of at most 1024 characters associated
-	// with this resource for the user's convenience. Has no effect on the
-	// resource's function.
 	Description string `json:"description,omitempty"`
 
-	// Digests: Cryptographic hashes of the DNSKEY resource record
-	// associated with this DnsKey. These digests are needed to construct a
-	// DS record that points at this DNS key. Output only.
 	Digests []*DnsKeyDigest `json:"digests,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only).
 	Id string `json:"id,omitempty"`
 
-	// IsActive: Active keys will be used to sign subsequent changes to the
-	// ManagedZone. Inactive keys will still be present as DNSKEY Resource
-	// Records for the use of resolvers validating existing signatures.
 	IsActive bool `json:"isActive,omitempty"`
 
-	// KeyLength: Length of the key in bits. Specified at creation time then
-	// immutable.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyTag: The key tag is a non-cryptographic hash of the a DNSKEY
-	// resource record associated with this DnsKey. The key tag can be used
-	// to identify a DNSKEY more quickly (but it is not a unique
-	// identifier). In particular, the key tag is used in a parent zone's DS
-	// record to point at the DNSKEY in this child ManagedZone. The key tag
-	// is a number in the range [0, 65535] and the algorithm to calculate it
-	// is specified in RFC4034 Appendix B. Output only.
 	KeyTag int64 `json:"keyTag,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#dnsKey".
 	Kind string `json:"kind,omitempty"`
 
-	// PublicKey: Base64 encoded public half of this key. Output only.
 	PublicKey string `json:"publicKey,omitempty"`
 
-	// Type: One of "KEY_SIGNING" or "ZONE_SIGNING". Keys of type
-	// KEY_SIGNING have the Secure Entry Point flag set and, when active,
-	// will be used to sign only resource record sets of type DNSKEY.
-	// Otherwise, the Secure Entry Point flag will be cleared and this key
-	// will be used to sign only resource record sets of other types.
-	// Immutable after creation time.
-	//
 	// Possible values:
 	//   "keySigning"
 	//   "zoneSigning"
@@ -383,12 +316,8 @@
 }
 
 type DnsKeyDigest struct {
-	// Digest: The base-16 encoded bytes of this digest. Suitable for use in
-	// a DS resource record.
 	Digest string `json:"digest,omitempty"`
 
-	// Type: Specifies the algorithm used to calculate this digest.
-	//
 	// Possible values:
 	//   "sha1"
 	//   "sha256"
@@ -418,13 +347,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKeySpec: Parameters for DnsKey key generation. Used for generating
-// initial keys for a new ManagedZone and as default when adding a new
-// DnsKey.
 type DnsKeySpec struct {
-	// Algorithm: String mnemonic specifying the DNSSEC algorithm of this
-	// key.
-	//
 	// Possible values:
 	//   "ecdsap256sha256"
 	//   "ecdsap384sha384"
@@ -433,16 +356,8 @@
 	//   "rsasha512"
 	Algorithm string `json:"algorithm,omitempty"`
 
-	// KeyLength: Length of the keys in bits.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyType: Specifies whether this is a key signing key (KSK) or a zone
-	// signing key (ZSK). Key signing keys have the Secure Entry Point flag
-	// set and, when active, will only be used to sign resource record sets
-	// of type DNSKEY. Zone signing keys do not have the Secure Entry Point
-	// flag set and will be used to sign all other types of resource record
-	// sets.
-	//
 	// Possible values:
 	//   "keySigning"
 	//   "zoneSigning"
@@ -475,10 +390,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKeysListResponse: The response to a request to enumerate DnsKeys
-// in a ManagedZone.
 type DnsKeysListResponse struct {
-	// DnsKeys: The requested resources.
 	DnsKeys []*DnsKey `json:"dnsKeys,omitempty"`
 
 	Header *ResponseHeader `json:"header,omitempty"`
@@ -486,17 +398,6 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a "snapshot" of collections
-	// larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -526,65 +427,33 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ManagedZone: A zone is a subtree of the DNS namespace under one
-// administrative responsibility. A ManagedZone is a resource that
-// represents a DNS zone hosted by the Cloud DNS service.
 type ManagedZone struct {
-	// CreationTime: The time that this resource was created on the server.
-	// This is in RFC3339 text format. Output only.
 	CreationTime string `json:"creationTime,omitempty"`
 
-	// Description: A mutable string of at most 1024 characters associated
-	// with this resource for the user's convenience. Has no effect on the
-	// managed zone's function.
 	Description string `json:"description,omitempty"`
 
-	// DnsName: The DNS name of this managed zone, for instance
-	// "example.com.".
 	DnsName string `json:"dnsName,omitempty"`
 
-	// DnssecConfig: DNSSEC configuration.
 	DnssecConfig *ManagedZoneDnsSecConfig `json:"dnssecConfig,omitempty"`
 
-	// ForwardingConfig: The presence for this field indicates that outbound
-	// forwarding is enabled for this zone. The value of this field contains
-	// the set of destinations to forward to.
 	ForwardingConfig *ManagedZoneForwardingConfig `json:"forwardingConfig,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only)
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#managedZone".
 	Kind string `json:"kind,omitempty"`
 
-	// Labels: User labels.
 	Labels map[string]string `json:"labels,omitempty"`
 
-	// Name: User assigned name for this resource. Must be unique within the
-	// project. The name must be 1-63 characters long, must begin with a
-	// letter, end with a letter or digit, and only contain lowercase
-	// letters, digits or dashes.
 	Name string `json:"name,omitempty"`
 
-	// NameServerSet: Optionally specifies the NameServerSet for this
-	// ManagedZone. A NameServerSet is a set of DNS name servers that all
-	// host the same ManagedZones. Most users will leave this field unset.
 	NameServerSet string `json:"nameServerSet,omitempty"`
 
-	// NameServers: Delegate your managed_zone to these virtual name
-	// servers; defined by the server (output only)
 	NameServers []string `json:"nameServers,omitempty"`
 
-	// PrivateVisibilityConfig: For privately visible zones, the set of
-	// Virtual Private Cloud resources that the zone is visible from.
 	PrivateVisibilityConfig *ManagedZonePrivateVisibilityConfig `json:"privateVisibilityConfig,omitempty"`
 
-	// Visibility: The zone's visibility: public zones are exposed to the
-	// Internet, while private zones are visible only to Virtual Private
-	// Cloud resources.
-	//
 	// Possible values:
 	//   "private"
 	//   "public"
@@ -618,25 +487,17 @@
 }
 
 type ManagedZoneDnsSecConfig struct {
-	// DefaultKeySpecs: Specifies parameters that will be used for
-	// generating initial DnsKeys for this ManagedZone. Output only while
-	// state is not OFF.
 	DefaultKeySpecs []*DnsKeySpec `json:"defaultKeySpecs,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#managedZoneDnsSecConfig".
 	Kind string `json:"kind,omitempty"`
 
-	// NonExistence: Specifies the mechanism used to provide authenticated
-	// denial-of-existence responses. Output only while state is not OFF.
-	//
 	// Possible values:
 	//   "nsec"
 	//   "nsec3"
 	NonExistence string `json:"nonExistence,omitempty"`
 
-	// State: Specifies whether DNSSEC is enabled, and what mode it is in.
-	//
 	// Possible values:
 	//   "off"
 	//   "on"
@@ -672,9 +533,6 @@
 	// string "dns#managedZoneForwardingConfig".
 	Kind string `json:"kind,omitempty"`
 
-	// TargetNameServers: List of target name servers to forward to. Cloud
-	// DNS will select the best available name server if more than one
-	// target is given.
 	TargetNameServers []*ManagedZoneForwardingConfigNameServerTarget `json:"targetNameServers,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -701,7 +559,6 @@
 }
 
 type ManagedZoneForwardingConfigNameServerTarget struct {
-	// Ipv4Address: IPv4 address of a target name server.
 	Ipv4Address string `json:"ipv4Address,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
@@ -737,20 +594,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// page token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// Operations: The operation resources.
 	Operations []*Operation `json:"operations,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -785,7 +630,6 @@
 	// string "dns#managedZonePrivateVisibilityConfig".
 	Kind string `json:"kind,omitempty"`
 
-	// Networks: The list of VPC networks that can see this zone.
 	Networks []*ManagedZonePrivateVisibilityConfigNetwork `json:"networks,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -816,9 +660,6 @@
 	// string "dns#managedZonePrivateVisibilityConfigNetwork".
 	Kind string `json:"kind,omitempty"`
 
-	// NetworkUrl: The fully qualified URL of the VPC network to bind to.
-	// This should be formatted like
-	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
 	NetworkUrl string `json:"networkUrl,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -850,20 +691,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// ManagedZones: The managed zone resources.
 	ManagedZones []*ManagedZone `json:"managedZones,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// page token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -893,52 +722,26 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Operation: An operation represents a successful mutation performed on
-// a Cloud DNS resource. Operations provide: - An audit log of server
-// resource mutations. - A way to recover/retry API calls in the case
-// where the response is never received by the caller. Use the caller
-// specified client_operation_id.
 type Operation struct {
-	// DnsKeyContext: Only populated if the operation targeted a DnsKey
-	// (output only).
 	DnsKeyContext *OperationDnsKeyContext `json:"dnsKeyContext,omitempty"`
 
-	// Id: Unique identifier for the resource. This is the
-	// client_operation_id if the client specified it when the mutation was
-	// initiated, otherwise, it is generated by the server. The name must be
-	// 1-63 characters long and match the regular expression [-a-z0-9]?
-	// (output only)
 	Id string `json:"id,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#operation".
 	Kind string `json:"kind,omitempty"`
 
-	// StartTime: The time that this operation was started by the server.
-	// This is in RFC3339 text format (output only).
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation. Can be one of the following:
-	// "PENDING" or "DONE" (output only). A status of "DONE" means that the
-	// request to update the authoritative servers has been sent, but the
-	// servers might not be updated yet.
-	//
 	// Possible values:
 	//   "done"
 	//   "pending"
 	Status string `json:"status,omitempty"`
 
-	// Type: Type of the operation. Operations include insert, update, and
-	// delete (output only).
 	Type string `json:"type,omitempty"`
 
-	// User: User who requested the operation, for example:
-	// user@example.com. cloud-dns-system for operations automatically done
-	// by the system. (output only)
 	User string `json:"user,omitempty"`
 
-	// ZoneContext: Only populated if the operation targeted a ManagedZone
-	// (output only).
 	ZoneContext *OperationManagedZoneContext `json:"zoneContext,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -969,10 +772,8 @@
 }
 
 type OperationDnsKeyContext struct {
-	// NewValue: The post-operation DnsKey resource.
 	NewValue *DnsKey `json:"newValue,omitempty"`
 
-	// OldValue: The pre-operation DnsKey resource.
 	OldValue *DnsKey `json:"oldValue,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "NewValue") to
@@ -999,10 +800,8 @@
 }
 
 type OperationManagedZoneContext struct {
-	// NewValue: The post-operation ManagedZone resource.
 	NewValue *ManagedZone `json:"newValue,omitempty"`
 
-	// OldValue: The pre-operation ManagedZone resource.
 	OldValue *ManagedZone `json:"oldValue,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "NewValue") to
@@ -1034,20 +833,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// page token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// Policies: The policy resources.
 	Policies []*Policy `json:"policies,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1141,39 +928,21 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Policy: A policy is a collection of DNS rules applied to one or more
-// Virtual Private Cloud resources.
 type Policy struct {
-	// AlternativeNameServerConfig: Sets an alternative name server for the
-	// associated networks. When specified, all DNS queries are forwarded to
-	// a name server that you choose. Names such as .internal are not
-	// available when an alternative name server is specified.
 	AlternativeNameServerConfig *PolicyAlternativeNameServerConfig `json:"alternativeNameServerConfig,omitempty"`
 
-	// Description: A mutable string of at most 1024 characters associated
-	// with this resource for the user's convenience. Has no effect on the
-	// policy's function.
 	Description string `json:"description,omitempty"`
 
-	// EnableInboundForwarding: Allows networks bound to this policy to
-	// receive DNS queries sent by VMs or applications over VPN connections.
-	// When enabled, a virtual IP address will be allocated from each of the
-	// sub-networks that are bound to this policy.
 	EnableInboundForwarding bool `json:"enableInboundForwarding,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only).
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#policy".
 	Kind string `json:"kind,omitempty"`
 
-	// Name: User assigned name for this policy.
 	Name string `json:"name,omitempty"`
 
-	// Networks: List of network names specifying networks to which this
-	// policy is applied.
 	Networks []*PolicyNetwork `json:"networks,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1210,10 +979,6 @@
 	// string "dns#policyAlternativeNameServerConfig".
 	Kind string `json:"kind,omitempty"`
 
-	// TargetNameServers: Sets an alternative name server for the associated
-	// networks. When specified, all DNS queries are forwarded to a name
-	// server that you choose. Names such as .internal are not available
-	// when an alternative name server is specified.
 	TargetNameServers []*PolicyAlternativeNameServerConfigTargetNameServer `json:"targetNameServers,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -1240,7 +1005,6 @@
 }
 
 type PolicyAlternativeNameServerConfigTargetNameServer struct {
-	// Ipv4Address: IPv4 address to forward to.
 	Ipv4Address string `json:"ipv4Address,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
@@ -1275,9 +1039,6 @@
 	// string "dns#policyNetwork".
 	Kind string `json:"kind,omitempty"`
 
-	// NetworkUrl: The fully qualified URL of the VPC network to bind to.
-	// This should be formatted like
-	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
 	NetworkUrl string `json:"networkUrl,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -1303,22 +1064,15 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Project: A project resource. The project is a top level container for
-// resources including Cloud DNS ManagedZones. Projects can be created
-// only in the APIs console.
 type Project struct {
-	// Id: User assigned unique identifier for the resource (output only).
 	Id string `json:"id,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#project".
 	Kind string `json:"kind,omitempty"`
 
-	// Number: Unique numeric identifier for the resource; defined by the
-	// server (output only).
 	Number uint64 `json:"number,omitempty,string"`
 
-	// Quota: Quotas assigned to this project (output only).
 	Quota *Quota `json:"quota,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1348,63 +1102,37 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Quota: Limits associated with a Project.
 type Quota struct {
-	// DnsKeysPerManagedZone: Maximum allowed number of DnsKeys per
-	// ManagedZone.
 	DnsKeysPerManagedZone int64 `json:"dnsKeysPerManagedZone,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#quota".
 	Kind string `json:"kind,omitempty"`
 
-	// ManagedZones: Maximum allowed number of managed zones in the project.
 	ManagedZones int64 `json:"managedZones,omitempty"`
 
-	// ManagedZonesPerNetwork: Maximum allowed number of managed zones which
-	// can be attached to a network.
 	ManagedZonesPerNetwork int64 `json:"managedZonesPerNetwork,omitempty"`
 
-	// NetworksPerManagedZone: Maximum allowed number of networks to which a
-	// privately scoped zone can be attached.
 	NetworksPerManagedZone int64 `json:"networksPerManagedZone,omitempty"`
 
-	// NetworksPerPolicy: Maximum allowed number of networks per policy.
 	NetworksPerPolicy int64 `json:"networksPerPolicy,omitempty"`
 
-	// Policies: Maximum allowed number of policies per project.
 	Policies int64 `json:"policies,omitempty"`
 
-	// ResourceRecordsPerRrset: Maximum allowed number of ResourceRecords
-	// per ResourceRecordSet.
 	ResourceRecordsPerRrset int64 `json:"resourceRecordsPerRrset,omitempty"`
 
-	// RrsetAdditionsPerChange: Maximum allowed number of ResourceRecordSets
-	// to add per ChangesCreateRequest.
 	RrsetAdditionsPerChange int64 `json:"rrsetAdditionsPerChange,omitempty"`
 
-	// RrsetDeletionsPerChange: Maximum allowed number of ResourceRecordSets
-	// to delete per ChangesCreateRequest.
 	RrsetDeletionsPerChange int64 `json:"rrsetDeletionsPerChange,omitempty"`
 
-	// RrsetsPerManagedZone: Maximum allowed number of ResourceRecordSets
-	// per zone in the project.
 	RrsetsPerManagedZone int64 `json:"rrsetsPerManagedZone,omitempty"`
 
-	// TargetNameServersPerManagedZone: Maximum allowed number of target
-	// name servers per managed forwarding zone.
 	TargetNameServersPerManagedZone int64 `json:"targetNameServersPerManagedZone,omitempty"`
 
-	// TargetNameServersPerPolicy: Maximum allowed number of alternative
-	// target name servers per policy.
 	TargetNameServersPerPolicy int64 `json:"targetNameServersPerPolicy,omitempty"`
 
-	// TotalRrdataSizePerChange: Maximum allowed size for total rrdata in
-	// one ChangesCreateRequest in bytes.
 	TotalRrdataSizePerChange int64 `json:"totalRrdataSizePerChange,omitempty"`
 
-	// WhitelistedKeySpecs: DNSSEC algorithm and key length types that can
-	// be used for DnsKeys.
 	WhitelistedKeySpecs []*DnsKeySpec `json:"whitelistedKeySpecs,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g.
@@ -1432,29 +1160,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ResourceRecordSet: A unit of data that will be returned by the DNS
-// servers.
 type ResourceRecordSet struct {
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#resourceRecordSet".
 	Kind string `json:"kind,omitempty"`
 
-	// Name: For example, www.example.com.
 	Name string `json:"name,omitempty"`
 
-	// Rrdatas: As defined in RFC 1035 (section 5) and RFC 1034 (section
-	// 3.6.1).
 	Rrdatas []string `json:"rrdatas,omitempty"`
 
-	// SignatureRrdatas: As defined in RFC 4034 (section 3.2).
 	SignatureRrdatas []string `json:"signatureRrdatas,omitempty"`
 
-	// Ttl: Number of seconds that this ResourceRecordSet can be cached by
-	// resolvers.
 	Ttl int64 `json:"ttl,omitempty"`
 
-	// Type: The identifier of a supported record type. See the list of
-	// Supported DNS record types.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -1486,20 +1204,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// Rrsets: The resource record set resources.
 	Rrsets []*ResourceRecordSet `json:"rrsets,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1529,11 +1235,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ResponseHeader: Elements common to every response.
 type ResponseHeader struct {
-	// OperationId: For mutating operation requests that completed
-	// successfully. This is the client_operation_id if the client specified
-	// it, otherwise it is generated by the server (output only).
 	OperationId string `json:"operationId,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "OperationId") to
@@ -1571,7 +1273,7 @@
 	header_     http.Header
 }
 
-// Create: Atomically update the ResourceRecordSet collection.
+// Create:
 func (r *ChangesService) Create(project string, managedZone string, change *Change) *ChangesCreateCall {
 	c := &ChangesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1581,9 +1283,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ChangesCreateCall) ClientOperationId(clientOperationId string) *ChangesCreateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -1680,7 +1379,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Atomically update the ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "POST",
 	//   "id": "dns.changes.create",
 	//   "parameterOrder": [
@@ -1689,18 +1388,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1734,7 +1430,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Change.
+// Get:
 func (r *ChangesService) Get(project string, managedZone string, changeId string) *ChangesGetCall {
 	c := &ChangesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1744,9 +1440,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ChangesGetCall) ClientOperationId(clientOperationId string) *ChangesGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -1852,7 +1545,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Change.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.changes.get",
 	//   "parameterOrder": [
@@ -1862,24 +1555,20 @@
 	//   ],
 	//   "parameters": {
 	//     "changeId": {
-	//       "description": "The identifier of the requested change, from a previous ResourceRecordSetsChangeResponse.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1911,7 +1600,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate Changes to a ResourceRecordSet collection.
+// List:
 func (r *ChangesService) List(project string, managedZone string) *ChangesListCall {
 	c := &ChangesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1919,24 +1608,19 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ChangesListCall) MaxResults(maxResults int64) *ChangesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ChangesListCall) PageToken(pageToken string) *ChangesListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// SortBy sets the optional parameter "sortBy": Sorting criterion. The
-// only supported value is change sequence.
+// SortBy sets the optional parameter "sortBy":
 //
 // Possible values:
 //   "changeSequence" (default)
@@ -1945,8 +1629,7 @@
 	return c
 }
 
-// SortOrder sets the optional parameter "sortOrder": Sorting order
-// direction: 'ascending' or 'descending'.
+// SortOrder sets the optional parameter "sortOrder":
 func (c *ChangesListCall) SortOrder(sortOrder string) *ChangesListCall {
 	c.urlParams_.Set("sortOrder", sortOrder)
 	return c
@@ -2051,7 +1734,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate Changes to a ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.changes.list",
 	//   "parameterOrder": [
@@ -2060,31 +1743,26 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "sortBy": {
 	//       "default": "changeSequence",
-	//       "description": "Sorting criterion. The only supported value is change sequence.",
 	//       "enum": [
 	//         "changeSequence"
 	//       ],
@@ -2095,7 +1773,6 @@
 	//       "type": "string"
 	//     },
 	//     "sortOrder": {
-	//       "description": "Sorting order direction: 'ascending' or 'descending'.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
@@ -2148,7 +1825,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing DnsKey.
+// Get:
 func (r *DnsKeysService) Get(project string, managedZone string, dnsKeyId string) *DnsKeysGetCall {
 	c := &DnsKeysGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2158,18 +1835,12 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *DnsKeysGetCall) ClientOperationId(clientOperationId string) *DnsKeysGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
 }
 
-// DigestType sets the optional parameter "digestType": An optional
-// comma-separated list of digest types to compute and display for key
-// signing keys. If omitted, the recommended digest type will be
-// computed and displayed.
+// DigestType sets the optional parameter "digestType":
 func (c *DnsKeysGetCall) DigestType(digestType string) *DnsKeysGetCall {
 	c.urlParams_.Set("digestType", digestType)
 	return c
@@ -2275,7 +1946,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing DnsKey.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.dnsKeys.get",
 	//   "parameterOrder": [
@@ -2285,29 +1956,24 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "digestType": {
-	//       "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "dnsKeyId": {
-	//       "description": "The identifier of the requested DnsKey.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2339,7 +2005,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate DnsKeys to a ResourceRecordSet collection.
+// List:
 func (r *DnsKeysService) List(project string, managedZone string) *DnsKeysListCall {
 	c := &DnsKeysListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2347,26 +2013,19 @@
 	return c
 }
 
-// DigestType sets the optional parameter "digestType": An optional
-// comma-separated list of digest types to compute and display for key
-// signing keys. If omitted, the recommended digest type will be
-// computed and displayed.
+// DigestType sets the optional parameter "digestType":
 func (c *DnsKeysListCall) DigestType(digestType string) *DnsKeysListCall {
 	c.urlParams_.Set("digestType", digestType)
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *DnsKeysListCall) MaxResults(maxResults int64) *DnsKeysListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *DnsKeysListCall) PageToken(pageToken string) *DnsKeysListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
@@ -2471,7 +2130,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate DnsKeys to a ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.dnsKeys.list",
 	//   "parameterOrder": [
@@ -2480,29 +2139,24 @@
 	//   ],
 	//   "parameters": {
 	//     "digestType": {
-	//       "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2556,7 +2210,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Operation.
+// Get:
 func (r *ManagedZoneOperationsService) Get(project string, managedZone string, operation string) *ManagedZoneOperationsGetCall {
 	c := &ManagedZoneOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2566,9 +2220,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZoneOperationsGetCall) ClientOperationId(clientOperationId string) *ManagedZoneOperationsGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2674,7 +2325,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Operation.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZoneOperations.get",
 	//   "parameterOrder": [
@@ -2684,24 +2335,20 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "operation": {
-	//       "description": "Identifies the operation addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2733,7 +2380,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate Operations for the given ManagedZone.
+// List:
 func (r *ManagedZoneOperationsService) List(project string, managedZone string) *ManagedZoneOperationsListCall {
 	c := &ManagedZoneOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2741,24 +2388,19 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ManagedZoneOperationsListCall) MaxResults(maxResults int64) *ManagedZoneOperationsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ManagedZoneOperationsListCall) PageToken(pageToken string) *ManagedZoneOperationsListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// SortBy sets the optional parameter "sortBy": Sorting criterion. The
-// only supported values are START_TIME and ID.
+// SortBy sets the optional parameter "sortBy":
 //
 // Possible values:
 //   "id"
@@ -2868,7 +2510,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate Operations for the given ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZoneOperations.list",
 	//   "parameterOrder": [
@@ -2877,31 +2519,26 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "sortBy": {
 	//       "default": "startTime",
-	//       "description": "Sorting criterion. The only supported values are START_TIME and ID.",
 	//       "enum": [
 	//         "id",
 	//         "startTime"
@@ -2960,7 +2597,7 @@
 	header_     http.Header
 }
 
-// Create: Create a new ManagedZone.
+// Create:
 func (r *ManagedZonesService) Create(project string, managedzone *ManagedZone) *ManagedZonesCreateCall {
 	c := &ManagedZonesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2969,9 +2606,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesCreateCall) ClientOperationId(clientOperationId string) *ManagedZonesCreateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3067,7 +2701,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Create a new ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "POST",
 	//   "id": "dns.managedZones.create",
 	//   "parameterOrder": [
@@ -3075,12 +2709,10 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3112,7 +2744,7 @@
 	header_     http.Header
 }
 
-// Delete: Delete a previously created ManagedZone.
+// Delete:
 func (r *ManagedZonesService) Delete(project string, managedZone string) *ManagedZonesDeleteCall {
 	c := &ManagedZonesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3121,9 +2753,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesDeleteCall) ClientOperationId(clientOperationId string) *ManagedZonesDeleteCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3190,7 +2819,7 @@
 	}
 	return nil
 	// {
-	//   "description": "Delete a previously created ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "DELETE",
 	//   "id": "dns.managedZones.delete",
 	//   "parameterOrder": [
@@ -3199,18 +2828,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3237,7 +2863,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing ManagedZone.
+// Get:
 func (r *ManagedZonesService) Get(project string, managedZone string) *ManagedZonesGetCall {
 	c := &ManagedZonesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3246,9 +2872,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesGetCall) ClientOperationId(clientOperationId string) *ManagedZonesGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3353,7 +2976,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZones.get",
 	//   "parameterOrder": [
@@ -3362,18 +2985,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3404,32 +3024,26 @@
 	header_      http.Header
 }
 
-// List: Enumerate ManagedZones that have been created but not yet
-// deleted.
+// List:
 func (r *ManagedZonesService) List(project string) *ManagedZonesListCall {
 	c := &ManagedZonesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
 	return c
 }
 
-// DnsName sets the optional parameter "dnsName": Restricts the list to
-// return only zones with this domain name.
+// DnsName sets the optional parameter "dnsName":
 func (c *ManagedZonesListCall) DnsName(dnsName string) *ManagedZonesListCall {
 	c.urlParams_.Set("dnsName", dnsName)
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ManagedZonesListCall) MaxResults(maxResults int64) *ManagedZonesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ManagedZonesListCall) PageToken(pageToken string) *ManagedZonesListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
@@ -3533,7 +3147,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate ManagedZones that have been created but not yet deleted.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZones.list",
 	//   "parameterOrder": [
@@ -3541,23 +3155,19 @@
 	//   ],
 	//   "parameters": {
 	//     "dnsName": {
-	//       "description": "Restricts the list to return only zones with this domain name.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3610,7 +3220,7 @@
 	header_     http.Header
 }
 
-// Patch: Apply a partial update to an existing ManagedZone.
+// Patch:
 func (r *ManagedZonesService) Patch(project string, managedZone string, managedzone *ManagedZone) *ManagedZonesPatchCall {
 	c := &ManagedZonesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3620,9 +3230,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesPatchCall) ClientOperationId(clientOperationId string) *ManagedZonesPatchCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3719,7 +3326,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Apply a partial update to an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "PATCH",
 	//   "id": "dns.managedZones.patch",
 	//   "parameterOrder": [
@@ -3728,18 +3335,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3772,7 +3376,7 @@
 	header_     http.Header
 }
 
-// Update: Update an existing ManagedZone.
+// Update:
 func (r *ManagedZonesService) Update(project string, managedZone string, managedzone *ManagedZone) *ManagedZonesUpdateCall {
 	c := &ManagedZonesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3782,9 +3386,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesUpdateCall) ClientOperationId(clientOperationId string) *ManagedZonesUpdateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3881,7 +3482,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "PUT",
 	//   "id": "dns.managedZones.update",
 	//   "parameterOrder": [
@@ -3890,18 +3491,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3933,7 +3531,7 @@
 	header_    http.Header
 }
 
-// Create: Create a new Policy
+// Create:
 func (r *PoliciesService) Create(project string, policy *Policy) *PoliciesCreateCall {
 	c := &PoliciesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3942,9 +3540,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *PoliciesCreateCall) ClientOperationId(clientOperationId string) *PoliciesCreateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -4040,7 +3635,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Create a new Policy",
+	//   "description": "",
 	//   "httpMethod": "POST",
 	//   "id": "dns.policies.create",
 	//   "parameterOrder": [
@@ -4048,12 +3643,10 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -4085,8 +3678,7 @@
 	header_    http.Header
 }
 
-// Delete: Delete a previously created Policy. Will fail if the policy
-// is still being referenced by a network.
+// Delete:
 func (r *PoliciesService) Delete(project string, policy string) *PoliciesDeleteCall {
 	c := &PoliciesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -4095,9 +3687,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *PoliciesDeleteCall) ClientOperationId(clientOperationId string) *PoliciesDeleteCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -4164,7 +3753,7 @@
 	}
 	return nil
 	// {
-	//   "description": "Delete a previously created Policy. Will fail if the policy is still being referenced by a network.",
+	//   "description": "",
 	//   "httpMethod": "DELETE",
 	//   "id": "dns.policies.delete",
 	//   "parameterOrder": [
@@ -4173,18 +3762,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "policy": {
-	//       "description": "User given friendly name of the policy addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -4211,7 +3797,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Policy.
+// Get:
 func (r *PoliciesService) Get(project string, policy string) *PoliciesGetCall {
 	c := &PoliciesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -4220,9 +3806,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *PoliciesGetCall) ClientOperationId(clientOperationId string) *PoliciesGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -4327,7 +3910,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Policy.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.policies.get",
 	//   "parameterOrder": [
@@ -4336,18 +3919,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "policy": {
-	//       "description": "User given friendly name of the policy addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -4378,24 +3958,20 @@
 	header_      http.Header
 }
 
-// List: Enumerate all Policies associated with a project.
+// List:
 func (r *PoliciesService) List(project string) *PoliciesListCall {
 	c := &PoliciesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *PoliciesListCall) MaxResults(maxResults int64) *PoliciesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *PoliciesListCall) PageToken(pageToken string) *PoliciesListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
@@ -4499,7 +4075,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate all Policies associated with a project.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.policies.list",
 	//   "parameterOrder": [
@@ -4507,18 +4083,15 @@
 	//   ],
 	//   "parameters": {
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -4571,7 +4144,7 @@
 	header_    http.Header
 }
 
-// Patch: Apply a partial update to an existing Policy.
+// Patch:
 func (r *PoliciesService) Patch(project string, policy string, policy2 *Policy) *PoliciesPatchCall {
 	c := &PoliciesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -4581,9 +4154,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *PoliciesPatchCall) ClientOperationId(clientOperationId string) *PoliciesPatchCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -4680,7 +4250,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Apply a partial update to an existing Policy.",
+	//   "description": "",
 	//   "httpMethod": "PATCH",
 	//   "id": "dns.policies.patch",
 	//   "parameterOrder": [
@@ -4689,18 +4259,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "policy": {
-	//       "description": "User given friendly name of the policy addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -4733,7 +4300,7 @@
 	header_    http.Header
 }
 
-// Update: Update an existing Policy.
+// Update:
 func (r *PoliciesService) Update(project string, policy string, policy2 *Policy) *PoliciesUpdateCall {
 	c := &PoliciesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -4743,9 +4310,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *PoliciesUpdateCall) ClientOperationId(clientOperationId string) *PoliciesUpdateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -4842,7 +4406,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update an existing Policy.",
+	//   "description": "",
 	//   "httpMethod": "PUT",
 	//   "id": "dns.policies.update",
 	//   "parameterOrder": [
@@ -4851,18 +4415,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "policy": {
-	//       "description": "User given friendly name of the policy addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -4894,7 +4455,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Project.
+// Get:
 func (r *ProjectsService) Get(project string) *ProjectsGetCall {
 	c := &ProjectsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -4902,9 +4463,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ProjectsGetCall) ClientOperationId(clientOperationId string) *ProjectsGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -5008,7 +4566,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Project.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.projects.get",
 	//   "parameterOrder": [
@@ -5016,12 +4574,10 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -5053,8 +4609,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate ResourceRecordSets that have been created but not yet
-// deleted.
+// List:
 func (r *ResourceRecordSetsService) List(project string, managedZone string) *ResourceRecordSetsListCall {
 	c := &ResourceRecordSetsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -5062,32 +4617,25 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ResourceRecordSetsListCall) MaxResults(maxResults int64) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// Name sets the optional parameter "name": Restricts the list to return
-// only records with this fully qualified domain name.
+// Name sets the optional parameter "name":
 func (c *ResourceRecordSetsListCall) Name(name string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("name", name)
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ResourceRecordSetsListCall) PageToken(pageToken string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// Type sets the optional parameter "type": Restricts the list to return
-// only records of this type. If present, the "name" parameter must also
-// be present.
+// Type sets the optional parameter "type":
 func (c *ResourceRecordSetsListCall) Type(type_ string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("type", type_)
 	return c
@@ -5192,7 +4740,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate ResourceRecordSets that have been created but not yet deleted.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.resourceRecordSets.list",
 	//   "parameterOrder": [
@@ -5201,35 +4749,29 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "name": {
-	//       "description": "Restricts the list to return only records with this fully qualified domain name.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "type": {
-	//       "description": "Restricts the list to return only records of this type. If present, the \"name\" parameter must also be present.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
diff --git a/dns/v2beta1/dns-api.json b/dns/v2beta1/dns-api.json
index 209981d..ce86a5e 100644
--- a/dns/v2beta1/dns-api.json
+++ b/dns/v2beta1/dns-api.json
@@ -23,7 +23,7 @@
   "description": "Configures and serves authoritative DNS records.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/cloud-dns",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/B58K3fGkavOYnobUJPY2oNVE3HA\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/KQEkH0T9Md8P_ZZRj3t0bhQ1ahU\"",
   "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"
@@ -83,7 +83,7 @@
     "changes": {
       "methods": {
         "create": {
-          "description": "Atomically update the ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "POST",
           "id": "dns.changes.create",
           "parameterOrder": [
@@ -92,18 +92,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -122,7 +119,7 @@
           ]
         },
         "get": {
-          "description": "Fetch the representation of an existing Change.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.changes.get",
           "parameterOrder": [
@@ -132,24 +129,20 @@
           ],
           "parameters": {
             "changeId": {
-              "description": "The identifier of the requested change, from a previous ResourceRecordSetsChangeResponse.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -167,7 +160,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate Changes to a ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.changes.list",
           "parameterOrder": [
@@ -176,31 +169,26 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "sortBy": {
               "default": "CHANGE_SEQUENCE",
-              "description": "Sorting criterion. The only supported value is change sequence.",
               "enum": [
                 "CHANGE_SEQUENCE"
               ],
@@ -211,7 +199,6 @@
               "type": "string"
             },
             "sortOrder": {
-              "description": "Sorting order direction: 'ascending' or 'descending'.",
               "location": "query",
               "type": "string"
             }
@@ -232,7 +219,7 @@
     "dnsKeys": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing DnsKey.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.dnsKeys.get",
           "parameterOrder": [
@@ -242,29 +229,24 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "digestType": {
-              "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
               "location": "query",
               "type": "string"
             },
             "dnsKeyId": {
-              "description": "The identifier of the requested DnsKey.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -282,7 +264,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate DnsKeys to a ResourceRecordSet collection.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.dnsKeys.list",
           "parameterOrder": [
@@ -291,29 +273,24 @@
           ],
           "parameters": {
             "digestType": {
-              "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -335,7 +312,7 @@
     "managedZoneOperations": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing Operation.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZoneOperations.get",
           "parameterOrder": [
@@ -345,24 +322,20 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "operation": {
-              "description": "Identifies the operation addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -380,7 +353,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate Operations for the given ManagedZone.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZoneOperations.list",
           "parameterOrder": [
@@ -389,31 +362,26 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "sortBy": {
               "default": "START_TIME",
-              "description": "Sorting criterion. The only supported values are START_TIME and ID.",
               "enum": [
                 "ID",
                 "START_TIME"
@@ -442,7 +410,7 @@
     "managedZones": {
       "methods": {
         "create": {
-          "description": "Create a new ManagedZone.",
+          "description": "",
           "httpMethod": "POST",
           "id": "dns.managedZones.create",
           "parameterOrder": [
@@ -450,12 +418,10 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -474,7 +440,7 @@
           ]
         },
         "delete": {
-          "description": "Delete a previously created ManagedZone.",
+          "description": "",
           "httpMethod": "DELETE",
           "id": "dns.managedZones.delete",
           "parameterOrder": [
@@ -483,18 +449,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -507,7 +470,7 @@
           ]
         },
         "get": {
-          "description": "Fetch the representation of an existing ManagedZone.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZones.get",
           "parameterOrder": [
@@ -516,18 +479,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -545,7 +505,7 @@
           ]
         },
         "list": {
-          "description": "Enumerate ManagedZones that have been created but not yet deleted.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.managedZones.list",
           "parameterOrder": [
@@ -553,23 +513,19 @@
           ],
           "parameters": {
             "dnsName": {
-              "description": "Restricts the list to return only zones with this domain name.",
               "location": "query",
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -587,7 +543,7 @@
           ]
         },
         "patch": {
-          "description": "Apply a partial update to an existing ManagedZone.",
+          "description": "",
           "httpMethod": "PATCH",
           "id": "dns.managedZones.patch",
           "parameterOrder": [
@@ -596,18 +552,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -626,7 +579,7 @@
           ]
         },
         "update": {
-          "description": "Update an existing ManagedZone.",
+          "description": "",
           "httpMethod": "PUT",
           "id": "dns.managedZones.update",
           "parameterOrder": [
@@ -635,18 +588,15 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -669,7 +619,7 @@
     "projects": {
       "methods": {
         "get": {
-          "description": "Fetch the representation of an existing Project.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.projects.get",
           "parameterOrder": [
@@ -677,12 +627,10 @@
           ],
           "parameters": {
             "clientOperationId": {
-              "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
@@ -704,7 +652,7 @@
     "resourceRecordSets": {
       "methods": {
         "list": {
-          "description": "Enumerate ResourceRecordSets that have been created but not yet deleted.",
+          "description": "",
           "httpMethod": "GET",
           "id": "dns.resourceRecordSets.list",
           "parameterOrder": [
@@ -713,35 +661,29 @@
           ],
           "parameters": {
             "managedZone": {
-              "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "maxResults": {
-              "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
               "format": "int32",
               "location": "query",
               "type": "integer"
             },
             "name": {
-              "description": "Restricts the list to return only records with this fully qualified domain name.",
               "location": "query",
               "type": "string"
             },
             "pageToken": {
-              "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
               "location": "query",
               "type": "string"
             },
             "project": {
-              "description": "Identifies the project addressed by this request.",
               "location": "path",
               "required": true,
               "type": "string"
             },
             "type": {
-              "description": "Restricts the list to return only records of this type. If present, the \"name\" parameter must also be present.",
               "location": "query",
               "type": "string"
             }
@@ -760,33 +702,28 @@
       }
     }
   },
-  "revision": "20181212",
+  "revision": "20190213",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Change": {
-      "description": "A Change represents a set of ResourceRecordSet additions and deletions applied atomically to a ManagedZone. ResourceRecordSets within a ManagedZone are modified by creating a new Change element in the Changes collection. In turn the Changes collection also records the past modifications to the ResourceRecordSets in a ManagedZone. The current state of the ManagedZone is the sum effect of applying all Change elements in the Changes collection in sequence.",
       "id": "Change",
       "properties": {
         "additions": {
-          "description": "Which ResourceRecordSets to add?",
           "items": {
             "$ref": "ResourceRecordSet"
           },
           "type": "array"
         },
         "deletions": {
-          "description": "Which ResourceRecordSets to remove? Must match existing data exactly.",
           "items": {
             "$ref": "ResourceRecordSet"
           },
           "type": "array"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only).",
           "type": "string"
         },
         "isServing": {
-          "description": "If the DNS queries for the zone will be served.",
           "type": "boolean"
         },
         "kind": {
@@ -795,11 +732,9 @@
           "type": "string"
         },
         "startTime": {
-          "description": "The time that this operation was started by the server (output only). This is in RFC3339 text format.",
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "DONE",
             "PENDING"
@@ -814,11 +749,9 @@
       "type": "object"
     },
     "ChangesListResponse": {
-      "description": "The response to a request to enumerate Changes to a ResourceRecordSets collection.",
       "id": "ChangesListResponse",
       "properties": {
         "changes": {
-          "description": "The requested changes.",
           "items": {
             "$ref": "Change"
           },
@@ -833,18 +766,15 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a \"snapshot\" of collections larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "DnsKey": {
-      "description": "A DNSSEC key pair.",
       "id": "DnsKey",
       "properties": {
         "algorithm": {
-          "description": "String mnemonic specifying the DNSSEC algorithm of this key. Immutable after creation time.",
           "enum": [
             "ECDSAP256SHA256",
             "ECDSAP384SHA384",
@@ -862,35 +792,28 @@
           "type": "string"
         },
         "creationTime": {
-          "description": "The time that this resource was created in the control plane. This is in RFC3339 text format. Output only.",
           "type": "string"
         },
         "description": {
-          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the resource's function.",
           "type": "string"
         },
         "digests": {
-          "description": "Cryptographic hashes of the DNSKEY resource record associated with this DnsKey. These digests are needed to construct a DS record that points at this DNS key. Output only.",
           "items": {
             "$ref": "DnsKeyDigest"
           },
           "type": "array"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only).",
           "type": "string"
         },
         "isActive": {
-          "description": "Active keys will be used to sign subsequent changes to the ManagedZone. Inactive keys will still be present as DNSKEY Resource Records for the use of resolvers validating existing signatures.",
           "type": "boolean"
         },
         "keyLength": {
-          "description": "Length of the key in bits. Specified at creation time then immutable.",
           "format": "uint32",
           "type": "integer"
         },
         "keyTag": {
-          "description": "The key tag is a non-cryptographic hash of the a DNSKEY resource record associated with this DnsKey. The key tag can be used to identify a DNSKEY more quickly (but it is not a unique identifier). In particular, the key tag is used in a parent zone's DS record to point at the DNSKEY in this child ManagedZone. The key tag is a number in the range [0, 65535] and the algorithm to calculate it is specified in RFC4034 Appendix B. Output only.",
           "format": "int32",
           "type": "integer"
         },
@@ -900,11 +823,9 @@
           "type": "string"
         },
         "publicKey": {
-          "description": "Base64 encoded public half of this key. Output only.",
           "type": "string"
         },
         "type": {
-          "description": "One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types. Immutable after creation time.",
           "enum": [
             "KEY_SIGNING",
             "ZONE_SIGNING"
@@ -922,11 +843,9 @@
       "id": "DnsKeyDigest",
       "properties": {
         "digest": {
-          "description": "The base-16 encoded bytes of this digest. Suitable for use in a DS resource record.",
           "type": "string"
         },
         "type": {
-          "description": "Specifies the algorithm used to calculate this digest.",
           "enum": [
             "SHA1",
             "SHA256",
@@ -943,11 +862,9 @@
       "type": "object"
     },
     "DnsKeySpec": {
-      "description": "Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.",
       "id": "DnsKeySpec",
       "properties": {
         "algorithm": {
-          "description": "String mnemonic specifying the DNSSEC algorithm of this key.",
           "enum": [
             "ECDSAP256SHA256",
             "ECDSAP384SHA384",
@@ -965,12 +882,10 @@
           "type": "string"
         },
         "keyLength": {
-          "description": "Length of the keys in bits.",
           "format": "uint32",
           "type": "integer"
         },
         "keyType": {
-          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.",
           "enum": [
             "KEY_SIGNING",
             "ZONE_SIGNING"
@@ -990,11 +905,9 @@
       "type": "object"
     },
     "DnsKeysListResponse": {
-      "description": "The response to a request to enumerate DnsKeys in a ManagedZone.",
       "id": "DnsKeysListResponse",
       "properties": {
         "dnsKeys": {
-          "description": "The requested resources.",
           "items": {
             "$ref": "DnsKey"
           },
@@ -1009,34 +922,27 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a \"snapshot\" of collections larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "ManagedZone": {
-      "description": "A zone is a subtree of the DNS namespace under one administrative responsibility. A ManagedZone is a resource that represents a DNS zone hosted by the Cloud DNS service.",
       "id": "ManagedZone",
       "properties": {
         "creationTime": {
-          "description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only.",
           "type": "string"
         },
         "description": {
-          "description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function.",
           "type": "string"
         },
         "dnsName": {
-          "description": "The DNS name of this managed zone, for instance \"example.com.\".",
           "type": "string"
         },
         "dnssecConfig": {
-          "$ref": "ManagedZoneDnsSecConfig",
-          "description": "DNSSEC configuration."
+          "$ref": "ManagedZoneDnsSecConfig"
         },
         "id": {
-          "description": "Unique identifier for the resource; defined by the server (output only)",
           "format": "uint64",
           "type": "string"
         },
@@ -1049,19 +955,15 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "User labels.",
           "type": "object"
         },
         "name": {
-          "description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.",
           "type": "string"
         },
         "nameServerSet": {
-          "description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users will leave this field unset.",
           "type": "string"
         },
         "nameServers": {
-          "description": "Delegate your managed_zone to these virtual name servers; defined by the server (output only)",
           "items": {
             "type": "string"
           },
@@ -1074,7 +976,6 @@
       "id": "ManagedZoneDnsSecConfig",
       "properties": {
         "defaultKeySpecs": {
-          "description": "Specifies parameters that will be used for generating initial DnsKeys for this ManagedZone. Output only while state is not OFF.",
           "items": {
             "$ref": "DnsKeySpec"
           },
@@ -1086,7 +987,6 @@
           "type": "string"
         },
         "nonExistence": {
-          "description": "Specifies the mechanism used to provide authenticated denial-of-existence responses. Output only while state is not OFF.",
           "enum": [
             "NSEC",
             "NSEC3"
@@ -1098,7 +998,6 @@
           "type": "string"
         },
         "state": {
-          "description": "Specifies whether DNSSEC is enabled, and what mode it is in.",
           "enum": [
             "OFF",
             "ON",
@@ -1126,11 +1025,9 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         },
         "operations": {
-          "description": "The operation resources.",
           "items": {
             "$ref": "Operation"
           },
@@ -1151,29 +1048,24 @@
           "type": "string"
         },
         "managedZones": {
-          "description": "The managed zone resources.",
           "items": {
             "$ref": "ManagedZone"
           },
           "type": "array"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         }
       },
       "type": "object"
     },
     "Operation": {
-      "description": "An operation represents a successful mutation performed on a Cloud DNS resource. Operations provide: - An audit log of server resource mutations. - A way to recover/retry API calls in the case where the response is never received by the caller. Use the caller specified client_operation_id.",
       "id": "Operation",
       "properties": {
         "dnsKeyContext": {
-          "$ref": "OperationDnsKeyContext",
-          "description": "Only populated if the operation targeted a DnsKey (output only)."
+          "$ref": "OperationDnsKeyContext"
         },
         "id": {
-          "description": "Unique identifier for the resource. This is the client_operation_id if the client specified it when the mutation was initiated, otherwise, it is generated by the server. The name must be 1-63 characters long and match the regular expression [-a-z0-9]? (output only)",
           "type": "string"
         },
         "kind": {
@@ -1182,11 +1074,9 @@
           "type": "string"
         },
         "startTime": {
-          "description": "The time that this operation was started by the server. This is in RFC3339 text format (output only).",
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only). A status of \"DONE\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "DONE",
             "PENDING"
@@ -1198,16 +1088,13 @@
           "type": "string"
         },
         "type": {
-          "description": "Type of the operation. Operations include insert, update, and delete (output only).",
           "type": "string"
         },
         "user": {
-          "description": "User who requested the operation, for example: user@example.com. cloud-dns-system for operations automatically done by the system. (output only)",
           "type": "string"
         },
         "zoneContext": {
-          "$ref": "OperationManagedZoneContext",
-          "description": "Only populated if the operation targeted a ManagedZone (output only)."
+          "$ref": "OperationManagedZoneContext"
         }
       },
       "type": "object"
@@ -1216,12 +1103,10 @@
       "id": "OperationDnsKeyContext",
       "properties": {
         "newValue": {
-          "$ref": "DnsKey",
-          "description": "The post-operation DnsKey resource."
+          "$ref": "DnsKey"
         },
         "oldValue": {
-          "$ref": "DnsKey",
-          "description": "The pre-operation DnsKey resource."
+          "$ref": "DnsKey"
         }
       },
       "type": "object"
@@ -1230,22 +1115,18 @@
       "id": "OperationManagedZoneContext",
       "properties": {
         "newValue": {
-          "$ref": "ManagedZone",
-          "description": "The post-operation ManagedZone resource."
+          "$ref": "ManagedZone"
         },
         "oldValue": {
-          "$ref": "ManagedZone",
-          "description": "The pre-operation ManagedZone resource."
+          "$ref": "ManagedZone"
         }
       },
       "type": "object"
     },
     "Project": {
-      "description": "A project resource. The project is a top level container for resources including Cloud DNS ManagedZones. Projects can be created only in the APIs console.",
       "id": "Project",
       "properties": {
         "id": {
-          "description": "User assigned unique identifier for the resource (output only).",
           "type": "string"
         },
         "kind": {
@@ -1254,23 +1135,19 @@
           "type": "string"
         },
         "number": {
-          "description": "Unique numeric identifier for the resource; defined by the server (output only).",
           "format": "uint64",
           "type": "string"
         },
         "quota": {
-          "$ref": "Quota",
-          "description": "Quotas assigned to this project (output only)."
+          "$ref": "Quota"
         }
       },
       "type": "object"
     },
     "Quota": {
-      "description": "Limits associated with a Project.",
       "id": "Quota",
       "properties": {
         "dnsKeysPerManagedZone": {
-          "description": "Maximum allowed number of DnsKeys per ManagedZone.",
           "format": "int32",
           "type": "integer"
         },
@@ -1280,37 +1157,30 @@
           "type": "string"
         },
         "managedZones": {
-          "description": "Maximum allowed number of managed zones in the project.",
           "format": "int32",
           "type": "integer"
         },
         "resourceRecordsPerRrset": {
-          "description": "Maximum allowed number of ResourceRecords per ResourceRecordSet.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetAdditionsPerChange": {
-          "description": "Maximum allowed number of ResourceRecordSets to add per ChangesCreateRequest.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetDeletionsPerChange": {
-          "description": "Maximum allowed number of ResourceRecordSets to delete per ChangesCreateRequest.",
           "format": "int32",
           "type": "integer"
         },
         "rrsetsPerManagedZone": {
-          "description": "Maximum allowed number of ResourceRecordSets per zone in the project.",
           "format": "int32",
           "type": "integer"
         },
         "totalRrdataSizePerChange": {
-          "description": "Maximum allowed size for total rrdata in one ChangesCreateRequest in bytes.",
           "format": "int32",
           "type": "integer"
         },
         "whitelistedKeySpecs": {
-          "description": "DNSSEC algorithm and key length types that can be used for DnsKeys.",
           "items": {
             "$ref": "DnsKeySpec"
           },
@@ -1320,7 +1190,6 @@
       "type": "object"
     },
     "ResourceRecordSet": {
-      "description": "A unit of data that will be returned by the DNS servers.",
       "id": "ResourceRecordSet",
       "properties": {
         "kind": {
@@ -1329,30 +1198,25 @@
           "type": "string"
         },
         "name": {
-          "description": "For example, www.example.com.",
           "type": "string"
         },
         "rrdatas": {
-          "description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1).",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "signatureRrdatas": {
-          "description": "As defined in RFC 4034 (section 3.2).",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "ttl": {
-          "description": "Number of seconds that this ResourceRecordSet can be cached by resolvers.",
           "format": "int32",
           "type": "integer"
         },
         "type": {
-          "description": "The identifier of a supported record type. See the list of Supported DNS record types.",
           "type": "string"
         }
       },
@@ -1370,11 +1234,9 @@
           "type": "string"
         },
         "nextPageToken": {
-          "description": "The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your pagination token.\n\nIn this way you can retrieve the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.",
           "type": "string"
         },
         "rrsets": {
-          "description": "The resource record set resources.",
           "items": {
             "$ref": "ResourceRecordSet"
           },
@@ -1384,11 +1246,9 @@
       "type": "object"
     },
     "ResponseHeader": {
-      "description": "Elements common to every response.",
       "id": "ResponseHeader",
       "properties": {
         "operationId": {
-          "description": "For mutating operation requests that completed successfully. This is the client_operation_id if the client specified it, otherwise it is generated by the server (output only).",
           "type": "string"
         }
       },
diff --git a/dns/v2beta1/dns-gen.go b/dns/v2beta1/dns-gen.go
index f6e6f81..886e61d 100644
--- a/dns/v2beta1/dns-gen.go
+++ b/dns/v2beta1/dns-gen.go
@@ -158,40 +158,21 @@
 	s *Service
 }
 
-// Change: A Change represents a set of ResourceRecordSet additions and
-// deletions applied atomically to a ManagedZone. ResourceRecordSets
-// within a ManagedZone are modified by creating a new Change element in
-// the Changes collection. In turn the Changes collection also records
-// the past modifications to the ResourceRecordSets in a ManagedZone.
-// The current state of the ManagedZone is the sum effect of applying
-// all Change elements in the Changes collection in sequence.
 type Change struct {
-	// Additions: Which ResourceRecordSets to add?
 	Additions []*ResourceRecordSet `json:"additions,omitempty"`
 
-	// Deletions: Which ResourceRecordSets to remove? Must match existing
-	// data exactly.
 	Deletions []*ResourceRecordSet `json:"deletions,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only).
 	Id string `json:"id,omitempty"`
 
-	// IsServing: If the DNS queries for the zone will be served.
 	IsServing bool `json:"isServing,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#change".
 	Kind string `json:"kind,omitempty"`
 
-	// StartTime: The time that this operation was started by the server
-	// (output only). This is in RFC3339 text format.
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation (output only). A status of "done"
-	// means that the request to update the authoritative servers has been
-	// sent, but the servers might not be updated yet.
-	//
 	// Possible values:
 	//   "DONE"
 	//   "PENDING"
@@ -224,10 +205,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ChangesListResponse: The response to a request to enumerate Changes
-// to a ResourceRecordSets collection.
 type ChangesListResponse struct {
-	// Changes: The requested changes.
 	Changes []*Change `json:"changes,omitempty"`
 
 	Header *ResponseHeader `json:"header,omitempty"`
@@ -235,17 +213,6 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a "snapshot" of collections
-	// larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -275,11 +242,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKey: A DNSSEC key pair.
 type DnsKey struct {
-	// Algorithm: String mnemonic specifying the DNSSEC algorithm of this
-	// key. Immutable after creation time.
-	//
 	// Possible values:
 	//   "ECDSAP256SHA256"
 	//   "ECDSAP384SHA384"
@@ -288,56 +251,26 @@
 	//   "RSASHA512"
 	Algorithm string `json:"algorithm,omitempty"`
 
-	// CreationTime: The time that this resource was created in the control
-	// plane. This is in RFC3339 text format. Output only.
 	CreationTime string `json:"creationTime,omitempty"`
 
-	// Description: A mutable string of at most 1024 characters associated
-	// with this resource for the user's convenience. Has no effect on the
-	// resource's function.
 	Description string `json:"description,omitempty"`
 
-	// Digests: Cryptographic hashes of the DNSKEY resource record
-	// associated with this DnsKey. These digests are needed to construct a
-	// DS record that points at this DNS key. Output only.
 	Digests []*DnsKeyDigest `json:"digests,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only).
 	Id string `json:"id,omitempty"`
 
-	// IsActive: Active keys will be used to sign subsequent changes to the
-	// ManagedZone. Inactive keys will still be present as DNSKEY Resource
-	// Records for the use of resolvers validating existing signatures.
 	IsActive bool `json:"isActive,omitempty"`
 
-	// KeyLength: Length of the key in bits. Specified at creation time then
-	// immutable.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyTag: The key tag is a non-cryptographic hash of the a DNSKEY
-	// resource record associated with this DnsKey. The key tag can be used
-	// to identify a DNSKEY more quickly (but it is not a unique
-	// identifier). In particular, the key tag is used in a parent zone's DS
-	// record to point at the DNSKEY in this child ManagedZone. The key tag
-	// is a number in the range [0, 65535] and the algorithm to calculate it
-	// is specified in RFC4034 Appendix B. Output only.
 	KeyTag int64 `json:"keyTag,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#dnsKey".
 	Kind string `json:"kind,omitempty"`
 
-	// PublicKey: Base64 encoded public half of this key. Output only.
 	PublicKey string `json:"publicKey,omitempty"`
 
-	// Type: One of "KEY_SIGNING" or "ZONE_SIGNING". Keys of type
-	// KEY_SIGNING have the Secure Entry Point flag set and, when active,
-	// will be used to sign only resource record sets of type DNSKEY.
-	// Otherwise, the Secure Entry Point flag will be cleared and this key
-	// will be used to sign only resource record sets of other types.
-	// Immutable after creation time.
-	//
 	// Possible values:
 	//   "KEY_SIGNING"
 	//   "ZONE_SIGNING"
@@ -371,12 +304,8 @@
 }
 
 type DnsKeyDigest struct {
-	// Digest: The base-16 encoded bytes of this digest. Suitable for use in
-	// a DS resource record.
 	Digest string `json:"digest,omitempty"`
 
-	// Type: Specifies the algorithm used to calculate this digest.
-	//
 	// Possible values:
 	//   "SHA1"
 	//   "SHA256"
@@ -406,13 +335,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKeySpec: Parameters for DnsKey key generation. Used for generating
-// initial keys for a new ManagedZone and as default when adding a new
-// DnsKey.
 type DnsKeySpec struct {
-	// Algorithm: String mnemonic specifying the DNSSEC algorithm of this
-	// key.
-	//
 	// Possible values:
 	//   "ECDSAP256SHA256"
 	//   "ECDSAP384SHA384"
@@ -421,16 +344,8 @@
 	//   "RSASHA512"
 	Algorithm string `json:"algorithm,omitempty"`
 
-	// KeyLength: Length of the keys in bits.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyType: Specifies whether this is a key signing key (KSK) or a zone
-	// signing key (ZSK). Key signing keys have the Secure Entry Point flag
-	// set and, when active, will only be used to sign resource record sets
-	// of type DNSKEY. Zone signing keys do not have the Secure Entry Point
-	// flag set and will be used to sign all other types of resource record
-	// sets.
-	//
 	// Possible values:
 	//   "KEY_SIGNING"
 	//   "ZONE_SIGNING"
@@ -463,10 +378,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DnsKeysListResponse: The response to a request to enumerate DnsKeys
-// in a ManagedZone.
 type DnsKeysListResponse struct {
-	// DnsKeys: The requested resources.
 	DnsKeys []*DnsKey `json:"dnsKeys,omitempty"`
 
 	Header *ResponseHeader `json:"header,omitempty"`
@@ -474,17 +386,6 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a "snapshot" of collections
-	// larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -514,50 +415,27 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ManagedZone: A zone is a subtree of the DNS namespace under one
-// administrative responsibility. A ManagedZone is a resource that
-// represents a DNS zone hosted by the Cloud DNS service.
 type ManagedZone struct {
-	// CreationTime: The time that this resource was created on the server.
-	// This is in RFC3339 text format. Output only.
 	CreationTime string `json:"creationTime,omitempty"`
 
-	// Description: A mutable string of at most 1024 characters associated
-	// with this resource for the user's convenience. Has no effect on the
-	// managed zone's function.
 	Description string `json:"description,omitempty"`
 
-	// DnsName: The DNS name of this managed zone, for instance
-	// "example.com.".
 	DnsName string `json:"dnsName,omitempty"`
 
-	// DnssecConfig: DNSSEC configuration.
 	DnssecConfig *ManagedZoneDnsSecConfig `json:"dnssecConfig,omitempty"`
 
-	// Id: Unique identifier for the resource; defined by the server (output
-	// only)
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#managedZone".
 	Kind string `json:"kind,omitempty"`
 
-	// Labels: User labels.
 	Labels map[string]string `json:"labels,omitempty"`
 
-	// Name: User assigned name for this resource. Must be unique within the
-	// project. The name must be 1-63 characters long, must begin with a
-	// letter, end with a letter or digit, and only contain lowercase
-	// letters, digits or dashes.
 	Name string `json:"name,omitempty"`
 
-	// NameServerSet: Optionally specifies the NameServerSet for this
-	// ManagedZone. A NameServerSet is a set of DNS name servers that all
-	// host the same ManagedZones. Most users will leave this field unset.
 	NameServerSet string `json:"nameServerSet,omitempty"`
 
-	// NameServers: Delegate your managed_zone to these virtual name
-	// servers; defined by the server (output only)
 	NameServers []string `json:"nameServers,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -588,25 +466,17 @@
 }
 
 type ManagedZoneDnsSecConfig struct {
-	// DefaultKeySpecs: Specifies parameters that will be used for
-	// generating initial DnsKeys for this ManagedZone. Output only while
-	// state is not OFF.
 	DefaultKeySpecs []*DnsKeySpec `json:"defaultKeySpecs,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#managedZoneDnsSecConfig".
 	Kind string `json:"kind,omitempty"`
 
-	// NonExistence: Specifies the mechanism used to provide authenticated
-	// denial-of-existence responses. Output only while state is not OFF.
-	//
 	// Possible values:
 	//   "NSEC"
 	//   "NSEC3"
 	NonExistence string `json:"nonExistence,omitempty"`
 
-	// State: Specifies whether DNSSEC is enabled, and what mode it is in.
-	//
 	// Possible values:
 	//   "OFF"
 	//   "ON"
@@ -643,20 +513,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// page token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// Operations: The operation resources.
 	Operations []*Operation `json:"operations,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -692,20 +550,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// ManagedZones: The managed zone resources.
 	ManagedZones []*ManagedZone `json:"managedZones,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// page token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -735,52 +581,26 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Operation: An operation represents a successful mutation performed on
-// a Cloud DNS resource. Operations provide: - An audit log of server
-// resource mutations. - A way to recover/retry API calls in the case
-// where the response is never received by the caller. Use the caller
-// specified client_operation_id.
 type Operation struct {
-	// DnsKeyContext: Only populated if the operation targeted a DnsKey
-	// (output only).
 	DnsKeyContext *OperationDnsKeyContext `json:"dnsKeyContext,omitempty"`
 
-	// Id: Unique identifier for the resource. This is the
-	// client_operation_id if the client specified it when the mutation was
-	// initiated, otherwise, it is generated by the server. The name must be
-	// 1-63 characters long and match the regular expression [-a-z0-9]?
-	// (output only)
 	Id string `json:"id,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#operation".
 	Kind string `json:"kind,omitempty"`
 
-	// StartTime: The time that this operation was started by the server.
-	// This is in RFC3339 text format (output only).
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation. Can be one of the following:
-	// "PENDING" or "DONE" (output only). A status of "DONE" means that the
-	// request to update the authoritative servers has been sent, but the
-	// servers might not be updated yet.
-	//
 	// Possible values:
 	//   "DONE"
 	//   "PENDING"
 	Status string `json:"status,omitempty"`
 
-	// Type: Type of the operation. Operations include insert, update, and
-	// delete (output only).
 	Type string `json:"type,omitempty"`
 
-	// User: User who requested the operation, for example:
-	// user@example.com. cloud-dns-system for operations automatically done
-	// by the system. (output only)
 	User string `json:"user,omitempty"`
 
-	// ZoneContext: Only populated if the operation targeted a ManagedZone
-	// (output only).
 	ZoneContext *OperationManagedZoneContext `json:"zoneContext,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -811,10 +631,8 @@
 }
 
 type OperationDnsKeyContext struct {
-	// NewValue: The post-operation DnsKey resource.
 	NewValue *DnsKey `json:"newValue,omitempty"`
 
-	// OldValue: The pre-operation DnsKey resource.
 	OldValue *DnsKey `json:"oldValue,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "NewValue") to
@@ -841,10 +659,8 @@
 }
 
 type OperationManagedZoneContext struct {
-	// NewValue: The post-operation ManagedZone resource.
 	NewValue *ManagedZone `json:"newValue,omitempty"`
 
-	// OldValue: The pre-operation ManagedZone resource.
 	OldValue *ManagedZone `json:"oldValue,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "NewValue") to
@@ -870,22 +686,15 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Project: A project resource. The project is a top level container for
-// resources including Cloud DNS ManagedZones. Projects can be created
-// only in the APIs console.
 type Project struct {
-	// Id: User assigned unique identifier for the resource (output only).
 	Id string `json:"id,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#project".
 	Kind string `json:"kind,omitempty"`
 
-	// Number: Unique numeric identifier for the resource; defined by the
-	// server (output only).
 	Number uint64 `json:"number,omitempty,string"`
 
-	// Quota: Quotas assigned to this project (output only).
 	Quota *Quota `json:"quota,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -915,41 +724,25 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Quota: Limits associated with a Project.
 type Quota struct {
-	// DnsKeysPerManagedZone: Maximum allowed number of DnsKeys per
-	// ManagedZone.
 	DnsKeysPerManagedZone int64 `json:"dnsKeysPerManagedZone,omitempty"`
 
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#quota".
 	Kind string `json:"kind,omitempty"`
 
-	// ManagedZones: Maximum allowed number of managed zones in the project.
 	ManagedZones int64 `json:"managedZones,omitempty"`
 
-	// ResourceRecordsPerRrset: Maximum allowed number of ResourceRecords
-	// per ResourceRecordSet.
 	ResourceRecordsPerRrset int64 `json:"resourceRecordsPerRrset,omitempty"`
 
-	// RrsetAdditionsPerChange: Maximum allowed number of ResourceRecordSets
-	// to add per ChangesCreateRequest.
 	RrsetAdditionsPerChange int64 `json:"rrsetAdditionsPerChange,omitempty"`
 
-	// RrsetDeletionsPerChange: Maximum allowed number of ResourceRecordSets
-	// to delete per ChangesCreateRequest.
 	RrsetDeletionsPerChange int64 `json:"rrsetDeletionsPerChange,omitempty"`
 
-	// RrsetsPerManagedZone: Maximum allowed number of ResourceRecordSets
-	// per zone in the project.
 	RrsetsPerManagedZone int64 `json:"rrsetsPerManagedZone,omitempty"`
 
-	// TotalRrdataSizePerChange: Maximum allowed size for total rrdata in
-	// one ChangesCreateRequest in bytes.
 	TotalRrdataSizePerChange int64 `json:"totalRrdataSizePerChange,omitempty"`
 
-	// WhitelistedKeySpecs: DNSSEC algorithm and key length types that can
-	// be used for DnsKeys.
 	WhitelistedKeySpecs []*DnsKeySpec `json:"whitelistedKeySpecs,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g.
@@ -977,29 +770,19 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ResourceRecordSet: A unit of data that will be returned by the DNS
-// servers.
 type ResourceRecordSet struct {
 	// Kind: Identifies what kind of resource this is. Value: the fixed
 	// string "dns#resourceRecordSet".
 	Kind string `json:"kind,omitempty"`
 
-	// Name: For example, www.example.com.
 	Name string `json:"name,omitempty"`
 
-	// Rrdatas: As defined in RFC 1035 (section 5) and RFC 1034 (section
-	// 3.6.1).
 	Rrdatas []string `json:"rrdatas,omitempty"`
 
-	// SignatureRrdatas: As defined in RFC 4034 (section 3.2).
 	SignatureRrdatas []string `json:"signatureRrdatas,omitempty"`
 
-	// Ttl: Number of seconds that this ResourceRecordSet can be cached by
-	// resolvers.
 	Ttl int64 `json:"ttl,omitempty"`
 
-	// Type: The identifier of a supported record type. See the list of
-	// Supported DNS record types.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -1031,20 +814,8 @@
 	// Kind: Type of resource.
 	Kind string `json:"kind,omitempty"`
 
-	// NextPageToken: The presence of this field indicates that there exist
-	// more results following your last page of results in pagination order.
-	// To fetch them, make another list request using this value as your
-	// pagination token.
-	//
-	// In this way you can retrieve the complete contents of even very large
-	// collections one page at a time. However, if the contents of the
-	// collection change between the first and last paginated list request,
-	// the set of all elements returned will be an inconsistent view of the
-	// collection. There is no way to retrieve a consistent snapshot of a
-	// collection larger than the maximum page size.
 	NextPageToken string `json:"nextPageToken,omitempty"`
 
-	// Rrsets: The resource record set resources.
 	Rrsets []*ResourceRecordSet `json:"rrsets,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1074,11 +845,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ResponseHeader: Elements common to every response.
 type ResponseHeader struct {
-	// OperationId: For mutating operation requests that completed
-	// successfully. This is the client_operation_id if the client specified
-	// it, otherwise it is generated by the server (output only).
 	OperationId string `json:"operationId,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "OperationId") to
@@ -1116,7 +883,7 @@
 	header_     http.Header
 }
 
-// Create: Atomically update the ResourceRecordSet collection.
+// Create:
 func (r *ChangesService) Create(project string, managedZone string, change *Change) *ChangesCreateCall {
 	c := &ChangesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1126,9 +893,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ChangesCreateCall) ClientOperationId(clientOperationId string) *ChangesCreateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -1225,7 +989,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Atomically update the ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "POST",
 	//   "id": "dns.changes.create",
 	//   "parameterOrder": [
@@ -1234,18 +998,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1279,7 +1040,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Change.
+// Get:
 func (r *ChangesService) Get(project string, managedZone string, changeId string) *ChangesGetCall {
 	c := &ChangesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1289,9 +1050,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ChangesGetCall) ClientOperationId(clientOperationId string) *ChangesGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -1397,7 +1155,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Change.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.changes.get",
 	//   "parameterOrder": [
@@ -1407,24 +1165,20 @@
 	//   ],
 	//   "parameters": {
 	//     "changeId": {
-	//       "description": "The identifier of the requested change, from a previous ResourceRecordSetsChangeResponse.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1456,7 +1210,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate Changes to a ResourceRecordSet collection.
+// List:
 func (r *ChangesService) List(project string, managedZone string) *ChangesListCall {
 	c := &ChangesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1464,24 +1218,19 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ChangesListCall) MaxResults(maxResults int64) *ChangesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ChangesListCall) PageToken(pageToken string) *ChangesListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// SortBy sets the optional parameter "sortBy": Sorting criterion. The
-// only supported value is change sequence.
+// SortBy sets the optional parameter "sortBy":
 //
 // Possible values:
 //   "CHANGE_SEQUENCE" (default)
@@ -1490,8 +1239,7 @@
 	return c
 }
 
-// SortOrder sets the optional parameter "sortOrder": Sorting order
-// direction: 'ascending' or 'descending'.
+// SortOrder sets the optional parameter "sortOrder":
 func (c *ChangesListCall) SortOrder(sortOrder string) *ChangesListCall {
 	c.urlParams_.Set("sortOrder", sortOrder)
 	return c
@@ -1596,7 +1344,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate Changes to a ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.changes.list",
 	//   "parameterOrder": [
@@ -1605,31 +1353,26 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "sortBy": {
 	//       "default": "CHANGE_SEQUENCE",
-	//       "description": "Sorting criterion. The only supported value is change sequence.",
 	//       "enum": [
 	//         "CHANGE_SEQUENCE"
 	//       ],
@@ -1640,7 +1383,6 @@
 	//       "type": "string"
 	//     },
 	//     "sortOrder": {
-	//       "description": "Sorting order direction: 'ascending' or 'descending'.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
@@ -1693,7 +1435,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing DnsKey.
+// Get:
 func (r *DnsKeysService) Get(project string, managedZone string, dnsKeyId string) *DnsKeysGetCall {
 	c := &DnsKeysGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1703,18 +1445,12 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *DnsKeysGetCall) ClientOperationId(clientOperationId string) *DnsKeysGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
 }
 
-// DigestType sets the optional parameter "digestType": An optional
-// comma-separated list of digest types to compute and display for key
-// signing keys. If omitted, the recommended digest type will be
-// computed and displayed.
+// DigestType sets the optional parameter "digestType":
 func (c *DnsKeysGetCall) DigestType(digestType string) *DnsKeysGetCall {
 	c.urlParams_.Set("digestType", digestType)
 	return c
@@ -1820,7 +1556,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing DnsKey.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.dnsKeys.get",
 	//   "parameterOrder": [
@@ -1830,29 +1566,24 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "digestType": {
-	//       "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "dnsKeyId": {
-	//       "description": "The identifier of the requested DnsKey.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -1884,7 +1615,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate DnsKeys to a ResourceRecordSet collection.
+// List:
 func (r *DnsKeysService) List(project string, managedZone string) *DnsKeysListCall {
 	c := &DnsKeysListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -1892,26 +1623,19 @@
 	return c
 }
 
-// DigestType sets the optional parameter "digestType": An optional
-// comma-separated list of digest types to compute and display for key
-// signing keys. If omitted, the recommended digest type will be
-// computed and displayed.
+// DigestType sets the optional parameter "digestType":
 func (c *DnsKeysListCall) DigestType(digestType string) *DnsKeysListCall {
 	c.urlParams_.Set("digestType", digestType)
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *DnsKeysListCall) MaxResults(maxResults int64) *DnsKeysListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *DnsKeysListCall) PageToken(pageToken string) *DnsKeysListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
@@ -2016,7 +1740,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate DnsKeys to a ResourceRecordSet collection.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.dnsKeys.list",
 	//   "parameterOrder": [
@@ -2025,29 +1749,24 @@
 	//   ],
 	//   "parameters": {
 	//     "digestType": {
-	//       "description": "An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2101,7 +1820,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Operation.
+// Get:
 func (r *ManagedZoneOperationsService) Get(project string, managedZone string, operation string) *ManagedZoneOperationsGetCall {
 	c := &ManagedZoneOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2111,9 +1830,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZoneOperationsGetCall) ClientOperationId(clientOperationId string) *ManagedZoneOperationsGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2219,7 +1935,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Operation.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZoneOperations.get",
 	//   "parameterOrder": [
@@ -2229,24 +1945,20 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "operation": {
-	//       "description": "Identifies the operation addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2278,7 +1990,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate Operations for the given ManagedZone.
+// List:
 func (r *ManagedZoneOperationsService) List(project string, managedZone string) *ManagedZoneOperationsListCall {
 	c := &ManagedZoneOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2286,24 +1998,19 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ManagedZoneOperationsListCall) MaxResults(maxResults int64) *ManagedZoneOperationsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ManagedZoneOperationsListCall) PageToken(pageToken string) *ManagedZoneOperationsListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// SortBy sets the optional parameter "sortBy": Sorting criterion. The
-// only supported values are START_TIME and ID.
+// SortBy sets the optional parameter "sortBy":
 //
 // Possible values:
 //   "ID"
@@ -2413,7 +2120,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate Operations for the given ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZoneOperations.list",
 	//   "parameterOrder": [
@@ -2422,31 +2129,26 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "sortBy": {
 	//       "default": "START_TIME",
-	//       "description": "Sorting criterion. The only supported values are START_TIME and ID.",
 	//       "enum": [
 	//         "ID",
 	//         "START_TIME"
@@ -2505,7 +2207,7 @@
 	header_     http.Header
 }
 
-// Create: Create a new ManagedZone.
+// Create:
 func (r *ManagedZonesService) Create(project string, managedzone *ManagedZone) *ManagedZonesCreateCall {
 	c := &ManagedZonesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2514,9 +2216,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesCreateCall) ClientOperationId(clientOperationId string) *ManagedZonesCreateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2612,7 +2311,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Create a new ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "POST",
 	//   "id": "dns.managedZones.create",
 	//   "parameterOrder": [
@@ -2620,12 +2319,10 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2657,7 +2354,7 @@
 	header_     http.Header
 }
 
-// Delete: Delete a previously created ManagedZone.
+// Delete:
 func (r *ManagedZonesService) Delete(project string, managedZone string) *ManagedZonesDeleteCall {
 	c := &ManagedZonesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2666,9 +2363,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesDeleteCall) ClientOperationId(clientOperationId string) *ManagedZonesDeleteCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2735,7 +2429,7 @@
 	}
 	return nil
 	// {
-	//   "description": "Delete a previously created ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "DELETE",
 	//   "id": "dns.managedZones.delete",
 	//   "parameterOrder": [
@@ -2744,18 +2438,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2782,7 +2473,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing ManagedZone.
+// Get:
 func (r *ManagedZonesService) Get(project string, managedZone string) *ManagedZonesGetCall {
 	c := &ManagedZonesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -2791,9 +2482,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesGetCall) ClientOperationId(clientOperationId string) *ManagedZonesGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -2898,7 +2586,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZones.get",
 	//   "parameterOrder": [
@@ -2907,18 +2595,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -2949,32 +2634,26 @@
 	header_      http.Header
 }
 
-// List: Enumerate ManagedZones that have been created but not yet
-// deleted.
+// List:
 func (r *ManagedZonesService) List(project string) *ManagedZonesListCall {
 	c := &ManagedZonesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
 	return c
 }
 
-// DnsName sets the optional parameter "dnsName": Restricts the list to
-// return only zones with this domain name.
+// DnsName sets the optional parameter "dnsName":
 func (c *ManagedZonesListCall) DnsName(dnsName string) *ManagedZonesListCall {
 	c.urlParams_.Set("dnsName", dnsName)
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ManagedZonesListCall) MaxResults(maxResults int64) *ManagedZonesListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ManagedZonesListCall) PageToken(pageToken string) *ManagedZonesListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
@@ -3078,7 +2757,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate ManagedZones that have been created but not yet deleted.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.managedZones.list",
 	//   "parameterOrder": [
@@ -3086,23 +2765,19 @@
 	//   ],
 	//   "parameters": {
 	//     "dnsName": {
-	//       "description": "Restricts the list to return only zones with this domain name.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3155,7 +2830,7 @@
 	header_     http.Header
 }
 
-// Patch: Apply a partial update to an existing ManagedZone.
+// Patch:
 func (r *ManagedZonesService) Patch(project string, managedZone string, managedzone *ManagedZone) *ManagedZonesPatchCall {
 	c := &ManagedZonesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3165,9 +2840,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesPatchCall) ClientOperationId(clientOperationId string) *ManagedZonesPatchCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3264,7 +2936,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Apply a partial update to an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "PATCH",
 	//   "id": "dns.managedZones.patch",
 	//   "parameterOrder": [
@@ -3273,18 +2945,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3317,7 +2986,7 @@
 	header_     http.Header
 }
 
-// Update: Update an existing ManagedZone.
+// Update:
 func (r *ManagedZonesService) Update(project string, managedZone string, managedzone *ManagedZone) *ManagedZonesUpdateCall {
 	c := &ManagedZonesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3327,9 +2996,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ManagedZonesUpdateCall) ClientOperationId(clientOperationId string) *ManagedZonesUpdateCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3426,7 +3092,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Update an existing ManagedZone.",
+	//   "description": "",
 	//   "httpMethod": "PUT",
 	//   "id": "dns.managedZones.update",
 	//   "parameterOrder": [
@@ -3435,18 +3101,15 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3478,7 +3141,7 @@
 	header_      http.Header
 }
 
-// Get: Fetch the representation of an existing Project.
+// Get:
 func (r *ProjectsService) Get(project string) *ProjectsGetCall {
 	c := &ProjectsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3486,9 +3149,6 @@
 }
 
 // ClientOperationId sets the optional parameter "clientOperationId":
-// For mutating operation requests only. An optional identifier
-// specified by the client. Must be unique for operation resources in
-// the Operations collection.
 func (c *ProjectsGetCall) ClientOperationId(clientOperationId string) *ProjectsGetCall {
 	c.urlParams_.Set("clientOperationId", clientOperationId)
 	return c
@@ -3592,7 +3252,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Fetch the representation of an existing Project.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.projects.get",
 	//   "parameterOrder": [
@@ -3600,12 +3260,10 @@
 	//   ],
 	//   "parameters": {
 	//     "clientOperationId": {
-	//       "description": "For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
@@ -3637,8 +3295,7 @@
 	header_      http.Header
 }
 
-// List: Enumerate ResourceRecordSets that have been created but not yet
-// deleted.
+// List:
 func (r *ResourceRecordSetsService) List(project string, managedZone string) *ResourceRecordSetsListCall {
 	c := &ResourceRecordSetsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.project = project
@@ -3646,32 +3303,25 @@
 	return c
 }
 
-// MaxResults sets the optional parameter "maxResults": Maximum number
-// of results to be returned. If unspecified, the server will decide how
-// many results to return.
+// MaxResults sets the optional parameter "maxResults":
 func (c *ResourceRecordSetsListCall) MaxResults(maxResults int64) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
 	return c
 }
 
-// Name sets the optional parameter "name": Restricts the list to return
-// only records with this fully qualified domain name.
+// Name sets the optional parameter "name":
 func (c *ResourceRecordSetsListCall) Name(name string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("name", name)
 	return c
 }
 
-// PageToken sets the optional parameter "pageToken": A tag returned by
-// a previous list request that was truncated. Use this parameter to
-// continue a previous list request.
+// PageToken sets the optional parameter "pageToken":
 func (c *ResourceRecordSetsListCall) PageToken(pageToken string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
 }
 
-// Type sets the optional parameter "type": Restricts the list to return
-// only records of this type. If present, the "name" parameter must also
-// be present.
+// Type sets the optional parameter "type":
 func (c *ResourceRecordSetsListCall) Type(type_ string) *ResourceRecordSetsListCall {
 	c.urlParams_.Set("type", type_)
 	return c
@@ -3776,7 +3426,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Enumerate ResourceRecordSets that have been created but not yet deleted.",
+	//   "description": "",
 	//   "httpMethod": "GET",
 	//   "id": "dns.resourceRecordSets.list",
 	//   "parameterOrder": [
@@ -3785,35 +3435,29 @@
 	//   ],
 	//   "parameters": {
 	//     "managedZone": {
-	//       "description": "Identifies the managed zone addressed by this request. Can be the managed zone name or id.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "maxResults": {
-	//       "description": "Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.",
 	//       "format": "int32",
 	//       "location": "query",
 	//       "type": "integer"
 	//     },
 	//     "name": {
-	//       "description": "Restricts the list to return only records with this fully qualified domain name.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "project": {
-	//       "description": "Identifies the project addressed by this request.",
 	//       "location": "path",
 	//       "required": true,
 	//       "type": "string"
 	//     },
 	//     "type": {
-	//       "description": "Restricts the list to return only records of this type. If present, the \"name\" parameter must also be present.",
 	//       "location": "query",
 	//       "type": "string"
 	//     }
diff --git a/healthcare/v1alpha/healthcare-api.json b/healthcare/v1alpha/healthcare-api.json
index ad0f8e8..246d311 100644
--- a/healthcare/v1alpha/healthcare-api.json
+++ b/healthcare/v1alpha/healthcare-api.json
@@ -2485,7 +2485,7 @@
                           ],
                           "parameters": {
                             "filter": {
-                              "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- HasLabel(x), a boolean returning true if the message has a label with\n  key x (having any value) set using the labels map in Message; e.g.\n  'HasLabel(\"priority\")'\n- Label(x), a string value of the label with key x as set using the labels\n  map in Message, e.g. 'Label(\"priority\") = \"high\"'",
+                              "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- HasLabel(x), a boolean returning true if the message has a label with\n  key x (having any value) set using the labels map in Message; e.g.\n  'HasLabel(\"priority\")'\n- Label(x), a string value of the label with key x as set using the labels\n  map in Message, e.g. 'Label(\"priority\") = \"high\"'\nNegation on the patient ID function and the label function are not\nsupported, e.g. invalid queries: 'NOT PatientId(\"123456\", \"MRN\")',\n'NOT HasLabel(\"tag1\")', 'NOT Label(\"tag2\") = \"val2\"'.\nConjunction of multiple patient ID functions is not supported, e.g. an\ninvalid query: 'PatientId(\"123456\", \"MRN\") AND PatientId(\"456789\", \"MRN\")'.\nConjunction of multiple label functions is also not supported, e.g. an\ninvalid query: 'HasLabel(\"tag1\") AND Label(\"tag2\") = \"val2\"'.\nConjunction of one patient ID function, one label function and other fields\nis supported, e.g. a valid query:\n'PatientId(\"123456\", \"MRN\") AND HasLabel(\"tag1\") AND message_type = \"ADT\"'.",
                               "location": "query",
                               "type": "string"
                             },
@@ -2636,7 +2636,7 @@
       }
     }
   },
-  "revision": "20190204",
+  "revision": "20190215",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -2970,7 +2970,7 @@
       "properties": {
         "bigqueryDestinationLocation": {
           "$ref": "BigQueryLocation",
-          "description": "The BigQuery destination location.\nThe output will be one BigQuery table per resource type.\nThe server implements a data-driven FHIR-to-SQL schema mapping in support\nof analytics workloads with BigQuery. Incompatible changes to the output\nschema may be introduced in the future as a result of continuous\ncollaboration with the FHIR community to refine the\n[desired SQL projection of FHIR\nresources](https://github.com/rbrush/sql-on-fhir/blob/master/sql-on-fhir.md)."
+          "description": "The BigQuery destination location.\nThe output will be one BigQuery table per resource type.\nThe server implements a data-driven FHIR-to-SQL schema mapping in support\nof analytics workloads with BigQuery. Incompatible changes to the output\nschema may be introduced in the future as a result of continuous\ncollaboration with the FHIR community to refine the\n[desired SQL projection of FHIR\nresources](https://github.com/FHIR/sql-on-fhir/blob/master/sql-on-fhir.md)"
         },
         "gcsDestinationLocation": {
           "$ref": "GcsDataLocation",
diff --git a/healthcare/v1alpha/healthcare-gen.go b/healthcare/v1alpha/healthcare-gen.go
index 0c5ef90..167a333 100644
--- a/healthcare/v1alpha/healthcare-gen.go
+++ b/healthcare/v1alpha/healthcare-gen.go
@@ -1118,8 +1118,8 @@
 	// collaboration with the FHIR community to refine the
 	// [desired SQL projection of
 	// FHIR
-	// resources](https://github.com/rbrush/sql-on-fhir/blob/master/sql-
-	// on-fhir.md).
+	// resources](https://github.com/FHIR/sql-on-fhir/blob/master/sql-on
+	// -fhir.md)
 	BigqueryDestinationLocation *BigQueryLocation `json:"bigqueryDestinationLocation,omitempty"`
 
 	// GcsDestinationLocation: The Cloud Storage destination
@@ -15313,6 +15313,24 @@
 // - Label(x), a string value of the label with key x as set using the
 // labels
 //   map in Message, e.g. 'Label("priority") = "high"'
+// Negation on the patient ID function and the label function are
+// not
+// supported, e.g. invalid queries: 'NOT PatientId("123456",
+// "MRN")',
+// 'NOT HasLabel("tag1")', 'NOT Label("tag2") = "val2"'.
+// Conjunction of multiple patient ID functions is not supported, e.g.
+// an
+// invalid query: 'PatientId("123456", "MRN") AND PatientId("456789",
+// "MRN")'.
+// Conjunction of multiple label functions is also not supported, e.g.
+// an
+// invalid query: 'HasLabel("tag1") AND Label("tag2") =
+// "val2"'.
+// Conjunction of one patient ID function, one label function and other
+// fields
+// is supported, e.g. a valid query:
+// 'PatientId("123456", "MRN") AND HasLabel("tag1") AND message_type =
+// "ADT"'.
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall) Filter(filter string) *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
@@ -15453,7 +15471,7 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- HasLabel(x), a boolean returning true if the message has a label with\n  key x (having any value) set using the labels map in Message; e.g.\n  'HasLabel(\"priority\")'\n- Label(x), a string value of the label with key x as set using the labels\n  map in Message, e.g. 'Label(\"priority\") = \"high\"'",
+	//       "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- HasLabel(x), a boolean returning true if the message has a label with\n  key x (having any value) set using the labels map in Message; e.g.\n  'HasLabel(\"priority\")'\n- Label(x), a string value of the label with key x as set using the labels\n  map in Message, e.g. 'Label(\"priority\") = \"high\"'\nNegation on the patient ID function and the label function are not\nsupported, e.g. invalid queries: 'NOT PatientId(\"123456\", \"MRN\")',\n'NOT HasLabel(\"tag1\")', 'NOT Label(\"tag2\") = \"val2\"'.\nConjunction of multiple patient ID functions is not supported, e.g. an\ninvalid query: 'PatientId(\"123456\", \"MRN\") AND PatientId(\"456789\", \"MRN\")'.\nConjunction of multiple label functions is also not supported, e.g. an\ninvalid query: 'HasLabel(\"tag1\") AND Label(\"tag2\") = \"val2\"'.\nConjunction of one patient ID function, one label function and other fields\nis supported, e.g. a valid query:\n'PatientId(\"123456\", \"MRN\") AND HasLabel(\"tag1\") AND message_type = \"ADT\"'.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/healthcare/v1alpha2/healthcare-api.json b/healthcare/v1alpha2/healthcare-api.json
index 55898d1..a13dade 100644
--- a/healthcare/v1alpha2/healthcare-api.json
+++ b/healthcare/v1alpha2/healthcare-api.json
@@ -3034,7 +3034,7 @@
                           ],
                           "parameters": {
                             "filter": {
-                              "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- HasLabel(x), a boolean returning true if the message has a label with\n  key x (having any value) set using the labels map in Message; e.g.\n  'HasLabel(\"priority\")'\n- Label(x), a string value of the label with key x as set using the labels\n  map in Message, e.g. 'Label(\"priority\") = \"high\"'",
+                              "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- HasLabel(x), a boolean returning true if the message has a label with\n  key x (having any value) set using the labels map in Message; e.g.\n  'HasLabel(\"priority\")'\n- Label(x), a string value of the label with key x as set using the labels\n  map in Message, e.g. 'Label(\"priority\") = \"high\"'\nNegation on the patient ID function and the label function are not\nsupported, e.g. invalid queries: 'NOT PatientId(\"123456\", \"MRN\")',\n'NOT HasLabel(\"tag1\")', 'NOT Label(\"tag2\") = \"val2\"'.\nConjunction of multiple patient ID functions is not supported, e.g. an\ninvalid query: 'PatientId(\"123456\", \"MRN\") AND PatientId(\"456789\", \"MRN\")'.\nConjunction of multiple label functions is also not supported, e.g. an\ninvalid query: 'HasLabel(\"tag1\") AND Label(\"tag2\") = \"val2\"'.\nConjunction of one patient ID function, one label function and other fields\nis supported, e.g. a valid query:\n'PatientId(\"123456\", \"MRN\") AND HasLabel(\"tag1\") AND message_type = \"ADT\"'.",
                               "location": "query",
                               "type": "string"
                             },
@@ -3185,7 +3185,7 @@
       }
     }
   },
-  "revision": "20190204",
+  "revision": "20190215",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -3482,7 +3482,7 @@
       "properties": {
         "bigqueryDestination": {
           "$ref": "GoogleCloudHealthcareV1alpha2FhirBigQueryDestination",
-          "description": "The BigQuery output destination.\n\nThe BigQuery location requires two IAM roles:\n`roles/bigquery.dataEditor` and `roles/bigquery.jobUser`.\n\nThe output will be one BigQuery table per resource type.\nThe server implements a data-driven FHIR-to-SQL schema mapping in support\nof analytics workloads with BigQuery. Incompatible changes to the output\nschema may be introduced in the future as a result of continuous\ncollaboration with the FHIR community to refine the\n[desired SQL projection of FHIR\nresources](https://github.com/rbrush/sql-on-fhir/blob/master/sql-on-fhir.md)."
+          "description": "The BigQuery output destination.\n\nThe BigQuery location requires two IAM roles:\n`roles/bigquery.dataEditor` and `roles/bigquery.jobUser`.\n\nThe output will be one BigQuery table per resource type.\nThe server implements a data-driven FHIR-to-SQL schema mapping in support\nof analytics workloads with BigQuery. Incompatible changes to the output\nschema may be introduced in the future as a result of continuous\ncollaboration with the FHIR community to refine the\n[desired SQL projection of FHIR\nresources](https://github.com/FHIR/sql-on-fhir/blob/master/sql-on-fhir.md)"
         },
         "gcsDestination": {
           "$ref": "GoogleCloudHealthcareV1alpha2FhirRestGcsDestination",
diff --git a/healthcare/v1alpha2/healthcare-gen.go b/healthcare/v1alpha2/healthcare-gen.go
index 12e0348..83bb70b 100644
--- a/healthcare/v1alpha2/healthcare-gen.go
+++ b/healthcare/v1alpha2/healthcare-gen.go
@@ -1103,8 +1103,8 @@
 	// collaboration with the FHIR community to refine the
 	// [desired SQL projection of
 	// FHIR
-	// resources](https://github.com/rbrush/sql-on-fhir/blob/master/sql-
-	// on-fhir.md).
+	// resources](https://github.com/FHIR/sql-on-fhir/blob/master/sql-on
+	// -fhir.md)
 	BigqueryDestination *GoogleCloudHealthcareV1alpha2FhirBigQueryDestination `json:"bigqueryDestination,omitempty"`
 
 	// GcsDestination: The Cloud Storage output destination.
@@ -17943,6 +17943,24 @@
 // - Label(x), a string value of the label with key x as set using the
 // labels
 //   map in Message, e.g. 'Label("priority") = "high"'
+// Negation on the patient ID function and the label function are
+// not
+// supported, e.g. invalid queries: 'NOT PatientId("123456",
+// "MRN")',
+// 'NOT HasLabel("tag1")', 'NOT Label("tag2") = "val2"'.
+// Conjunction of multiple patient ID functions is not supported, e.g.
+// an
+// invalid query: 'PatientId("123456", "MRN") AND PatientId("456789",
+// "MRN")'.
+// Conjunction of multiple label functions is also not supported, e.g.
+// an
+// invalid query: 'HasLabel("tag1") AND Label("tag2") =
+// "val2"'.
+// Conjunction of one patient ID function, one label function and other
+// fields
+// is supported, e.g. a valid query:
+// 'PatientId("123456", "MRN") AND HasLabel("tag1") AND message_type =
+// "ADT"'.
 func (c *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall) Filter(filter string) *ProjectsLocationsDatasetsHl7V2StoresMessagesListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
@@ -18083,7 +18101,7 @@
 	//   ],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- HasLabel(x), a boolean returning true if the message has a label with\n  key x (having any value) set using the labels map in Message; e.g.\n  'HasLabel(\"priority\")'\n- Label(x), a string value of the label with key x as set using the labels\n  map in Message, e.g. 'Label(\"priority\") = \"high\"'",
+	//       "description": "Restricts messages returned to those matching a filter. Syntax:\nhttps://cloud.google.com/appengine/docs/standard/python/search/query_strings\nFields/functions available for filtering are:\n- message_type, from the MSH-9 segment, e.g. 'NOT message_type = \"ADT\"'\n- send_date or sendDate, the YYYY-MM-DD date the message was sent in the\n  dataset's time_zone, from the MSH-7 segment; e.g.\n  'send_date \u003c \"2017-01-02\"'\n- send_time, the timestamp of when the message was sent, using the RFC3339\n  time format for comparisons, from the MSH-7 segment; e.g. 'send_time \u003c\n  \"2017-01-02T00:00:00-05:00\"'\n- send_facility, the hospital/trust that the message came from, from the\n  MSH-4 segment, e.g. 'send_facility = \"RAL\"'\n- HL7RegExp(expr), which does regular expression matching of expr against\n  the HL7 message payload using re2 (http://code.google.com/p/re2/)\n  syntax; e.g. 'HL7RegExp(\"^.*\\|.*\\|CERNER\")'\n- PatientId(value, type), which matches if the message lists a patient\n  having an ID of the given value and type in the PID-2, PID-3, or PID-4\n  segments; e.g. 'PatientId(\"123456\", \"MRN\")'\n- HasLabel(x), a boolean returning true if the message has a label with\n  key x (having any value) set using the labels map in Message; e.g.\n  'HasLabel(\"priority\")'\n- Label(x), a string value of the label with key x as set using the labels\n  map in Message, e.g. 'Label(\"priority\") = \"high\"'\nNegation on the patient ID function and the label function are not\nsupported, e.g. invalid queries: 'NOT PatientId(\"123456\", \"MRN\")',\n'NOT HasLabel(\"tag1\")', 'NOT Label(\"tag2\") = \"val2\"'.\nConjunction of multiple patient ID functions is not supported, e.g. an\ninvalid query: 'PatientId(\"123456\", \"MRN\") AND PatientId(\"456789\", \"MRN\")'.\nConjunction of multiple label functions is also not supported, e.g. an\ninvalid query: 'HasLabel(\"tag1\") AND Label(\"tag2\") = \"val2\"'.\nConjunction of one patient ID function, one label function and other fields\nis supported, e.g. a valid query:\n'PatientId(\"123456\", \"MRN\") AND HasLabel(\"tag1\") AND message_type = \"ADT\"'.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/iam/v1/iam-api.json b/iam/v1/iam-api.json
index b9abdb0..00fdfe2 100644
--- a/iam/v1/iam-api.json
+++ b/iam/v1/iam-api.json
@@ -825,6 +825,34 @@
                 "https://www.googleapis.com/auth/cloud-platform"
               ]
             },
+            "undelete": {
+              "description": "Restores a deleted ServiceAccount.",
+              "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:undelete",
+              "httpMethod": "POST",
+              "id": "iam.projects.serviceAccounts.undelete",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT_UNIQUE_ID}'.\nUsing `-` as a wildcard for the `PROJECT_ID` will infer the project from\nthe account.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1/{+name}:undelete",
+              "request": {
+                "$ref": "UndeleteServiceAccountRequest"
+              },
+              "response": {
+                "$ref": "UndeleteServiceAccountResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
             "update": {
               "description": "Updates a ServiceAccount.\n\nCurrently, only the following fields are updatable:\n`display_name` .\nThe `etag` is mandatory.",
               "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}",
@@ -1081,7 +1109,7 @@
       }
     }
   },
-  "revision": "20190201",
+  "revision": "20190215",
   "rootUrl": "https://iam.googleapis.com/",
   "schemas": {
     "AuditConfig": {
@@ -1269,7 +1297,7 @@
         },
         "serviceAccount": {
           "$ref": "ServiceAccount",
-          "description": "The ServiceAccount resource to create.\nCurrently, only the following values are user assignable:\n`display_name` ."
+          "description": "The ServiceAccount resource to\ncreate. Currently, only the following values are user assignable:\n`display_name` ."
         }
       },
       "type": "object"
@@ -1736,6 +1764,10 @@
       "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 the format of projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}. The caller\ncan use 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": {
+        "disabled": {
+          "description": "@OutputOnly A bool indicate if the service account is disabled.",
+          "type": "boolean"
+        },
         "displayName": {
           "description": "Optional. A user-specified name for the service account.\nMust be less than or equal to 100 UTF-8 bytes.",
           "type": "string"
@@ -1936,6 +1968,22 @@
         }
       },
       "type": "object"
+    },
+    "UndeleteServiceAccountRequest": {
+      "description": "The service account undelete request.",
+      "id": "UndeleteServiceAccountRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "UndeleteServiceAccountResponse": {
+      "id": "UndeleteServiceAccountResponse",
+      "properties": {
+        "restoredAccount": {
+          "$ref": "ServiceAccount",
+          "description": "Metadata for the restored service account."
+        }
+      },
+      "type": "object"
     }
   },
   "servicePath": "",
diff --git a/iam/v1/iam-gen.go b/iam/v1/iam-gen.go
index a21dff8..ea70f62 100644
--- a/iam/v1/iam-gen.go
+++ b/iam/v1/iam-gen.go
@@ -620,8 +620,8 @@
 	// `[a-z]([-a-z0-9]*[a-z0-9])` to comply with RFC1035.
 	AccountId string `json:"accountId,omitempty"`
 
-	// ServiceAccount: The ServiceAccount resource to create.
-	// Currently, only the following values are user
+	// ServiceAccount: The ServiceAccount resource to
+	// create. Currently, only the following values are user
 	// assignable:
 	// `display_name` .
 	ServiceAccount *ServiceAccount `json:"serviceAccount,omitempty"`
@@ -1627,6 +1627,10 @@
 // the
 // `unique_id` of the service account.
 type ServiceAccount struct {
+	// Disabled: @OutputOnly A bool indicate if the service account is
+	// disabled.
+	Disabled bool `json:"disabled,omitempty"`
+
 	// DisplayName: Optional. A user-specified name for the service
 	// account.
 	// Must be less than or equal to 100 UTF-8 bytes.
@@ -1674,7 +1678,7 @@
 	// server.
 	googleapi.ServerResponse `json:"-"`
 
-	// ForceSendFields is a list of field names (e.g. "DisplayName") to
+	// ForceSendFields is a list of field names (e.g. "Disabled") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -1682,10 +1686,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "DisplayName") to include
-	// in API requests with the JSON null value. By default, fields with
-	// empty values are omitted from API requests. However, any field with
-	// an empty value appearing in NullFields will be sent to the server as
+	// NullFields is a list of field names (e.g. "Disabled") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
 	// null. It is an error if a field in this list has a non-empty value.
 	// This may be used to include null fields in Patch requests.
 	NullFields []string `json:"-"`
@@ -2075,6 +2079,42 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// UndeleteServiceAccountRequest: The service account undelete request.
+type UndeleteServiceAccountRequest struct {
+}
+
+type UndeleteServiceAccountResponse struct {
+	// RestoredAccount: Metadata for the restored service account.
+	RestoredAccount *ServiceAccount `json:"restoredAccount,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "RestoredAccount") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "RestoredAccount") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UndeleteServiceAccountResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod UndeleteServiceAccountResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // method id "iam.iamPolicies.lintPolicy":
 
 type IamPoliciesLintPolicyCall struct {
@@ -5717,6 +5757,145 @@
 
 }
 
+// method id "iam.projects.serviceAccounts.undelete":
+
+type ProjectsServiceAccountsUndeleteCall struct {
+	s                             *Service
+	name                          string
+	undeleteserviceaccountrequest *UndeleteServiceAccountRequest
+	urlParams_                    gensupport.URLParams
+	ctx_                          context.Context
+	header_                       http.Header
+}
+
+// Undelete: Restores a deleted ServiceAccount.
+func (r *ProjectsServiceAccountsService) Undelete(name string, undeleteserviceaccountrequest *UndeleteServiceAccountRequest) *ProjectsServiceAccountsUndeleteCall {
+	c := &ProjectsServiceAccountsUndeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.undeleteserviceaccountrequest = undeleteserviceaccountrequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsServiceAccountsUndeleteCall) Fields(s ...googleapi.Field) *ProjectsServiceAccountsUndeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsServiceAccountsUndeleteCall) Context(ctx context.Context) *ProjectsServiceAccountsUndeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsServiceAccountsUndeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsServiceAccountsUndeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.undeleteserviceaccountrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:undelete")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "iam.projects.serviceAccounts.undelete" call.
+// Exactly one of *UndeleteServiceAccountResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *UndeleteServiceAccountResponse.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *ProjectsServiceAccountsUndeleteCall) Do(opts ...googleapi.CallOption) (*UndeleteServiceAccountResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UndeleteServiceAccountResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Restores a deleted ServiceAccount.",
+	//   "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:undelete",
+	//   "httpMethod": "POST",
+	//   "id": "iam.projects.serviceAccounts.undelete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT_UNIQUE_ID}'.\nUsing `-` as a wildcard for the `PROJECT_ID` will infer the project from\nthe account.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:undelete",
+	//   "request": {
+	//     "$ref": "UndeleteServiceAccountRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "UndeleteServiceAccountResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
 // method id "iam.projects.serviceAccounts.update":
 
 type ProjectsServiceAccountsUpdateCall struct {
diff --git a/ml/v1/ml-api.json b/ml/v1/ml-api.json
index 0cec194..0e5929c 100644
--- a/ml/v1/ml-api.json
+++ b/ml/v1/ml-api.json
@@ -1019,7 +1019,7 @@
       }
     }
   },
-  "revision": "20190126",
+  "revision": "20190216",
   "rootUrl": "https://ml.googleapis.com/",
   "schemas": {
     "GoogleApi__HttpBody": {
@@ -1076,7 +1076,7 @@
           "type": "string"
         },
         "type": {
-          "description": "The available types of accelerators.",
+          "description": "The type of accelerator to use.",
           "enum": [
             "ACCELERATOR_TYPE_UNSPECIFIED",
             "NVIDIA_TESLA_K80",
@@ -1091,7 +1091,7 @@
             "Nvidia Tesla P100 GPU.",
             "Nvidia Tesla V100 GPU.",
             "Nvidia Tesla P4 GPU.",
-            "TPU V2"
+            "TPU v2."
           ],
           "type": "string"
         }
@@ -1103,7 +1103,7 @@
       "id": "GoogleCloudMlV1__AutoScaling",
       "properties": {
         "minNodes": {
-          "description": "Optional. The minimum number of nodes to allocate for this model. These\nnodes are always up, starting from the time the model is deployed.\nTherefore, the cost of operating this model will be at least\n`rate` * `min_nodes` * number of hours since last billing cycle,\nwhere `rate` is the cost per node-hour as documented in the\n[pricing guide](/ml-engine/docs/pricing),\neven if no predictions are performed. There is additional cost for each\nprediction performed.\n\nUnlike manual scaling, if the load gets too heavy for the nodes\nthat are up, the service will automatically add nodes to handle the\nincreased load as well as scale back as traffic drops, always maintaining\nat least `min_nodes`. You will be charged for the time in which additional\nnodes are used.\n\nIf not specified, `min_nodes` defaults to 0, in which case, when traffic\nto a model stops (and after a cool-down period), nodes will be shut down\nand no charges will be incurred until traffic to the model resumes.\n\nYou can set `min_nodes` when creating the model version, and you can also\nupdate `min_nodes` for an existing version:\n\u003cpre\u003e\nupdate_body.json:\n{\n  'autoScaling': {\n    'minNodes': 5\n  }\n}\n\u003c/pre\u003e\nHTTP request:\n\u003cpre\u003e\nPATCH https://ml.googleapis.com/v1/{name=projects/*/models/*/versions/*}?update_mask=autoScaling.minNodes -d @./update_body.json\n\u003c/pre\u003e",
+          "description": "Optional. The minimum number of nodes to allocate for this model. These\nnodes are always up, starting from the time the model is deployed.\nTherefore, the cost of operating this model will be at least\n`rate` * `min_nodes` * number of hours since last billing cycle,\nwhere `rate` is the cost per node-hour as documented in the\n[pricing guide](/ml-engine/docs/pricing),\neven if no predictions are performed. There is additional cost for each\nprediction performed.\n\nUnlike manual scaling, if the load gets too heavy for the nodes\nthat are up, the service will automatically add nodes to handle the\nincreased load as well as scale back as traffic drops, always maintaining\nat least `min_nodes`. You will be charged for the time in which additional\nnodes are used.\n\nIf not specified, `min_nodes` defaults to 0, in which case, when traffic\nto a model stops (and after a cool-down period), nodes will be shut down\nand no charges will be incurred until traffic to the model resumes.\n\nYou can set `min_nodes` when creating the model version, and you can also\nupdate `min_nodes` for an existing version:\n\u003cpre\u003e\nupdate_body.json:\n{\n  'autoScaling': {\n    'minNodes': 5\n  }\n}\n\u003c/pre\u003e\nHTTP request:\n\u003cpre\u003e\nPATCH\nhttps://ml.googleapis.com/v1/{name=projects/*/models/*/versions/*}?update_mask=autoScaling.minNodes\n-d @./update_body.json\n\u003c/pre\u003e",
           "format": "int32",
           "type": "integer"
         }
@@ -1127,7 +1127,7 @@
             "Nvidia Tesla P100 GPU.",
             "Nvidia Tesla V100 GPU.",
             "Nvidia Tesla P4 GPU.",
-            "TPU V2"
+            "TPU v2."
           ],
           "items": {
             "enum": [
@@ -1781,14 +1781,15 @@
       "type": "object"
     },
     "GoogleCloudMlV1__ReplicaConfig": {
-      "description": "Represents the configration for a replica in a cluster.",
+      "description": "Represents the configuration for a replica in a cluster.",
       "id": "GoogleCloudMlV1__ReplicaConfig",
       "properties": {
         "acceleratorConfig": {
-          "$ref": "GoogleCloudMlV1__AcceleratorConfig"
+          "$ref": "GoogleCloudMlV1__AcceleratorConfig",
+          "description": "Represents the type and number of accelerators used by the replica.\n[Learn about restrictions on accelerator configurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)"
         },
         "imageUri": {
-          "description": "The docker image to run on worker.\nThis image must be in Google Container Registry.",
+          "description": "The Docker image to run on the replica. This image must be in Container\nRegistry. Learn more about [configuring custom\ncontainers](/ml-engine/docs/distributed-training-containers).",
           "type": "string"
         }
       },
@@ -1821,10 +1822,10 @@
         },
         "masterConfig": {
           "$ref": "GoogleCloudMlV1__ReplicaConfig",
-          "description": "Optional. The configuration for master.\n\nOnly one of `masterConfig.imageUri` and `runtimeVersion` should be\nset."
+          "description": "Optional. The configuration for your master worker.\n\nYou should only set `masterConfig.acceleratorConfig` if `masterType` is set\nto a Compute Engine machine type. Learn about [restrictions on accelerator\nconfigurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `masterConfig.imageUri` only if you build a custom image. Only one of\n`masterConfig.imageUri` and `runtimeVersion` should be set. Learn more about\n[configuring custom containers](/ml-engine/docs/distributed-training-containers)."
         },
         "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\u003cdl\u003e\n  \u003cdt\u003estandard\u003c/dt\u003e\n  \u003cdd\u003e\n  A basic machine configuration suitable for training simple models with\n  small to moderate datasets.\n  \u003c/dd\u003e\n  \u003cdt\u003elarge_model\u003c/dt\u003e\n  \u003cdd\u003e\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  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_s\u003c/dt\u003e\n  \u003cdd\u003e\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  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine with roughly twice the number of cores and roughly double the\n  memory of \u003ci\u003ecomplex_model_s\u003c/i\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine with roughly twice the number of cores and roughly double the\n  memory of \u003ci\u003ecomplex_model_m\u003c/i\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla K80 GPU. See more about\n  \u003ca href=\"/ml-engine/docs/tensorflow/using-gpus\"\u003eusing GPUs to\n  train your model\u003c/a\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that also includes\n  four NVIDIA Tesla K80 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_l\u003c/i\u003e that also includes\n  eight NVIDIA Tesla K80 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_p100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla P100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_p100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that also includes\n  four NVIDIA Tesla P100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla V100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003elarge_model_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003elarge_model\u003c/i\u003e that\n  also includes a single NVIDIA Tesla V100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that\n  also includes four NVIDIA Tesla V100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_l\u003c/i\u003e that\n  also includes eight NVIDIA Tesla V100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecloud_tpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A TPU VM including one Cloud TPU. See more about\n  \u003ca href=\"/ml-engine/docs/tensorflow/using-tpus\"\u003eusing TPUs to train\n  your model\u003c/a\u003e.\n  \u003c/dd\u003e\n\u003c/dl\u003e\n\nYou must set this value when `scaleTier` is set to `CUSTOM`.",
+          "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\u003cdl\u003e\n  \u003cdt\u003estandard\u003c/dt\u003e\n  \u003cdd\u003e\n  A basic machine configuration suitable for training simple models with\n  small to moderate datasets.\n  \u003c/dd\u003e\n  \u003cdt\u003elarge_model\u003c/dt\u003e\n  \u003cdd\u003e\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  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_s\u003c/dt\u003e\n  \u003cdd\u003e\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  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine with roughly twice the number of cores and roughly double the\n  memory of \u003ci\u003ecomplex_model_s\u003c/i\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine with roughly twice the number of cores and roughly double the\n  memory of \u003ci\u003ecomplex_model_m\u003c/i\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla K80 GPU. See more about\n  \u003ca href=\"/ml-engine/docs/tensorflow/using-gpus\"\u003eusing GPUs to\n  train your model\u003c/a\u003e.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that also includes\n  four NVIDIA Tesla K80 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l_gpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_l\u003c/i\u003e that also includes\n  eight NVIDIA Tesla K80 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_p100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla P100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_p100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that also includes\n  four NVIDIA Tesla P100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003estandard_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003estandard\u003c/i\u003e that\n  also includes a single NVIDIA Tesla V100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003elarge_model_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003elarge_model\u003c/i\u003e that\n  also includes a single NVIDIA Tesla V100 GPU.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_m_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_m\u003c/i\u003e that\n  also includes four NVIDIA Tesla V100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecomplex_model_l_v100\u003c/dt\u003e\n  \u003cdd\u003e\n  A machine equivalent to \u003ci\u003ecomplex_model_l\u003c/i\u003e that\n  also includes eight NVIDIA Tesla V100 GPUs.\n  \u003c/dd\u003e\n  \u003cdt\u003ecloud_tpu\u003c/dt\u003e\n  \u003cdd\u003e\n  A TPU VM including one Cloud TPU. See more about\n  \u003ca href=\"/ml-engine/docs/tensorflow/using-tpus\"\u003eusing TPUs to train\n  your model\u003c/a\u003e.\n  \u003c/dd\u003e\n\u003c/dl\u003e\n\nYou may also use certain Compute Engine machine types directly in this\nfield. The following types are supported:\n\n- `n1-standard-4`\n- `n1-standard-8`\n- `n1-standard-16`\n- `n1-standard-32`\n- `n1-standard-64`\n- `n1-standard-96`\n- `n1-highmem-2`\n- `n1-highmem-4`\n- `n1-highmem-8`\n- `n1-highmem-16`\n- `n1-highmem-32`\n- `n1-highmem-64`\n- `n1-highmem-96`\n- `n1-highcpu-16`\n- `n1-highcpu-32`\n- `n1-highcpu-64`\n- `n1-highcpu-96`\n\nSee more about [using Compute Engine machine\ntypes](/ml-engine/docs/tensorflow/machine-types#compute-engine-machine-types).\n\nYou must set this value when `scaleTier` is set to `CUSTOM`.",
           "type": "string"
         },
         "packageUris": {
@@ -1836,7 +1837,7 @@
         },
         "parameterServerConfig": {
           "$ref": "GoogleCloudMlV1__ReplicaConfig",
-          "description": "Optional. The config of parameter servers.\n\nIf `parameterServerConfig.imageUri` has not been set, the value of\n`masterConfig.imageUri` will be used."
+          "description": "Optional. The configuration for parameter servers.\n\nYou should only set `parameterServerConfig.acceleratorConfig` if\n`parameterServerConfigType` is set to a Compute Engine machine type. [Learn\nabout restrictions on accelerator configurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `parameterServerConfig.imageUri` only if you build a custom image for\nyour parameter server. If `parameterServerConfig.imageUri` has not been\nset, Cloud ML Engine uses the value of `masterConfig.imageUri`.\nLearn more about [configuring custom containers](/ml-engine/docs/distributed-training-containers)."
         },
         "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`.\n\nThe default value is zero.",
@@ -1844,7 +1845,7 @@
           "type": "string"
         },
         "parameterServerType": {
-          "description": "Optional. Specifies the type of virtual machine to use for your training\njob's parameter server.\n\nThe supported values are the same as those described in the entry for\n`master_type`.\n\nThis value must be present when `scaleTier` is set to `CUSTOM` and\n`parameter_server_count` is greater than zero.",
+          "description": "Optional. Specifies the type of virtual machine to use for your training\njob's parameter server.\n\nThe supported values are the same as those described in the entry for\n`master_type`.\n\nThis value must be consistent with the category of machine type that\n`masterType` uses. In other words, both must be Cloud ML Engine machine\ntypes or both must be Compute Engine machine types.\n\nThis value must be present when `scaleTier` is set to `CUSTOM` and\n`parameter_server_count` is greater than zero.",
           "type": "string"
         },
         "pythonModule": {
@@ -1885,7 +1886,7 @@
         },
         "workerConfig": {
           "$ref": "GoogleCloudMlV1__ReplicaConfig",
-          "description": "Optional. The configrations for workers.\n\nIf `workerConfig.imageUri` has not been set, the value of\n`masterConfig.imageUri` will be used."
+          "description": "Optional. The configuration for workers.\n\nYou should only set `workerConfig.acceleratorConfig` if `workerType` is set\nto a Compute Engine machine type. [Learn about restrictions on accelerator\nconfigurations for\ntraining.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-machine-types-with-gpu)\n\nSet `workerConfig.imageUri` only if you build a custom image for your\nworker. If `workerConfig.imageUri` has not been set, Cloud ML Engine uses\nthe value of `masterConfig.imageUri`. Learn more about\n[configuring custom containers](/ml-engine/docs/distributed-training-containers)."
         },
         "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`.\n\nThe default value is zero.",
@@ -1893,7 +1894,7 @@
           "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.",
+          "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 consistent with the category of machine type that\n`masterType` uses. In other words, both must be Cloud ML Engine machine\ntypes or both must be Compute Engine machine types.\n\nIf you use `cloud_tpu` for this value, see special instructions for\n[configuring a custom TPU\nmachine](/ml-engine/docs/tensorflow/using-tpus#configuring_a_custom_tpu_machine).\n\nThis value must be present when `scaleTier` is set to `CUSTOM` and\n`workerCount` is greater than zero.",
           "type": "string"
         }
       },
@@ -1928,7 +1929,7 @@
       "type": "object"
     },
     "GoogleCloudMlV1__Version": {
-      "description": "Represents a version of the model.\n\nEach version is a trained model deployed in the cloud, ready to handle\nprediction requests. A model can have multiple versions. You can get\ninformation about all of the versions of a given model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).",
+      "description": "Represents a version of the model.\n\nEach version is a trained model deployed in the cloud, ready to handle\nprediction requests. A model can have multiple versions. You can get\ninformation about all of the versions of a given model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).\nNext ID: 29",
       "id": "GoogleCloudMlV1__Version",
       "properties": {
         "autoScaling": {
@@ -1990,7 +1991,7 @@
           "type": "string"
         },
         "machineType": {
-          "description": "Optional. The type of machine on which to serve the model. Currently only\napplies to online prediction service.\nThe following are currently supported and will be deprecated in\nBeta release.\n  mls1-highmem-1    1 core    2 Gb RAM\n  mls1-highcpu-4    4 core    2 Gb RAM\nThe following are available in Beta:\n  mls1-c1-m2        1 core    2 Gb RAM   Default\n  mls1-c4-m2        4 core    2 Gb RAM",
+          "description": "Optional. The type of machine on which to serve the model. Currently only\napplies to online prediction service.\n\u003cdl\u003e\n  \u003cdt\u003emls1-c1-m2\u003c/dt\u003e\n  \u003cdd\u003e\n  The \u003cb\u003edefault\u003c/b\u003e machine type, with 1 core and 2 GB RAM. The deprecated\n  name for this machine type is \"mls1-highmem-1\".\n  \u003c/dd\u003e\n  \u003cdt\u003emls1-c4-m2\u003c/dt\u003e\n  \u003cdd\u003e\n  In \u003cb\u003eBeta\u003c/b\u003e. This machine type has 4 cores and 2 GB RAM. The\n  deprecated name for this machine type is \"mls1-highcpu-4\".\n  \u003c/dd\u003e\n\u003c/dl\u003e",
           "type": "string"
         },
         "manualScaling": {
diff --git a/ml/v1/ml-gen.go b/ml/v1/ml-gen.go
index 62aadbb..ca66864 100644
--- a/ml/v1/ml-gen.go
+++ b/ml/v1/ml-gen.go
@@ -301,7 +301,7 @@
 	// the job.
 	Count int64 `json:"count,omitempty,string"`
 
-	// Type: The available types of accelerators.
+	// Type: The type of accelerator to use.
 	//
 	// Possible values:
 	//   "ACCELERATOR_TYPE_UNSPECIFIED" - Unspecified accelerator type.
@@ -310,7 +310,7 @@
 	//   "NVIDIA_TESLA_P100" - Nvidia Tesla P100 GPU.
 	//   "NVIDIA_TESLA_V100" - Nvidia Tesla V100 GPU.
 	//   "NVIDIA_TESLA_P4" - Nvidia Tesla P4 GPU.
-	//   "TPU_V2" - TPU V2
+	//   "TPU_V2" - TPU v2.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Count") to
@@ -380,11 +380,13 @@
 	//   }
 	// }
 	// </pre>
-	// HTTP request:
+	// HTTP
+	// request:
 	// <pre>
 	// PATCH
-	// https://ml.googleapis.com/v1/{name=projects/*/models/*/versions/*}?update_mask=autoScaling.minNodes -d
-	// @./update_body.json
+	// https://ml.googleapis.com/v1/{name=projects/*/mod
+	// els/*/versions/*}?update_mask=autoScaling.minNodes
+	// -d @./update_body.json
 	// </pre>
 	MinNodes int64 `json:"minNodes,omitempty"`
 
@@ -426,7 +428,7 @@
 	//   "NVIDIA_TESLA_P100" - Nvidia Tesla P100 GPU.
 	//   "NVIDIA_TESLA_V100" - Nvidia Tesla V100 GPU.
 	//   "NVIDIA_TESLA_P4" - Nvidia Tesla P4 GPU.
-	//   "TPU_V2" - TPU V2
+	//   "TPU_V2" - TPU v2.
 	AvailableAccelerators []string `json:"availableAccelerators,omitempty"`
 
 	// Possible values:
@@ -1506,13 +1508,22 @@
 	return nil
 }
 
-// GoogleCloudMlV1__ReplicaConfig: Represents the configration for a
+// GoogleCloudMlV1__ReplicaConfig: Represents the configuration for a
 // replica in a cluster.
 type GoogleCloudMlV1__ReplicaConfig struct {
+	// AcceleratorConfig: Represents the type and number of accelerators
+	// used by the replica.
+	// [Learn about restrictions on accelerator configurations
+	// for
+	// training.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-ma
+	// chine-types-with-gpu)
 	AcceleratorConfig *GoogleCloudMlV1__AcceleratorConfig `json:"acceleratorConfig,omitempty"`
 
-	// ImageUri: The docker image to run on worker.
-	// This image must be in Google Container Registry.
+	// ImageUri: The Docker image to run on the replica. This image must be
+	// in Container
+	// Registry. Learn more about [configuring
+	// custom
+	// containers](/ml-engine/docs/distributed-training-containers).
 	ImageUri string `json:"imageUri,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AcceleratorConfig")
@@ -1570,11 +1581,24 @@
 	// this field is that Cloud ML validates the path for use in training.
 	JobDir string `json:"jobDir,omitempty"`
 
-	// MasterConfig: Optional. The configuration for master.
+	// MasterConfig: Optional. The configuration for your master
+	// worker.
 	//
-	// Only one of `masterConfig.imageUri` and `runtimeVersion` should
-	// be
-	// set.
+	// You should only set `masterConfig.acceleratorConfig` if `masterType`
+	// is set
+	// to a Compute Engine machine type. Learn about [restrictions on
+	// accelerator
+	// configurations
+	// for
+	// training.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-ma
+	// chine-types-with-gpu)
+	//
+	// Set `masterConfig.imageUri` only if you build a custom image. Only
+	// one of
+	// `masterConfig.imageUri` and `runtimeVersion` should be set. Learn
+	// more about
+	// [configuring custom
+	// containers](/ml-engine/docs/distributed-training-containers).
 	MasterConfig *GoogleCloudMlV1__ReplicaConfig `json:"masterConfig,omitempty"`
 
 	// MasterType: Optional. Specifies the type of virtual machine to use
@@ -1674,6 +1698,33 @@
 	//   </dd>
 	// </dl>
 	//
+	// You may also use certain Compute Engine machine types directly in
+	// this
+	// field. The following types are supported:
+	//
+	// - `n1-standard-4`
+	// - `n1-standard-8`
+	// - `n1-standard-16`
+	// - `n1-standard-32`
+	// - `n1-standard-64`
+	// - `n1-standard-96`
+	// - `n1-highmem-2`
+	// - `n1-highmem-4`
+	// - `n1-highmem-8`
+	// - `n1-highmem-16`
+	// - `n1-highmem-32`
+	// - `n1-highmem-64`
+	// - `n1-highmem-96`
+	// - `n1-highcpu-16`
+	// - `n1-highcpu-32`
+	// - `n1-highcpu-64`
+	// - `n1-highcpu-96`
+	//
+	// See more about [using Compute Engine
+	// machine
+	// types](/ml-engine/docs/tensorflow/machine-types#compute-engine
+	// -machine-types).
+	//
 	// You must set this value when `scaleTier` is set to `CUSTOM`.
 	MasterType string `json:"masterType,omitempty"`
 
@@ -1683,11 +1734,25 @@
 	// The maximum number of package URIs is 100.
 	PackageUris []string `json:"packageUris,omitempty"`
 
-	// ParameterServerConfig: Optional. The config of parameter servers.
+	// ParameterServerConfig: Optional. The configuration for parameter
+	// servers.
 	//
-	// If `parameterServerConfig.imageUri` has not been set, the value
-	// of
-	// `masterConfig.imageUri` will be used.
+	// You should only set `parameterServerConfig.acceleratorConfig`
+	// if
+	// `parameterServerConfigType` is set to a Compute Engine machine type.
+	// [Learn
+	// about restrictions on accelerator configurations
+	// for
+	// training.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-ma
+	// chine-types-with-gpu)
+	//
+	// Set `parameterServerConfig.imageUri` only if you build a custom image
+	// for
+	// your parameter server. If `parameterServerConfig.imageUri` has not
+	// been
+	// set, Cloud ML Engine uses the value of `masterConfig.imageUri`.
+	// Learn more about [configuring custom
+	// containers](/ml-engine/docs/distributed-training-containers).
 	ParameterServerConfig *GoogleCloudMlV1__ReplicaConfig `json:"parameterServerConfig,omitempty"`
 
 	// ParameterServerCount: Optional. The number of parameter server
@@ -1711,6 +1776,12 @@
 	// for
 	// `master_type`.
 	//
+	// This value must be consistent with the category of machine type
+	// that
+	// `masterType` uses. In other words, both must be Cloud ML Engine
+	// machine
+	// types or both must be Compute Engine machine types.
+	//
 	// This value must be present when `scaleTier` is set to `CUSTOM`
 	// and
 	// `parameter_server_count` is greater than zero.
@@ -1799,11 +1870,24 @@
 	// different from your worker type and master type.
 	ScaleTier string `json:"scaleTier,omitempty"`
 
-	// WorkerConfig: Optional. The configrations for workers.
+	// WorkerConfig: Optional. The configuration for workers.
 	//
-	// If `workerConfig.imageUri` has not been set, the value
-	// of
-	// `masterConfig.imageUri` will be used.
+	// You should only set `workerConfig.acceleratorConfig` if `workerType`
+	// is set
+	// to a Compute Engine machine type. [Learn about restrictions on
+	// accelerator
+	// configurations
+	// for
+	// training.](/ml-engine/docs/tensorflow/using-gpus#compute-engine-ma
+	// chine-types-with-gpu)
+	//
+	// Set `workerConfig.imageUri` only if you build a custom image for
+	// your
+	// worker. If `workerConfig.imageUri` has not been set, Cloud ML Engine
+	// uses
+	// the value of `masterConfig.imageUri`. Learn more about
+	// [configuring custom
+	// containers](/ml-engine/docs/distributed-training-containers).
 	WorkerConfig *GoogleCloudMlV1__ReplicaConfig `json:"workerConfig,omitempty"`
 
 	// WorkerCount: Optional. The number of worker replicas to use for the
@@ -1826,6 +1910,19 @@
 	// for
 	// `masterType`.
 	//
+	// This value must be consistent with the category of machine type
+	// that
+	// `masterType` uses. In other words, both must be Cloud ML Engine
+	// machine
+	// types or both must be Compute Engine machine types.
+	//
+	// If you use `cloud_tpu` for this value, see special instructions
+	// for
+	// [configuring a custom
+	// TPU
+	// machine](/ml-engine/docs/tensorflow/using-tpus#configuring_a_custo
+	// m_tpu_machine).
+	//
 	// This value must be present when `scaleTier` is set to `CUSTOM`
 	// and
 	// `workerCount` is greater than zero.
@@ -1921,6 +2018,7 @@
 // calling
 // [projects.models.versions.list](/ml-engine/reference/rest/v1/p
 // rojects.models.versions/list).
+// Next ID: 29
 type GoogleCloudMlV1__Version struct {
 	// AutoScaling: Automatically scale the number of nodes used to serve
 	// the model in
@@ -2022,13 +2120,19 @@
 	// MachineType: Optional. The type of machine on which to serve the
 	// model. Currently only
 	// applies to online prediction service.
-	// The following are currently supported and will be deprecated in
-	// Beta release.
-	//   mls1-highmem-1    1 core    2 Gb RAM
-	//   mls1-highcpu-4    4 core    2 Gb RAM
-	// The following are available in Beta:
-	//   mls1-c1-m2        1 core    2 Gb RAM   Default
-	//   mls1-c4-m2        4 core    2 Gb RAM
+	// <dl>
+	//   <dt>mls1-c1-m2</dt>
+	//   <dd>
+	//   The <b>default</b> machine type, with 1 core and 2 GB RAM. The
+	// deprecated
+	//   name for this machine type is "mls1-highmem-1".
+	//   </dd>
+	//   <dt>mls1-c4-m2</dt>
+	//   <dd>
+	//   In <b>Beta</b>. This machine type has 4 cores and 2 GB RAM. The
+	//   deprecated name for this machine type is "mls1-highcpu-4".
+	//   </dd>
+	// </dl>
 	MachineType string `json:"machineType,omitempty"`
 
 	// ManualScaling: Manually select the number of nodes to use for serving
diff --git a/remotebuildexecution/v1/remotebuildexecution-gen.go b/remotebuildexecution/v1/remotebuildexecution-gen.go
index f6984f1..ed704f8 100644
--- a/remotebuildexecution/v1/remotebuildexecution-gen.go
+++ b/remotebuildexecution/v1/remotebuildexecution-gen.go
@@ -4460,7 +4460,7 @@
 		return nil, err
 	}
 	req.Header = reqHeaders
-	gensupport.SetGetBody(req, getBody)
+	req.GetBody = getBody
 	googleapi.Expand(req.URL, map[string]string{
 		"resourceName": c.resourceName,
 	})
diff --git a/storagetransfer/v1/storagetransfer-api.json b/storagetransfer/v1/storagetransfer-api.json
index f7ba476..d6ae498 100644
--- a/storagetransfer/v1/storagetransfer-api.json
+++ b/storagetransfer/v1/storagetransfer-api.json
@@ -13,7 +13,8 @@
   "batchPath": "batch",
   "description": "Transfers data from external data sources to a Google Cloud Storage bucket or between Google Cloud Storage buckets.",
   "discoveryVersion": "v1",
-  "documentationLink": "https://cloud.google.com/storage/transfer",
+  "documentationLink": "https://cloud.google.com/storage-transfer/docs",
+  "fullyEncodeReservedExpansion": true,
   "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
     "x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -419,7 +420,7 @@
       }
     }
   },
-  "revision": "20190204",
+  "revision": "20190219",
   "rootUrl": "https://storagetransfer.googleapis.com/",
   "schemas": {
     "AwsAccessKey": {
diff --git a/storagetransfer/v1/storagetransfer-gen.go b/storagetransfer/v1/storagetransfer-gen.go
index 1d7f2ab..83455c5 100644
--- a/storagetransfer/v1/storagetransfer-gen.go
+++ b/storagetransfer/v1/storagetransfer-gen.go
@@ -6,7 +6,7 @@
 
 // Package storagetransfer provides access to the Storage Transfer API.
 //
-// See https://cloud.google.com/storage/transfer
+// See https://cloud.google.com/storage-transfer/docs
 //
 // Usage example:
 //
diff --git a/tagmanager/v1/tagmanager-api.json b/tagmanager/v1/tagmanager-api.json
index 24eb071..c6b0436 100644
--- a/tagmanager/v1/tagmanager-api.json
+++ b/tagmanager/v1/tagmanager-api.json
@@ -33,7 +33,7 @@
   "description": "Accesses Tag Manager accounts and containers.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/tag-manager/api/v1/",
-  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/AcojO3_w-JnZ8yjEeHtkNaX66BU\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/TbuGpxqx0Dewg2BYWTVb8kdexNU\"",
   "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"
@@ -452,51 +452,6 @@
                     "https://www.googleapis.com/auth/tagmanager.readonly"
                   ]
                 },
-                "patch": {
-                  "description": "Updates a GTM Environment. This method supports patch semantics.",
-                  "httpMethod": "PATCH",
-                  "id": "tagmanager.accounts.containers.environments.patch",
-                  "parameterOrder": [
-                    "accountId",
-                    "containerId",
-                    "environmentId"
-                  ],
-                  "parameters": {
-                    "accountId": {
-                      "description": "The GTM Account ID.",
-                      "location": "path",
-                      "required": true,
-                      "type": "string"
-                    },
-                    "containerId": {
-                      "description": "The GTM Container ID.",
-                      "location": "path",
-                      "required": true,
-                      "type": "string"
-                    },
-                    "environmentId": {
-                      "description": "The GTM Environment ID.",
-                      "location": "path",
-                      "required": true,
-                      "type": "string"
-                    },
-                    "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the environment in storage.",
-                      "location": "query",
-                      "type": "string"
-                    }
-                  },
-                  "path": "accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
-                  "request": {
-                    "$ref": "Environment"
-                  },
-                  "response": {
-                    "$ref": "Environment"
-                  },
-                  "scopes": [
-                    "https://www.googleapis.com/auth/tagmanager.edit.containers"
-                  ]
-                },
                 "update": {
                   "description": "Updates a GTM Environment.",
                   "httpMethod": "PUT",
@@ -1894,7 +1849,7 @@
       }
     }
   },
-  "revision": "20171108",
+  "revision": "20190220",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
diff --git a/tagmanager/v1/tagmanager-gen.go b/tagmanager/v1/tagmanager-gen.go
index e4472bd..bd103f8 100644
--- a/tagmanager/v1/tagmanager-gen.go
+++ b/tagmanager/v1/tagmanager-gen.go
@@ -3647,177 +3647,6 @@
 
 }
 
-// method id "tagmanager.accounts.containers.environments.patch":
-
-type AccountsContainersEnvironmentsPatchCall struct {
-	s             *Service
-	accountId     string
-	containerId   string
-	environmentId string
-	environment   *Environment
-	urlParams_    gensupport.URLParams
-	ctx_          context.Context
-	header_       http.Header
-}
-
-// Patch: Updates a GTM Environment. This method supports patch
-// semantics.
-func (r *AccountsContainersEnvironmentsService) Patch(accountId string, containerId string, environmentId string, environment *Environment) *AccountsContainersEnvironmentsPatchCall {
-	c := &AccountsContainersEnvironmentsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.accountId = accountId
-	c.containerId = containerId
-	c.environmentId = environmentId
-	c.environment = environment
-	return c
-}
-
-// Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the environment in
-// storage.
-func (c *AccountsContainersEnvironmentsPatchCall) Fingerprint(fingerprint string) *AccountsContainersEnvironmentsPatchCall {
-	c.urlParams_.Set("fingerprint", fingerprint)
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *AccountsContainersEnvironmentsPatchCall) Fields(s ...googleapi.Field) *AccountsContainersEnvironmentsPatchCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *AccountsContainersEnvironmentsPatchCall) Context(ctx context.Context) *AccountsContainersEnvironmentsPatchCall {
-	c.ctx_ = ctx
-	return c
-}
-
-// Header returns an http.Header that can be modified by the caller to
-// add HTTP headers to the request.
-func (c *AccountsContainersEnvironmentsPatchCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *AccountsContainersEnvironmentsPatchCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.environment)
-	if err != nil {
-		return nil, err
-	}
-	reqHeaders.Set("Content-Type", "application/json")
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "accounts/{accountId}/containers/{containerId}/environments/{environmentId}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("PATCH", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"accountId":     c.accountId,
-		"containerId":   c.containerId,
-		"environmentId": c.environmentId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "tagmanager.accounts.containers.environments.patch" call.
-// Exactly one of *Environment or error will be non-nil. Any non-2xx
-// status code is an error. Response headers are in either
-// *Environment.ServerResponse.Header or (if a response was returned at
-// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
-// to check whether the returned error was because
-// http.StatusNotModified was returned.
-func (c *AccountsContainersEnvironmentsPatchCall) Do(opts ...googleapi.CallOption) (*Environment, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &Environment{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	target := &ret
-	if err := gensupport.DecodeResponse(target, res); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Updates a GTM Environment. This method supports patch semantics.",
-	//   "httpMethod": "PATCH",
-	//   "id": "tagmanager.accounts.containers.environments.patch",
-	//   "parameterOrder": [
-	//     "accountId",
-	//     "containerId",
-	//     "environmentId"
-	//   ],
-	//   "parameters": {
-	//     "accountId": {
-	//       "description": "The GTM Account ID.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "containerId": {
-	//       "description": "The GTM Container ID.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "environmentId": {
-	//       "description": "The GTM Environment ID.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the environment in storage.",
-	//       "location": "query",
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "accounts/{accountId}/containers/{containerId}/environments/{environmentId}",
-	//   "request": {
-	//     "$ref": "Environment"
-	//   },
-	//   "response": {
-	//     "$ref": "Environment"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
-	//   ]
-	// }
-
-}
-
 // method id "tagmanager.accounts.containers.environments.update":
 
 type AccountsContainersEnvironmentsUpdateCall struct {
diff --git a/tagmanager/v2/tagmanager-api.json b/tagmanager/v2/tagmanager-api.json
index 84b4f76..b2587c4 100644
--- a/tagmanager/v2/tagmanager-api.json
+++ b/tagmanager/v2/tagmanager-api.json
@@ -33,7 +33,7 @@
   "description": "Accesses Tag Manager accounts and containers.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/tag-manager/api/v2/",
-  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/Ly5SZRQhmBss2ESZ1jrbd2AlrXQ\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/PmEouyfH5b4k97WRPBvohMNYPc8\"",
   "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"
@@ -406,37 +406,6 @@
                     "https://www.googleapis.com/auth/tagmanager.readonly"
                   ]
                 },
-                "patch": {
-                  "description": "Updates a GTM Environment. This method supports patch semantics.",
-                  "httpMethod": "PATCH",
-                  "id": "tagmanager.accounts.containers.environments.patch",
-                  "parameterOrder": [
-                    "path"
-                  ],
-                  "parameters": {
-                    "fingerprint": {
-                      "description": "When provided, this fingerprint must match the fingerprint of the environment in storage.",
-                      "location": "query",
-                      "type": "string"
-                    },
-                    "path": {
-                      "description": "GTM Environment's API relative path. Example: accounts/{account_id}/containers/{container_id}/environments/{environment_id}",
-                      "location": "path",
-                      "required": true,
-                      "type": "string"
-                    }
-                  },
-                  "path": "{+path}",
-                  "request": {
-                    "$ref": "Environment"
-                  },
-                  "response": {
-                    "$ref": "Environment"
-                  },
-                  "scopes": [
-                    "https://www.googleapis.com/auth/tagmanager.edit.containers"
-                  ]
-                },
                 "reauthorize": {
                   "description": "Re-generates the authorization code for a GTM Environment.",
                   "httpMethod": "POST",
@@ -840,26 +809,6 @@
                     "https://www.googleapis.com/auth/tagmanager.readonly"
                   ]
                 },
-                "getProposal": {
-                  "description": "Gets a GTM Workspace Proposal.",
-                  "httpMethod": "GET",
-                  "id": "tagmanager.accounts.containers.workspaces.getProposal",
-                  "parameterOrder": [
-                    "path"
-                  ],
-                  "parameters": {
-                    "path": {
-                      "description": "GTM workspace proposal's relative path: Example: accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal",
-                      "location": "path",
-                      "required": true,
-                      "type": "string"
-                    }
-                  },
-                  "path": "{+path}",
-                  "response": {
-                    "$ref": "WorkspaceProposal"
-                  }
-                },
                 "getStatus": {
                   "description": "Finds conflicting and modified entities in the workspace.",
                   "httpMethod": "GET",
@@ -1017,29 +966,6 @@
                   "scopes": [
                     "https://www.googleapis.com/auth/tagmanager.edit.containers"
                   ]
-                },
-                "updateProposal": {
-                  "description": "Updates a GTM Workspace Proposal.",
-                  "httpMethod": "PUT",
-                  "id": "tagmanager.accounts.containers.workspaces.updateProposal",
-                  "parameterOrder": [
-                    "path"
-                  ],
-                  "parameters": {
-                    "path": {
-                      "description": "GTM workspace proposal's relative path: Example: accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal",
-                      "location": "path",
-                      "required": true,
-                      "type": "string"
-                    }
-                  },
-                  "path": "{+path}",
-                  "request": {
-                    "$ref": "UpdateWorkspaceProposalRequest"
-                  },
-                  "response": {
-                    "$ref": "WorkspaceProposal"
-                  }
                 }
               },
               "resources": {
@@ -2021,50 +1947,6 @@
                     }
                   }
                 },
-                "proposal": {
-                  "methods": {
-                    "create": {
-                      "description": "Creates a GTM Workspace Proposal.",
-                      "httpMethod": "POST",
-                      "id": "tagmanager.accounts.containers.workspaces.proposal.create",
-                      "parameterOrder": [
-                        "parent"
-                      ],
-                      "parameters": {
-                        "parent": {
-                          "description": "GTM Workspace's API relative path. Example: accounts/{aid}/containers/{cid}/workspace/{wid}",
-                          "location": "path",
-                          "required": true,
-                          "type": "string"
-                        }
-                      },
-                      "path": "{+parent}/proposal",
-                      "request": {
-                        "$ref": "CreateWorkspaceProposalRequest"
-                      },
-                      "response": {
-                        "$ref": "WorkspaceProposal"
-                      }
-                    },
-                    "delete": {
-                      "description": "Deletes a GTM Workspace Proposal.",
-                      "httpMethod": "DELETE",
-                      "id": "tagmanager.accounts.containers.workspaces.proposal.delete",
-                      "parameterOrder": [
-                        "path"
-                      ],
-                      "parameters": {
-                        "path": {
-                          "description": "GTM workspace proposal's relative path: Example: accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal",
-                          "location": "path",
-                          "required": true,
-                          "type": "string"
-                        }
-                      },
-                      "path": "{+path}"
-                    }
-                  }
-                },
                 "tags": {
                   "methods": {
                     "create": {
@@ -2550,6 +2432,168 @@
                       ]
                     }
                   }
+                },
+                "zones": {
+                  "methods": {
+                    "create": {
+                      "description": "Creates a GTM Zone.",
+                      "httpMethod": "POST",
+                      "id": "tagmanager.accounts.containers.workspaces.zones.create",
+                      "parameterOrder": [
+                        "parent"
+                      ],
+                      "parameters": {
+                        "parent": {
+                          "description": "GTM Workspace's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}",
+                          "location": "path",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "{+parent}/zones",
+                      "request": {
+                        "$ref": "Zone"
+                      },
+                      "response": {
+                        "$ref": "Zone"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/tagmanager.edit.containers"
+                      ]
+                    },
+                    "delete": {
+                      "description": "Deletes a GTM Zone.",
+                      "httpMethod": "DELETE",
+                      "id": "tagmanager.accounts.containers.workspaces.zones.delete",
+                      "parameterOrder": [
+                        "path"
+                      ],
+                      "parameters": {
+                        "path": {
+                          "description": "GTM Zone's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}",
+                          "location": "path",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "{+path}",
+                      "scopes": [
+                        "https://www.googleapis.com/auth/tagmanager.edit.containers"
+                      ]
+                    },
+                    "get": {
+                      "description": "Gets a GTM Zone.",
+                      "httpMethod": "GET",
+                      "id": "tagmanager.accounts.containers.workspaces.zones.get",
+                      "parameterOrder": [
+                        "path"
+                      ],
+                      "parameters": {
+                        "path": {
+                          "description": "GTM Zone's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}",
+                          "location": "path",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "{+path}",
+                      "response": {
+                        "$ref": "Zone"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/tagmanager.edit.containers",
+                        "https://www.googleapis.com/auth/tagmanager.readonly"
+                      ]
+                    },
+                    "list": {
+                      "description": "Lists all GTM Zones of a GTM container workspace.",
+                      "httpMethod": "GET",
+                      "id": "tagmanager.accounts.containers.workspaces.zones.list",
+                      "parameterOrder": [
+                        "parent"
+                      ],
+                      "parameters": {
+                        "pageToken": {
+                          "description": "Continuation token for fetching the next page of results.",
+                          "location": "query",
+                          "type": "string"
+                        },
+                        "parent": {
+                          "description": "GTM Workspace's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}",
+                          "location": "path",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "{+parent}/zones",
+                      "response": {
+                        "$ref": "ListZonesResponse"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/tagmanager.edit.containers",
+                        "https://www.googleapis.com/auth/tagmanager.readonly"
+                      ]
+                    },
+                    "revert": {
+                      "description": "Reverts changes to a GTM Zone in a GTM Workspace.",
+                      "httpMethod": "POST",
+                      "id": "tagmanager.accounts.containers.workspaces.zones.revert",
+                      "parameterOrder": [
+                        "path"
+                      ],
+                      "parameters": {
+                        "fingerprint": {
+                          "description": "When provided, this fingerprint must match the fingerprint of the zone in storage.",
+                          "location": "query",
+                          "type": "string"
+                        },
+                        "path": {
+                          "description": "GTM Zone's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}",
+                          "location": "path",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "{+path}:revert",
+                      "response": {
+                        "$ref": "RevertZoneResponse"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/tagmanager.edit.containers"
+                      ]
+                    },
+                    "update": {
+                      "description": "Updates a GTM Zone.",
+                      "httpMethod": "PUT",
+                      "id": "tagmanager.accounts.containers.workspaces.zones.update",
+                      "parameterOrder": [
+                        "path"
+                      ],
+                      "parameters": {
+                        "fingerprint": {
+                          "description": "When provided, this fingerprint must match the fingerprint of the zone in storage.",
+                          "location": "query",
+                          "type": "string"
+                        },
+                        "path": {
+                          "description": "GTM Zone's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}",
+                          "location": "path",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "{+path}",
+                      "request": {
+                        "$ref": "Zone"
+                      },
+                      "response": {
+                        "$ref": "Zone"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/tagmanager.edit.containers"
+                      ]
+                    }
+                  }
                 }
               }
             }
@@ -2685,7 +2729,7 @@
       }
     }
   },
-  "revision": "20171108",
+  "revision": "20190220",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -3180,6 +3224,13 @@
           "description": "The Container Version ID uniquely identifies the GTM Container Version.",
           "type": "string"
         },
+        "customTemplate": {
+          "description": "The custom templates in the container that this version was taken from.",
+          "items": {
+            "$ref": "CustomTemplate"
+          },
+          "type": "array"
+        },
         "deleted": {
           "description": "A value of true indicates this container version has been deleted.",
           "type": "boolean"
@@ -3266,6 +3317,10 @@
           "description": "Container version display name.",
           "type": "string"
         },
+        "numCustomTemplates": {
+          "description": "Number of custom templates in the container version.",
+          "type": "string"
+        },
         "numMacros": {
           "description": "Number of macros in the container version.",
           "type": "string"
@@ -3348,20 +3403,45 @@
       },
       "type": "object"
     },
-    "CreateWorkspaceProposalRequest": {
-      "description": "Creates a workspace proposal to start a review of a workspace.",
-      "id": "CreateWorkspaceProposalRequest",
+    "CustomTemplate": {
+      "description": "Represents a Google Tag Manager Custom Template's contents.",
+      "id": "CustomTemplate",
       "properties": {
-        "initialComment": {
-          "$ref": "WorkspaceProposalHistoryComment",
-          "description": "If present, an initial comment to associate with the workspace proposal."
+        "accountId": {
+          "description": "GTM Account ID.",
+          "type": "string"
         },
-        "reviewers": {
-          "description": "List of users to review the workspace proposal.",
-          "items": {
-            "$ref": "WorkspaceProposalUser"
-          },
-          "type": "array"
+        "containerId": {
+          "description": "GTM Container ID.",
+          "type": "string"
+        },
+        "fingerprint": {
+          "description": "The fingerprint of the GTM Custom Template as computed at storage time. This value is recomputed whenever the template is modified.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Custom Template display name.",
+          "type": "string"
+        },
+        "path": {
+          "description": "GTM Custom Template's API relative path.",
+          "type": "string"
+        },
+        "tagManagerUrl": {
+          "description": "Auto generated link to the tag manager UI",
+          "type": "string"
+        },
+        "templateData": {
+          "description": "The custom template in text format.",
+          "type": "string"
+        },
+        "templateId": {
+          "description": "The Custom Template ID uniquely identifies the GTM custom template.",
+          "type": "string"
+        },
+        "workspaceId": {
+          "description": "GTM Workspace ID.",
+          "type": "string"
         }
       },
       "type": "object"
@@ -3792,6 +3872,23 @@
       },
       "type": "object"
     },
+    "ListZonesResponse": {
+      "id": "ListZonesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "Continuation token for fetching the next page of results.",
+          "type": "string"
+        },
+        "zone": {
+          "description": "All GTM Zones of a GTM Container.",
+          "items": {
+            "$ref": "Zone"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "MergeConflict": {
       "description": "Represents a merge conflict.",
       "id": "MergeConflict",
@@ -3955,6 +4052,17 @@
       },
       "type": "object"
     },
+    "RevertZoneResponse": {
+      "description": "The result of reverting a zone in a workspace.",
+      "id": "RevertZoneResponse",
+      "properties": {
+        "zone": {
+          "$ref": "Zone",
+          "description": "Zone as it appears in the latest container version since the last workspace synchronization operation. If no zone is present, that means the zone was deleted in the latest container version."
+        }
+      },
+      "type": "object"
+    },
     "SetupTag": {
       "description": "Represents a reference to atag that fires before another tag in order to set up dependencies.",
       "id": "SetupTag",
@@ -4169,7 +4277,7 @@
       "type": "object"
     },
     "Timestamp": {
-      "description": "A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds and fractions of seconds at nanosecond resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian Calendar which extends the Gregorian calendar backwards to year one. It is encoded assuming all minutes are 60 seconds long, i.e. leap seconds are \"smeared\" so that no leap second table is needed for interpretation. Range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from RFC 3339 date strings. See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).\n\n# Examples\n\nExample 1: Compute Timestamp from POSIX `time()`.\n\nTimestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);\n\nExample 2: Compute Timestamp from POSIX `gettimeofday()`.\n\nstruct timeval tv; gettimeofday(\u0026tv, NULL);\n\nTimestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000);\n\nExample 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\nFILETIME ft; GetSystemTimeAsFileTime(\u0026ft); UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\nExample 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\nlong millis = System.currentTimeMillis();\n\nTimestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n\n\nExample 5: Compute Timestamp from current time in Python.\n\ntimestamp = Timestamp() timestamp.GetCurrentTime()\n\n# JSON Mapping\n\nIn JSON format, the Timestamp type is encoded as a string in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone is required, though only UTC (as indicated by \"Z\") is presently supported.\n\nFor example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.\n\nIn JavaScript, one can convert a Date object to this format using the standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] method. In Python, a standard `datetime.datetime` object can be converted to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a formatter capable of generating timestamps in this format.",
+      "description": "A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one.\n\nAll minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear).\n\nThe range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n# Examples\n\nExample 1: Compute Timestamp from POSIX `time()`.\n\nTimestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);\n\nExample 2: Compute Timestamp from POSIX `gettimeofday()`.\n\nstruct timeval tv; gettimeofday(\u0026tv, NULL);\n\nTimestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000);\n\nExample 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\nFILETIME ft; GetSystemTimeAsFileTime(\u0026ft); UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\nExample 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\nlong millis = System.currentTimeMillis();\n\nTimestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n\n\nExample 5: Compute Timestamp from current time in Python.\n\ntimestamp = Timestamp() timestamp.GetCurrentTime()\n\n# JSON Mapping\n\nIn JSON format, the Timestamp type is encoded as a string in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by \"Z\") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset).\n\nFor example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.\n\nIn JavaScript, one can convert a Date object to this format using the standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) method. In Python, a standard `datetime.datetime` object can be converted to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a formatter capable of generating timestamps in this format.",
       "id": "Timestamp",
       "properties": {
         "nanos": {
@@ -4409,48 +4517,6 @@
       },
       "type": "object"
     },
-    "UpdateWorkspaceProposalRequest": {
-      "description": "Updates a workspace proposal with patch-like semantics.",
-      "id": "UpdateWorkspaceProposalRequest",
-      "properties": {
-        "fingerprint": {
-          "description": "When provided, this fingerprint must match the fingerprint of the proposal in storage.",
-          "type": "string"
-        },
-        "newComment": {
-          "$ref": "WorkspaceProposalHistoryComment",
-          "description": "If present, a new comment is added to the workspace proposal history."
-        },
-        "reviewers": {
-          "description": "If present, the list of reviewers of the workspace proposal is updated.",
-          "items": {
-            "$ref": "WorkspaceProposalUser"
-          },
-          "type": "array"
-        },
-        "status": {
-          "description": "If present, the status of the workspace proposal is updated.",
-          "enum": [
-            "approved",
-            "cancelled",
-            "completed",
-            "requested",
-            "reviewed",
-            "statusUnspecified"
-          ],
-          "enumDescriptions": [
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-          ],
-          "type": "string"
-        }
-      },
-      "type": "object"
-    },
     "UserPermission": {
       "description": "Represents a user's permissions to an account and its container.",
       "id": "UserPermission",
@@ -4511,6 +4577,10 @@
           "description": "The fingerprint of the GTM Variable as computed at storage time. This value is recomputed whenever the variable is modified.",
           "type": "string"
         },
+        "formatValue": {
+          "$ref": "VariableFormatValue",
+          "description": "Option to convert a variable value to other value."
+        },
         "name": {
           "annotations": {
             "required": [
@@ -4575,6 +4645,42 @@
       },
       "type": "object"
     },
+    "VariableFormatValue": {
+      "id": "VariableFormatValue",
+      "properties": {
+        "caseConversionType": {
+          "description": "The option to convert a string-type variable value to either lowercase or uppercase.",
+          "enum": [
+            "lowercase",
+            "none",
+            "uppercase"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            ""
+          ],
+          "type": "string"
+        },
+        "convertFalseToValue": {
+          "$ref": "Parameter",
+          "description": "The value to convert if a variable value is false."
+        },
+        "convertNullToValue": {
+          "$ref": "Parameter",
+          "description": "The value to convert if a variable value is null."
+        },
+        "convertTrueToValue": {
+          "$ref": "Parameter",
+          "description": "The value to convert if a variable value is true."
+        },
+        "convertUndefinedToValue": {
+          "$ref": "Parameter",
+          "description": "The value to convert if a variable value is undefined."
+        }
+      },
+      "type": "object"
+    },
     "Workspace": {
       "description": "Represents a Google Tag Manager Container Workspace.",
       "id": "Workspace",
@@ -4620,181 +4726,6 @@
       },
       "type": "object"
     },
-    "WorkspaceProposal": {
-      "description": "A workspace proposal represents an ongoing review of workspace changes in an effort to gain approval for container version creation.",
-      "id": "WorkspaceProposal",
-      "properties": {
-        "authors": {
-          "description": "List of authors for the workspace proposal.",
-          "items": {
-            "$ref": "WorkspaceProposalUser"
-          },
-          "type": "array"
-        },
-        "fingerprint": {
-          "description": "The fingerprint of the GTM workspace proposal as computed at storage time. This value is recomputed whenever the proposal is modified.",
-          "type": "string"
-        },
-        "history": {
-          "description": "Records the history of comments and status changes.",
-          "items": {
-            "$ref": "WorkspaceProposalHistory"
-          },
-          "type": "array"
-        },
-        "path": {
-          "description": "GTM workspace proposal's relative path.",
-          "type": "string"
-        },
-        "reviewers": {
-          "description": "Lists of reviewers for the workspace proposal.",
-          "items": {
-            "$ref": "WorkspaceProposalUser"
-          },
-          "type": "array"
-        },
-        "status": {
-          "description": "The status of the workspace proposal as it goes through review.",
-          "enum": [
-            "approved",
-            "cancelled",
-            "completed",
-            "requested",
-            "reviewed",
-            "statusUnspecified"
-          ],
-          "enumDescriptions": [
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-          ],
-          "type": "string"
-        }
-      },
-      "type": "object"
-    },
-    "WorkspaceProposalHistory": {
-      "description": "A history event that represents a comment or status change in the proposal.",
-      "id": "WorkspaceProposalHistory",
-      "properties": {
-        "comment": {
-          "$ref": "WorkspaceProposalHistoryComment",
-          "description": "A user or reviewer comment."
-        },
-        "createdBy": {
-          "$ref": "WorkspaceProposalUser",
-          "description": "The party responsible for the change in history."
-        },
-        "createdTimestamp": {
-          "$ref": "Timestamp",
-          "description": "When this history event was added to the workspace proposal."
-        },
-        "statusChange": {
-          "$ref": "WorkspaceProposalHistoryStatusChange",
-          "description": "A change in the proposal's status."
-        },
-        "type": {
-          "description": "The history type distinguishing between comments and status changes.",
-          "enum": [
-            "comment",
-            "statusChange",
-            "unspecified"
-          ],
-          "enumDescriptions": [
-            "",
-            "",
-            ""
-          ],
-          "type": "string"
-        }
-      },
-      "type": "object"
-    },
-    "WorkspaceProposalHistoryComment": {
-      "description": "A comment from the reviewer or author.",
-      "id": "WorkspaceProposalHistoryComment",
-      "properties": {
-        "content": {
-          "description": "The contents of the reviewer or author comment.",
-          "type": "string"
-        }
-      },
-      "type": "object"
-    },
-    "WorkspaceProposalHistoryStatusChange": {
-      "description": "A change in the proposal's status.",
-      "id": "WorkspaceProposalHistoryStatusChange",
-      "properties": {
-        "newStatus": {
-          "description": "The new proposal status after that status change.",
-          "enum": [
-            "approved",
-            "cancelled",
-            "completed",
-            "requested",
-            "reviewed",
-            "statusUnspecified"
-          ],
-          "enumDescriptions": [
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-          ],
-          "type": "string"
-        },
-        "oldStatus": {
-          "description": "The old proposal status before the status change.",
-          "enum": [
-            "approved",
-            "cancelled",
-            "completed",
-            "requested",
-            "reviewed",
-            "statusUnspecified"
-          ],
-          "enumDescriptions": [
-            "",
-            "",
-            "",
-            "",
-            "",
-            ""
-          ],
-          "type": "string"
-        }
-      },
-      "type": "object"
-    },
-    "WorkspaceProposalUser": {
-      "description": "Represents an external user or internal Google Tag Manager system.",
-      "id": "WorkspaceProposalUser",
-      "properties": {
-        "gaiaId": {
-          "description": "Gaia id associated with a user, absent for the Google Tag Manager system.",
-          "format": "int64",
-          "type": "string"
-        },
-        "type": {
-          "description": "User type distinguishes between a user and the Google Tag Manager system.",
-          "enum": [
-            "gaiaId",
-            "system"
-          ],
-          "enumDescriptions": [
-            "",
-            ""
-          ],
-          "type": "string"
-        }
-      },
-      "type": "object"
-    },
     "Zone": {
       "description": "Represents a Google Tag Manager Zone's contents.",
       "id": "Zone",
diff --git a/tagmanager/v2/tagmanager-gen.go b/tagmanager/v2/tagmanager-gen.go
index c65827c..c5c8422 100644
--- a/tagmanager/v2/tagmanager-gen.go
+++ b/tagmanager/v2/tagmanager-gen.go
@@ -167,10 +167,10 @@
 	rs := &AccountsContainersWorkspacesService{s: s}
 	rs.BuiltInVariables = NewAccountsContainersWorkspacesBuiltInVariablesService(s)
 	rs.Folders = NewAccountsContainersWorkspacesFoldersService(s)
-	rs.Proposal = NewAccountsContainersWorkspacesProposalService(s)
 	rs.Tags = NewAccountsContainersWorkspacesTagsService(s)
 	rs.Triggers = NewAccountsContainersWorkspacesTriggersService(s)
 	rs.Variables = NewAccountsContainersWorkspacesVariablesService(s)
+	rs.Zones = NewAccountsContainersWorkspacesZonesService(s)
 	return rs
 }
 
@@ -181,13 +181,13 @@
 
 	Folders *AccountsContainersWorkspacesFoldersService
 
-	Proposal *AccountsContainersWorkspacesProposalService
-
 	Tags *AccountsContainersWorkspacesTagsService
 
 	Triggers *AccountsContainersWorkspacesTriggersService
 
 	Variables *AccountsContainersWorkspacesVariablesService
+
+	Zones *AccountsContainersWorkspacesZonesService
 }
 
 func NewAccountsContainersWorkspacesBuiltInVariablesService(s *Service) *AccountsContainersWorkspacesBuiltInVariablesService {
@@ -208,15 +208,6 @@
 	s *Service
 }
 
-func NewAccountsContainersWorkspacesProposalService(s *Service) *AccountsContainersWorkspacesProposalService {
-	rs := &AccountsContainersWorkspacesProposalService{s: s}
-	return rs
-}
-
-type AccountsContainersWorkspacesProposalService struct {
-	s *Service
-}
-
 func NewAccountsContainersWorkspacesTagsService(s *Service) *AccountsContainersWorkspacesTagsService {
 	rs := &AccountsContainersWorkspacesTagsService{s: s}
 	return rs
@@ -244,6 +235,15 @@
 	s *Service
 }
 
+func NewAccountsContainersWorkspacesZonesService(s *Service) *AccountsContainersWorkspacesZonesService {
+	rs := &AccountsContainersWorkspacesZonesService{s: s}
+	return rs
+}
+
+type AccountsContainersWorkspacesZonesService struct {
+	s *Service
+}
+
 func NewAccountsUserPermissionsService(s *Service) *AccountsUserPermissionsService {
 	rs := &AccountsUserPermissionsService{s: s}
 	return rs
@@ -681,6 +681,10 @@
 	// GTM Container Version.
 	ContainerVersionId string `json:"containerVersionId,omitempty"`
 
+	// CustomTemplate: The custom templates in the container that this
+	// version was taken from.
+	CustomTemplate []*CustomTemplate `json:"customTemplate,omitempty"`
+
 	// Deleted: A value of true indicates this container version has been
 	// deleted.
 	Deleted bool `json:"deleted,omitempty"`
@@ -767,6 +771,10 @@
 	// Name: Container version display name.
 	Name string `json:"name,omitempty"`
 
+	// NumCustomTemplates: Number of custom templates in the container
+	// version.
+	NumCustomTemplates string `json:"numCustomTemplates,omitempty"`
+
 	// NumMacros: Number of macros in the container version.
 	NumMacros string `json:"numMacros,omitempty"`
 
@@ -923,17 +931,40 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// CreateWorkspaceProposalRequest: Creates a workspace proposal to start
-// a review of a workspace.
-type CreateWorkspaceProposalRequest struct {
-	// InitialComment: If present, an initial comment to associate with the
-	// workspace proposal.
-	InitialComment *WorkspaceProposalHistoryComment `json:"initialComment,omitempty"`
+// CustomTemplate: Represents a Google Tag Manager Custom Template's
+// contents.
+type CustomTemplate struct {
+	// AccountId: GTM Account ID.
+	AccountId string `json:"accountId,omitempty"`
 
-	// Reviewers: List of users to review the workspace proposal.
-	Reviewers []*WorkspaceProposalUser `json:"reviewers,omitempty"`
+	// ContainerId: GTM Container ID.
+	ContainerId string `json:"containerId,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "InitialComment") to
+	// Fingerprint: The fingerprint of the GTM Custom Template as computed
+	// at storage time. This value is recomputed whenever the template is
+	// modified.
+	Fingerprint string `json:"fingerprint,omitempty"`
+
+	// Name: Custom Template display name.
+	Name string `json:"name,omitempty"`
+
+	// Path: GTM Custom Template's API relative path.
+	Path string `json:"path,omitempty"`
+
+	// TagManagerUrl: Auto generated link to the tag manager UI
+	TagManagerUrl string `json:"tagManagerUrl,omitempty"`
+
+	// TemplateData: The custom template in text format.
+	TemplateData string `json:"templateData,omitempty"`
+
+	// TemplateId: The Custom Template ID uniquely identifies the GTM custom
+	// template.
+	TemplateId string `json:"templateId,omitempty"`
+
+	// WorkspaceId: GTM Workspace ID.
+	WorkspaceId string `json:"workspaceId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AccountId") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -941,18 +972,17 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "InitialComment") to
-	// include in API requests with the JSON null value. By default, fields
-	// with empty values are omitted from API requests. However, any field
-	// with an empty value appearing in NullFields will be sent to the
-	// server as null. It is an error if a field in this list has a
-	// non-empty value. This may be used to include null fields in Patch
-	// requests.
+	// NullFields is a list of field names (e.g. "AccountId") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
 	NullFields []string `json:"-"`
 }
 
-func (s *CreateWorkspaceProposalRequest) MarshalJSON() ([]byte, error) {
-	type NoMethod CreateWorkspaceProposalRequest
+func (s *CustomTemplate) MarshalJSON() ([]byte, error) {
+	type NoMethod CustomTemplate
 	raw := NoMethod(*s)
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
@@ -1632,6 +1662,41 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type ListZonesResponse struct {
+	// NextPageToken: Continuation token for fetching the next page of
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Zone: All GTM Zones of a GTM Container.
+	Zone []*Zone `json:"zone,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListZonesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListZonesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // MergeConflict: Represents a merge conflict.
 type MergeConflict struct {
 	// EntityInBaseVersion: The base version entity (since the latest sync
@@ -1978,6 +2043,40 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// RevertZoneResponse: The result of reverting a zone in a workspace.
+type RevertZoneResponse struct {
+	// Zone: Zone as it appears in the latest container version since the
+	// last workspace synchronization operation. If no zone is present, that
+	// means the zone was deleted in the latest container version.
+	Zone *Zone `json:"zone,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Zone") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Zone") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RevertZoneResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod RevertZoneResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // SetupTag: Represents a reference to atag that fires before another
 // tag in order to set up dependencies.
 type SetupTag struct {
@@ -2240,17 +2339,20 @@
 }
 
 // Timestamp: A Timestamp represents a point in time independent of any
-// time zone or calendar, represented as seconds and fractions of
-// seconds at nanosecond resolution in UTC Epoch time. It is encoded
-// using the Proleptic Gregorian Calendar which extends the Gregorian
-// calendar backwards to year one. It is encoded assuming all minutes
-// are 60 seconds long, i.e. leap seconds are "smeared" so that no leap
-// second table is needed for interpretation. Range is from
-// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
-// restricting to that range, we ensure that we can convert to and from
-// RFC 3339 date strings. See
-// [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc333
-// 9.txt).
+// time zone or local calendar, encoded as a count of seconds and
+// fractions of seconds at nanosecond resolution. The count is relative
+// to an epoch at UTC midnight on January 1, 1970, in the proleptic
+// Gregorian calendar which extends the Gregorian calendar backwards to
+// year one.
+//
+// All minutes are 60 seconds long. Leap seconds are "smeared" so that
+// no leap second table is needed for interpretation, using a [24-hour
+// linear smear](https://developers.google.com/time/smear).
+//
+// The range is from 0001-01-01T00:00:00Z to
+// 9999-12-31T23:59:59.999999999Z. By restricting to that range, we
+// ensure that we can convert to and from [RFC
+// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
 //
 // # Examples
 //
@@ -2302,8 +2404,10 @@
 // {day}, {hour}, {min}, and {sec} are zero-padded to two digits each.
 // The fractional seconds, which can go up to 9 digits (i.e. up to 1
 // nanosecond resolution), are optional. The "Z" suffix indicates the
-// timezone ("UTC"); the timezone is required, though only UTC (as
-// indicated by "Z") is presently supported.
+// timezone ("UTC"); the timezone is required. A proto3 JSON serializer
+// should always use UTC (as indicated by "Z") when printing the
+// Timestamp type and a proto3 JSON parser should be able to accept both
+// UTC and other timezones (as indicated by an offset).
 //
 // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
 // 01:30 UTC on January 15, 2017.
@@ -2311,13 +2415,13 @@
 // In JavaScript, one can convert a Date object to this format using the
 // standard
 // [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScrip
-// t/Reference/Global_Objects/Date/toISOString] method. In Python, a
+// t/Reference/Global_Objects/Date/toISOString) method. In Python, a
 // standard `datetime.datetime` object can be converted to this format
 // using
 // [`strftime`](https://docs.python.org/2/library/time.html#time.strftime
 // ) with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in
 // Java, one can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
-// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) to obtain a formatter capable of generating timestamps in this
+// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a formatter capable of generating timestamps in this
 // format.
 type Timestamp struct {
 	// Nanos: Non-negative fractions of a second at nanosecond resolution.
@@ -2547,55 +2651,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// UpdateWorkspaceProposalRequest: Updates a workspace proposal with
-// patch-like semantics.
-type UpdateWorkspaceProposalRequest struct {
-	// Fingerprint: When provided, this fingerprint must match the
-	// fingerprint of the proposal in storage.
-	Fingerprint string `json:"fingerprint,omitempty"`
-
-	// NewComment: If present, a new comment is added to the workspace
-	// proposal history.
-	NewComment *WorkspaceProposalHistoryComment `json:"newComment,omitempty"`
-
-	// Reviewers: If present, the list of reviewers of the workspace
-	// proposal is updated.
-	Reviewers []*WorkspaceProposalUser `json:"reviewers,omitempty"`
-
-	// Status: If present, the status of the workspace proposal is updated.
-	//
-	// Possible values:
-	//   "approved"
-	//   "cancelled"
-	//   "completed"
-	//   "requested"
-	//   "reviewed"
-	//   "statusUnspecified"
-	Status string `json:"status,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Fingerprint") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "Fingerprint") to include
-	// in API requests with the JSON null value. By default, fields with
-	// empty values are omitted from API requests. However, any field with
-	// an empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *UpdateWorkspaceProposalRequest) MarshalJSON() ([]byte, error) {
-	type NoMethod UpdateWorkspaceProposalRequest
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 // UserPermission: Represents a user's permissions to an account and its
 // container.
 type UserPermission struct {
@@ -2666,6 +2721,9 @@
 	// modified.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
+	// FormatValue: Option to convert a variable value to other value.
+	FormatValue *VariableFormatValue `json:"formatValue,omitempty"`
+
 	// Name: Variable display name.
 	Name string `json:"name,omitempty"`
 
@@ -2728,6 +2786,54 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type VariableFormatValue struct {
+	// CaseConversionType: The option to convert a string-type variable
+	// value to either lowercase or uppercase.
+	//
+	// Possible values:
+	//   "lowercase"
+	//   "none"
+	//   "uppercase"
+	CaseConversionType string `json:"caseConversionType,omitempty"`
+
+	// ConvertFalseToValue: The value to convert if a variable value is
+	// false.
+	ConvertFalseToValue *Parameter `json:"convertFalseToValue,omitempty"`
+
+	// ConvertNullToValue: The value to convert if a variable value is null.
+	ConvertNullToValue *Parameter `json:"convertNullToValue,omitempty"`
+
+	// ConvertTrueToValue: The value to convert if a variable value is true.
+	ConvertTrueToValue *Parameter `json:"convertTrueToValue,omitempty"`
+
+	// ConvertUndefinedToValue: The value to convert if a variable value is
+	// undefined.
+	ConvertUndefinedToValue *Parameter `json:"convertUndefinedToValue,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CaseConversionType")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CaseConversionType") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *VariableFormatValue) MarshalJSON() ([]byte, error) {
+	type NoMethod VariableFormatValue
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Workspace: Represents a Google Tag Manager Container Workspace.
 type Workspace struct {
 	// AccountId: GTM Account ID.
@@ -2783,229 +2889,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// WorkspaceProposal: A workspace proposal represents an ongoing review
-// of workspace changes in an effort to gain approval for container
-// version creation.
-type WorkspaceProposal struct {
-	// Authors: List of authors for the workspace proposal.
-	Authors []*WorkspaceProposalUser `json:"authors,omitempty"`
-
-	// Fingerprint: The fingerprint of the GTM workspace proposal as
-	// computed at storage time. This value is recomputed whenever the
-	// proposal is modified.
-	Fingerprint string `json:"fingerprint,omitempty"`
-
-	// History: Records the history of comments and status changes.
-	History []*WorkspaceProposalHistory `json:"history,omitempty"`
-
-	// Path: GTM workspace proposal's relative path.
-	Path string `json:"path,omitempty"`
-
-	// Reviewers: Lists of reviewers for the workspace proposal.
-	Reviewers []*WorkspaceProposalUser `json:"reviewers,omitempty"`
-
-	// Status: The status of the workspace proposal as it goes through
-	// review.
-	//
-	// Possible values:
-	//   "approved"
-	//   "cancelled"
-	//   "completed"
-	//   "requested"
-	//   "reviewed"
-	//   "statusUnspecified"
-	Status string `json:"status,omitempty"`
-
-	// ServerResponse contains the HTTP response code and headers from the
-	// server.
-	googleapi.ServerResponse `json:"-"`
-
-	// ForceSendFields is a list of field names (e.g. "Authors") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "Authors") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *WorkspaceProposal) MarshalJSON() ([]byte, error) {
-	type NoMethod WorkspaceProposal
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// WorkspaceProposalHistory: A history event that represents a comment
-// or status change in the proposal.
-type WorkspaceProposalHistory struct {
-	// Comment: A user or reviewer comment.
-	Comment *WorkspaceProposalHistoryComment `json:"comment,omitempty"`
-
-	// CreatedBy: The party responsible for the change in history.
-	CreatedBy *WorkspaceProposalUser `json:"createdBy,omitempty"`
-
-	// CreatedTimestamp: When this history event was added to the workspace
-	// proposal.
-	CreatedTimestamp *Timestamp `json:"createdTimestamp,omitempty"`
-
-	// StatusChange: A change in the proposal's status.
-	StatusChange *WorkspaceProposalHistoryStatusChange `json:"statusChange,omitempty"`
-
-	// Type: The history type distinguishing between comments and status
-	// changes.
-	//
-	// Possible values:
-	//   "comment"
-	//   "statusChange"
-	//   "unspecified"
-	Type string `json:"type,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Comment") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "Comment") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *WorkspaceProposalHistory) MarshalJSON() ([]byte, error) {
-	type NoMethod WorkspaceProposalHistory
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// WorkspaceProposalHistoryComment: A comment from the reviewer or
-// author.
-type WorkspaceProposalHistoryComment struct {
-	// Content: The contents of the reviewer or author comment.
-	Content string `json:"content,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "Content") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "Content") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *WorkspaceProposalHistoryComment) MarshalJSON() ([]byte, error) {
-	type NoMethod WorkspaceProposalHistoryComment
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// WorkspaceProposalHistoryStatusChange: A change in the proposal's
-// status.
-type WorkspaceProposalHistoryStatusChange struct {
-	// NewStatus: The new proposal status after that status change.
-	//
-	// Possible values:
-	//   "approved"
-	//   "cancelled"
-	//   "completed"
-	//   "requested"
-	//   "reviewed"
-	//   "statusUnspecified"
-	NewStatus string `json:"newStatus,omitempty"`
-
-	// OldStatus: The old proposal status before the status change.
-	//
-	// Possible values:
-	//   "approved"
-	//   "cancelled"
-	//   "completed"
-	//   "requested"
-	//   "reviewed"
-	//   "statusUnspecified"
-	OldStatus string `json:"oldStatus,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "NewStatus") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "NewStatus") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *WorkspaceProposalHistoryStatusChange) MarshalJSON() ([]byte, error) {
-	type NoMethod WorkspaceProposalHistoryStatusChange
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// WorkspaceProposalUser: Represents an external user or internal Google
-// Tag Manager system.
-type WorkspaceProposalUser struct {
-	// GaiaId: Gaia id associated with a user, absent for the Google Tag
-	// Manager system.
-	GaiaId int64 `json:"gaiaId,omitempty,string"`
-
-	// Type: User type distinguishes between a user and the Google Tag
-	// Manager system.
-	//
-	// Possible values:
-	//   "gaiaId"
-	//   "system"
-	Type string `json:"type,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "GaiaId") to
-	// unconditionally include in API requests. By default, fields with
-	// empty values are omitted from API requests. However, any non-pointer,
-	// non-interface field appearing in ForceSendFields will be sent to the
-	// server regardless of whether the field is empty or not. This may be
-	// used to include empty fields in Patch requests.
-	ForceSendFields []string `json:"-"`
-
-	// NullFields is a list of field names (e.g. "GaiaId") to include in API
-	// requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
-	// null. It is an error if a field in this list has a non-empty value.
-	// This may be used to include null fields in Patch requests.
-	NullFields []string `json:"-"`
-}
-
-func (s *WorkspaceProposalUser) MarshalJSON() ([]byte, error) {
-	type NoMethod WorkspaceProposalUser
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 // Zone: Represents a Google Tag Manager Zone's contents.
 type Zone struct {
 	// AccountId: GTM Account ID.
@@ -3045,6 +2928,10 @@
 	// ZoneId: The Zone ID uniquely identifies the GTM Zone.
 	ZoneId string `json:"zoneId,omitempty"`
 
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
 	// ForceSendFields is a list of field names (e.g. "AccountId") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -4875,157 +4762,6 @@
 	}
 }
 
-// method id "tagmanager.accounts.containers.environments.patch":
-
-type AccountsContainersEnvironmentsPatchCall struct {
-	s           *Service
-	path        string
-	environment *Environment
-	urlParams_  gensupport.URLParams
-	ctx_        context.Context
-	header_     http.Header
-}
-
-// Patch: Updates a GTM Environment. This method supports patch
-// semantics.
-func (r *AccountsContainersEnvironmentsService) Patch(path string, environment *Environment) *AccountsContainersEnvironmentsPatchCall {
-	c := &AccountsContainersEnvironmentsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.path = path
-	c.environment = environment
-	return c
-}
-
-// Fingerprint sets the optional parameter "fingerprint": When provided,
-// this fingerprint must match the fingerprint of the environment in
-// storage.
-func (c *AccountsContainersEnvironmentsPatchCall) Fingerprint(fingerprint string) *AccountsContainersEnvironmentsPatchCall {
-	c.urlParams_.Set("fingerprint", fingerprint)
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *AccountsContainersEnvironmentsPatchCall) Fields(s ...googleapi.Field) *AccountsContainersEnvironmentsPatchCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *AccountsContainersEnvironmentsPatchCall) Context(ctx context.Context) *AccountsContainersEnvironmentsPatchCall {
-	c.ctx_ = ctx
-	return c
-}
-
-// Header returns an http.Header that can be modified by the caller to
-// add HTTP headers to the request.
-func (c *AccountsContainersEnvironmentsPatchCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *AccountsContainersEnvironmentsPatchCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.environment)
-	if err != nil {
-		return nil, err
-	}
-	reqHeaders.Set("Content-Type", "application/json")
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "{+path}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("PATCH", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"path": c.path,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "tagmanager.accounts.containers.environments.patch" call.
-// Exactly one of *Environment or error will be non-nil. Any non-2xx
-// status code is an error. Response headers are in either
-// *Environment.ServerResponse.Header or (if a response was returned at
-// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
-// to check whether the returned error was because
-// http.StatusNotModified was returned.
-func (c *AccountsContainersEnvironmentsPatchCall) Do(opts ...googleapi.CallOption) (*Environment, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &Environment{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	target := &ret
-	if err := gensupport.DecodeResponse(target, res); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Updates a GTM Environment. This method supports patch semantics.",
-	//   "httpMethod": "PATCH",
-	//   "id": "tagmanager.accounts.containers.environments.patch",
-	//   "parameterOrder": [
-	//     "path"
-	//   ],
-	//   "parameters": {
-	//     "fingerprint": {
-	//       "description": "When provided, this fingerprint must match the fingerprint of the environment in storage.",
-	//       "location": "query",
-	//       "type": "string"
-	//     },
-	//     "path": {
-	//       "description": "GTM Environment's API relative path. Example: accounts/{account_id}/containers/{container_id}/environments/{environment_id}",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "{+path}",
-	//   "request": {
-	//     "$ref": "Environment"
-	//   },
-	//   "response": {
-	//     "$ref": "Environment"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
-	//   ]
-	// }
-
-}
-
 // method id "tagmanager.accounts.containers.environments.reauthorize":
 
 type AccountsContainersEnvironmentsReauthorizeCall struct {
@@ -7103,144 +6839,6 @@
 
 }
 
-// method id "tagmanager.accounts.containers.workspaces.getProposal":
-
-type AccountsContainersWorkspacesGetProposalCall struct {
-	s            *Service
-	path         string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// GetProposal: Gets a GTM Workspace Proposal.
-func (r *AccountsContainersWorkspacesService) GetProposal(path string) *AccountsContainersWorkspacesGetProposalCall {
-	c := &AccountsContainersWorkspacesGetProposalCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.path = path
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *AccountsContainersWorkspacesGetProposalCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesGetProposalCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// IfNoneMatch sets the optional parameter which makes the operation
-// fail if the object's ETag matches the given value. This is useful for
-// getting updates only after the object has changed since the last
-// request. Use googleapi.IsNotModified to check whether the response
-// error from Do is the result of In-None-Match.
-func (c *AccountsContainersWorkspacesGetProposalCall) IfNoneMatch(entityTag string) *AccountsContainersWorkspacesGetProposalCall {
-	c.ifNoneMatch_ = entityTag
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *AccountsContainersWorkspacesGetProposalCall) Context(ctx context.Context) *AccountsContainersWorkspacesGetProposalCall {
-	c.ctx_ = ctx
-	return c
-}
-
-// Header returns an http.Header that can be modified by the caller to
-// add HTTP headers to the request.
-func (c *AccountsContainersWorkspacesGetProposalCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *AccountsContainersWorkspacesGetProposalCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	if c.ifNoneMatch_ != "" {
-		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
-	}
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "{+path}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("GET", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"path": c.path,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "tagmanager.accounts.containers.workspaces.getProposal" call.
-// Exactly one of *WorkspaceProposal or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *WorkspaceProposal.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *AccountsContainersWorkspacesGetProposalCall) Do(opts ...googleapi.CallOption) (*WorkspaceProposal, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &WorkspaceProposal{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	target := &ret
-	if err := gensupport.DecodeResponse(target, res); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Gets a GTM Workspace Proposal.",
-	//   "httpMethod": "GET",
-	//   "id": "tagmanager.accounts.containers.workspaces.getProposal",
-	//   "parameterOrder": [
-	//     "path"
-	//   ],
-	//   "parameters": {
-	//     "path": {
-	//       "description": "GTM workspace proposal's relative path: Example: accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "{+path}",
-	//   "response": {
-	//     "$ref": "WorkspaceProposal"
-	//   }
-	// }
-
-}
-
 // method id "tagmanager.accounts.containers.workspaces.getStatus":
 
 type AccountsContainersWorkspacesGetStatusCall struct {
@@ -8088,140 +7686,6 @@
 
 }
 
-// method id "tagmanager.accounts.containers.workspaces.updateProposal":
-
-type AccountsContainersWorkspacesUpdateProposalCall struct {
-	s                              *Service
-	path                           string
-	updateworkspaceproposalrequest *UpdateWorkspaceProposalRequest
-	urlParams_                     gensupport.URLParams
-	ctx_                           context.Context
-	header_                        http.Header
-}
-
-// UpdateProposal: Updates a GTM Workspace Proposal.
-func (r *AccountsContainersWorkspacesService) UpdateProposal(path string, updateworkspaceproposalrequest *UpdateWorkspaceProposalRequest) *AccountsContainersWorkspacesUpdateProposalCall {
-	c := &AccountsContainersWorkspacesUpdateProposalCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.path = path
-	c.updateworkspaceproposalrequest = updateworkspaceproposalrequest
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *AccountsContainersWorkspacesUpdateProposalCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesUpdateProposalCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *AccountsContainersWorkspacesUpdateProposalCall) Context(ctx context.Context) *AccountsContainersWorkspacesUpdateProposalCall {
-	c.ctx_ = ctx
-	return c
-}
-
-// Header returns an http.Header that can be modified by the caller to
-// add HTTP headers to the request.
-func (c *AccountsContainersWorkspacesUpdateProposalCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *AccountsContainersWorkspacesUpdateProposalCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.updateworkspaceproposalrequest)
-	if err != nil {
-		return nil, err
-	}
-	reqHeaders.Set("Content-Type", "application/json")
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "{+path}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("PUT", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"path": c.path,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "tagmanager.accounts.containers.workspaces.updateProposal" call.
-// Exactly one of *WorkspaceProposal or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *WorkspaceProposal.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *AccountsContainersWorkspacesUpdateProposalCall) Do(opts ...googleapi.CallOption) (*WorkspaceProposal, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &WorkspaceProposal{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	target := &ret
-	if err := gensupport.DecodeResponse(target, res); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Updates a GTM Workspace Proposal.",
-	//   "httpMethod": "PUT",
-	//   "id": "tagmanager.accounts.containers.workspaces.updateProposal",
-	//   "parameterOrder": [
-	//     "path"
-	//   ],
-	//   "parameters": {
-	//     "path": {
-	//       "description": "GTM workspace proposal's relative path: Example: accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "{+path}",
-	//   "request": {
-	//     "$ref": "UpdateWorkspaceProposalRequest"
-	//   },
-	//   "response": {
-	//     "$ref": "WorkspaceProposal"
-	//   }
-	// }
-
-}
-
 // method id "tagmanager.accounts.containers.workspaces.built_in_variables.create":
 
 type AccountsContainersWorkspacesBuiltInVariablesCreateCall struct {
@@ -10885,236 +10349,6 @@
 
 }
 
-// method id "tagmanager.accounts.containers.workspaces.proposal.create":
-
-type AccountsContainersWorkspacesProposalCreateCall struct {
-	s                              *Service
-	parent                         string
-	createworkspaceproposalrequest *CreateWorkspaceProposalRequest
-	urlParams_                     gensupport.URLParams
-	ctx_                           context.Context
-	header_                        http.Header
-}
-
-// Create: Creates a GTM Workspace Proposal.
-func (r *AccountsContainersWorkspacesProposalService) Create(parent string, createworkspaceproposalrequest *CreateWorkspaceProposalRequest) *AccountsContainersWorkspacesProposalCreateCall {
-	c := &AccountsContainersWorkspacesProposalCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.parent = parent
-	c.createworkspaceproposalrequest = createworkspaceproposalrequest
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *AccountsContainersWorkspacesProposalCreateCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesProposalCreateCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *AccountsContainersWorkspacesProposalCreateCall) Context(ctx context.Context) *AccountsContainersWorkspacesProposalCreateCall {
-	c.ctx_ = ctx
-	return c
-}
-
-// Header returns an http.Header that can be modified by the caller to
-// add HTTP headers to the request.
-func (c *AccountsContainersWorkspacesProposalCreateCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *AccountsContainersWorkspacesProposalCreateCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.createworkspaceproposalrequest)
-	if err != nil {
-		return nil, err
-	}
-	reqHeaders.Set("Content-Type", "application/json")
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "{+parent}/proposal")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("POST", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"parent": c.parent,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "tagmanager.accounts.containers.workspaces.proposal.create" call.
-// Exactly one of *WorkspaceProposal or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *WorkspaceProposal.ServerResponse.Header or (if a response was
-// returned at all) in error.(*googleapi.Error).Header. Use
-// googleapi.IsNotModified to check whether the returned error was
-// because http.StatusNotModified was returned.
-func (c *AccountsContainersWorkspacesProposalCreateCall) Do(opts ...googleapi.CallOption) (*WorkspaceProposal, error) {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if res != nil && res.StatusCode == http.StatusNotModified {
-		if res.Body != nil {
-			res.Body.Close()
-		}
-		return nil, &googleapi.Error{
-			Code:   res.StatusCode,
-			Header: res.Header,
-		}
-	}
-	if err != nil {
-		return nil, err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return nil, err
-	}
-	ret := &WorkspaceProposal{
-		ServerResponse: googleapi.ServerResponse{
-			Header:         res.Header,
-			HTTPStatusCode: res.StatusCode,
-		},
-	}
-	target := &ret
-	if err := gensupport.DecodeResponse(target, res); err != nil {
-		return nil, err
-	}
-	return ret, nil
-	// {
-	//   "description": "Creates a GTM Workspace Proposal.",
-	//   "httpMethod": "POST",
-	//   "id": "tagmanager.accounts.containers.workspaces.proposal.create",
-	//   "parameterOrder": [
-	//     "parent"
-	//   ],
-	//   "parameters": {
-	//     "parent": {
-	//       "description": "GTM Workspace's API relative path. Example: accounts/{aid}/containers/{cid}/workspace/{wid}",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "{+parent}/proposal",
-	//   "request": {
-	//     "$ref": "CreateWorkspaceProposalRequest"
-	//   },
-	//   "response": {
-	//     "$ref": "WorkspaceProposal"
-	//   }
-	// }
-
-}
-
-// method id "tagmanager.accounts.containers.workspaces.proposal.delete":
-
-type AccountsContainersWorkspacesProposalDeleteCall struct {
-	s          *Service
-	path       string
-	urlParams_ gensupport.URLParams
-	ctx_       context.Context
-	header_    http.Header
-}
-
-// Delete: Deletes a GTM Workspace Proposal.
-func (r *AccountsContainersWorkspacesProposalService) Delete(path string) *AccountsContainersWorkspacesProposalDeleteCall {
-	c := &AccountsContainersWorkspacesProposalDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.path = path
-	return c
-}
-
-// Fields allows partial responses to be retrieved. See
-// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
-// for more information.
-func (c *AccountsContainersWorkspacesProposalDeleteCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesProposalDeleteCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *AccountsContainersWorkspacesProposalDeleteCall) Context(ctx context.Context) *AccountsContainersWorkspacesProposalDeleteCall {
-	c.ctx_ = ctx
-	return c
-}
-
-// Header returns an http.Header that can be modified by the caller to
-// add HTTP headers to the request.
-func (c *AccountsContainersWorkspacesProposalDeleteCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *AccountsContainersWorkspacesProposalDeleteCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "{+path}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("DELETE", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"path": c.path,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "tagmanager.accounts.containers.workspaces.proposal.delete" call.
-func (c *AccountsContainersWorkspacesProposalDeleteCall) Do(opts ...googleapi.CallOption) error {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if err != nil {
-		return err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return err
-	}
-	return nil
-	// {
-	//   "description": "Deletes a GTM Workspace Proposal.",
-	//   "httpMethod": "DELETE",
-	//   "id": "tagmanager.accounts.containers.workspaces.proposal.delete",
-	//   "parameterOrder": [
-	//     "path"
-	//   ],
-	//   "parameters": {
-	//     "path": {
-	//       "description": "GTM workspace proposal's relative path: Example: accounts/{aid}/containers/{cid}/workspace/{wid}/workspace_proposal",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "{+path}"
-	// }
-
-}
-
 // method id "tagmanager.accounts.containers.workspaces.tags.create":
 
 type AccountsContainersWorkspacesTagsCreateCall struct {
@@ -13642,6 +12876,847 @@
 
 }
 
+// method id "tagmanager.accounts.containers.workspaces.zones.create":
+
+type AccountsContainersWorkspacesZonesCreateCall struct {
+	s          *Service
+	parent     string
+	zone       *Zone
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates a GTM Zone.
+func (r *AccountsContainersWorkspacesZonesService) Create(parent string, zone *Zone) *AccountsContainersWorkspacesZonesCreateCall {
+	c := &AccountsContainersWorkspacesZonesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.zone = zone
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsContainersWorkspacesZonesCreateCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesZonesCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsContainersWorkspacesZonesCreateCall) Context(ctx context.Context) *AccountsContainersWorkspacesZonesCreateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsContainersWorkspacesZonesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsContainersWorkspacesZonesCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.zone)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{+parent}/zones")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "tagmanager.accounts.containers.workspaces.zones.create" call.
+// Exactly one of *Zone or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Zone.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AccountsContainersWorkspacesZonesCreateCall) Do(opts ...googleapi.CallOption) (*Zone, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Zone{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a GTM Zone.",
+	//   "httpMethod": "POST",
+	//   "id": "tagmanager.accounts.containers.workspaces.zones.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "GTM Workspace's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{+parent}/zones",
+	//   "request": {
+	//     "$ref": "Zone"
+	//   },
+	//   "response": {
+	//     "$ref": "Zone"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
+	//   ]
+	// }
+
+}
+
+// method id "tagmanager.accounts.containers.workspaces.zones.delete":
+
+type AccountsContainersWorkspacesZonesDeleteCall struct {
+	s          *Service
+	path       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes a GTM Zone.
+func (r *AccountsContainersWorkspacesZonesService) Delete(path string) *AccountsContainersWorkspacesZonesDeleteCall {
+	c := &AccountsContainersWorkspacesZonesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.path = path
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsContainersWorkspacesZonesDeleteCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesZonesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsContainersWorkspacesZonesDeleteCall) Context(ctx context.Context) *AccountsContainersWorkspacesZonesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsContainersWorkspacesZonesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsContainersWorkspacesZonesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{+path}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"path": c.path,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "tagmanager.accounts.containers.workspaces.zones.delete" call.
+func (c *AccountsContainersWorkspacesZonesDeleteCall) Do(opts ...googleapi.CallOption) error {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if err != nil {
+		return err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return err
+	}
+	return nil
+	// {
+	//   "description": "Deletes a GTM Zone.",
+	//   "httpMethod": "DELETE",
+	//   "id": "tagmanager.accounts.containers.workspaces.zones.delete",
+	//   "parameterOrder": [
+	//     "path"
+	//   ],
+	//   "parameters": {
+	//     "path": {
+	//       "description": "GTM Zone's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{+path}",
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
+	//   ]
+	// }
+
+}
+
+// method id "tagmanager.accounts.containers.workspaces.zones.get":
+
+type AccountsContainersWorkspacesZonesGetCall struct {
+	s            *Service
+	path         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a GTM Zone.
+func (r *AccountsContainersWorkspacesZonesService) Get(path string) *AccountsContainersWorkspacesZonesGetCall {
+	c := &AccountsContainersWorkspacesZonesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.path = path
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsContainersWorkspacesZonesGetCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesZonesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsContainersWorkspacesZonesGetCall) IfNoneMatch(entityTag string) *AccountsContainersWorkspacesZonesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsContainersWorkspacesZonesGetCall) Context(ctx context.Context) *AccountsContainersWorkspacesZonesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsContainersWorkspacesZonesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsContainersWorkspacesZonesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{+path}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"path": c.path,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "tagmanager.accounts.containers.workspaces.zones.get" call.
+// Exactly one of *Zone or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Zone.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AccountsContainersWorkspacesZonesGetCall) Do(opts ...googleapi.CallOption) (*Zone, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Zone{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a GTM Zone.",
+	//   "httpMethod": "GET",
+	//   "id": "tagmanager.accounts.containers.workspaces.zones.get",
+	//   "parameterOrder": [
+	//     "path"
+	//   ],
+	//   "parameters": {
+	//     "path": {
+	//       "description": "GTM Zone's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{+path}",
+	//   "response": {
+	//     "$ref": "Zone"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/tagmanager.edit.containers",
+	//     "https://www.googleapis.com/auth/tagmanager.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "tagmanager.accounts.containers.workspaces.zones.list":
+
+type AccountsContainersWorkspacesZonesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists all GTM Zones of a GTM container workspace.
+func (r *AccountsContainersWorkspacesZonesService) List(parent string) *AccountsContainersWorkspacesZonesListCall {
+	c := &AccountsContainersWorkspacesZonesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Continuation token
+// for fetching the next page of results.
+func (c *AccountsContainersWorkspacesZonesListCall) PageToken(pageToken string) *AccountsContainersWorkspacesZonesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsContainersWorkspacesZonesListCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesZonesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *AccountsContainersWorkspacesZonesListCall) IfNoneMatch(entityTag string) *AccountsContainersWorkspacesZonesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsContainersWorkspacesZonesListCall) Context(ctx context.Context) *AccountsContainersWorkspacesZonesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsContainersWorkspacesZonesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsContainersWorkspacesZonesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{+parent}/zones")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "tagmanager.accounts.containers.workspaces.zones.list" call.
+// Exactly one of *ListZonesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListZonesResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountsContainersWorkspacesZonesListCall) Do(opts ...googleapi.CallOption) (*ListZonesResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &ListZonesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists all GTM Zones of a GTM container workspace.",
+	//   "httpMethod": "GET",
+	//   "id": "tagmanager.accounts.containers.workspaces.zones.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageToken": {
+	//       "description": "Continuation token for fetching the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "GTM Workspace's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{+parent}/zones",
+	//   "response": {
+	//     "$ref": "ListZonesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/tagmanager.edit.containers",
+	//     "https://www.googleapis.com/auth/tagmanager.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *AccountsContainersWorkspacesZonesListCall) Pages(ctx context.Context, f func(*ListZonesResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "tagmanager.accounts.containers.workspaces.zones.revert":
+
+type AccountsContainersWorkspacesZonesRevertCall struct {
+	s          *Service
+	path       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Revert: Reverts changes to a GTM Zone in a GTM Workspace.
+func (r *AccountsContainersWorkspacesZonesService) Revert(path string) *AccountsContainersWorkspacesZonesRevertCall {
+	c := &AccountsContainersWorkspacesZonesRevertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.path = path
+	return c
+}
+
+// Fingerprint sets the optional parameter "fingerprint": When provided,
+// this fingerprint must match the fingerprint of the zone in storage.
+func (c *AccountsContainersWorkspacesZonesRevertCall) Fingerprint(fingerprint string) *AccountsContainersWorkspacesZonesRevertCall {
+	c.urlParams_.Set("fingerprint", fingerprint)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsContainersWorkspacesZonesRevertCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesZonesRevertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsContainersWorkspacesZonesRevertCall) Context(ctx context.Context) *AccountsContainersWorkspacesZonesRevertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsContainersWorkspacesZonesRevertCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsContainersWorkspacesZonesRevertCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{+path}:revert")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"path": c.path,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "tagmanager.accounts.containers.workspaces.zones.revert" call.
+// Exactly one of *RevertZoneResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *RevertZoneResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *AccountsContainersWorkspacesZonesRevertCall) Do(opts ...googleapi.CallOption) (*RevertZoneResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &RevertZoneResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Reverts changes to a GTM Zone in a GTM Workspace.",
+	//   "httpMethod": "POST",
+	//   "id": "tagmanager.accounts.containers.workspaces.zones.revert",
+	//   "parameterOrder": [
+	//     "path"
+	//   ],
+	//   "parameters": {
+	//     "fingerprint": {
+	//       "description": "When provided, this fingerprint must match the fingerprint of the zone in storage.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "path": {
+	//       "description": "GTM Zone's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{+path}:revert",
+	//   "response": {
+	//     "$ref": "RevertZoneResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
+	//   ]
+	// }
+
+}
+
+// method id "tagmanager.accounts.containers.workspaces.zones.update":
+
+type AccountsContainersWorkspacesZonesUpdateCall struct {
+	s          *Service
+	path       string
+	zone       *Zone
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Update: Updates a GTM Zone.
+func (r *AccountsContainersWorkspacesZonesService) Update(path string, zone *Zone) *AccountsContainersWorkspacesZonesUpdateCall {
+	c := &AccountsContainersWorkspacesZonesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.path = path
+	c.zone = zone
+	return c
+}
+
+// Fingerprint sets the optional parameter "fingerprint": When provided,
+// this fingerprint must match the fingerprint of the zone in storage.
+func (c *AccountsContainersWorkspacesZonesUpdateCall) Fingerprint(fingerprint string) *AccountsContainersWorkspacesZonesUpdateCall {
+	c.urlParams_.Set("fingerprint", fingerprint)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *AccountsContainersWorkspacesZonesUpdateCall) Fields(s ...googleapi.Field) *AccountsContainersWorkspacesZonesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *AccountsContainersWorkspacesZonesUpdateCall) Context(ctx context.Context) *AccountsContainersWorkspacesZonesUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *AccountsContainersWorkspacesZonesUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *AccountsContainersWorkspacesZonesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.zone)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{+path}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PUT", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"path": c.path,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "tagmanager.accounts.containers.workspaces.zones.update" call.
+// Exactly one of *Zone or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Zone.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *AccountsContainersWorkspacesZonesUpdateCall) Do(opts ...googleapi.CallOption) (*Zone, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Zone{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates a GTM Zone.",
+	//   "httpMethod": "PUT",
+	//   "id": "tagmanager.accounts.containers.workspaces.zones.update",
+	//   "parameterOrder": [
+	//     "path"
+	//   ],
+	//   "parameters": {
+	//     "fingerprint": {
+	//       "description": "When provided, this fingerprint must match the fingerprint of the zone in storage.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "path": {
+	//       "description": "GTM Zone's API relative path. Example: accounts/{account_id}/containers/{container_id}/workspaces/{workspace_id}/zones/{zone_id}",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{+path}",
+	//   "request": {
+	//     "$ref": "Zone"
+	//   },
+	//   "response": {
+	//     "$ref": "Zone"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/tagmanager.edit.containers"
+	//   ]
+	// }
+
+}
+
 // method id "tagmanager.accounts.user_permissions.create":
 
 type AccountsUserPermissionsCreateCall struct {