all: autogenerated update (2018-06-14)

Update:
- androidpublisher/v2
- androidpublisher/v3
- cloudresourcemanager/v1
- cloudresourcemanager/v2
- dlp/v2
- firebaserules/v1
- servicecontrol/v1
diff --git a/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-api.json b/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-api.json
index b0b23f0..cd80d62 100644
--- a/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-api.json
+++ b/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-api.json
@@ -49,11 +49,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -74,12 +69,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -124,7 +113,7 @@
       }
     }
   },
-  "revision": "20180203",
+  "revision": "20180612",
   "rootUrl": "https://acceleratedmobilepageurl.googleapis.com/",
   "schemas": {
     "AmpUrl": {
diff --git a/androidpublisher/v2/androidpublisher-api.json b/androidpublisher/v2/androidpublisher-api.json
index 9a2c525..82b60b1 100644
--- a/androidpublisher/v2/androidpublisher-api.json
+++ b/androidpublisher/v2/androidpublisher-api.json
@@ -15,7 +15,7 @@
   "description": "Lets Android application developers access their Google Play accounts.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/android-publisher",
-  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/ZrsxTobK37cM8ngcCgqOfF8QXOo\"",
+  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/061HEfmtqIvhrLJA1HbEK0nsWh4\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -624,6 +624,7 @@
               ]
             },
             "upload": {
+              "description": "Uploads a new Android App Bundle to this edit. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See: https://developers.google.com/api-client-library/java/google-api-java-client/errors for an example in java.",
               "httpMethod": "POST",
               "id": "androidpublisher.edits.bundles.upload",
               "mediaUpload": {
@@ -2480,7 +2481,6 @@
       }
     }
   },
-  "revision": "20180605",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Apk": {
diff --git a/androidpublisher/v2/androidpublisher-gen.go b/androidpublisher/v2/androidpublisher-gen.go
index 5a77a9f..c013ee1 100644
--- a/androidpublisher/v2/androidpublisher-gen.go
+++ b/androidpublisher/v2/androidpublisher-gen.go
@@ -4605,7 +4605,12 @@
 	header_       http.Header
 }
 
-// Upload:
+// Upload: Uploads a new Android App Bundle to this edit. If you are
+// using the Google API client libraries, please increase the timeout of
+// the http request before calling this endpoint (a timeout of 2 minutes
+// is recommended). See:
+// https://developers.google.com/api-client-library/java/google-api-java-client/errors for an example in
+// java.
 func (r *EditsBundlesService) Upload(packageNameid string, editId string) *EditsBundlesUploadCall {
 	c := &EditsBundlesUploadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.packageNameid = packageNameid
@@ -4762,6 +4767,7 @@
 	}
 	return ret, nil
 	// {
+	//   "description": "Uploads a new Android App Bundle to this edit. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See: https://developers.google.com/api-client-library/java/google-api-java-client/errors for an example in java.",
 	//   "httpMethod": "POST",
 	//   "id": "androidpublisher.edits.bundles.upload",
 	//   "mediaUpload": {
diff --git a/androidpublisher/v3/androidpublisher-api.json b/androidpublisher/v3/androidpublisher-api.json
index 0a0b3ed..1975c2f 100644
--- a/androidpublisher/v3/androidpublisher-api.json
+++ b/androidpublisher/v3/androidpublisher-api.json
@@ -15,7 +15,7 @@
   "description": "Lets Android application developers access their Google Play accounts.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/android-publisher",
-  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/EA2d8ZW-8Uh26DGb83UzmFbYeI8\"",
+  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/Rm8urjWr7Z1vVzph2kllaYzzKiI\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/android-16.png",
     "x32": "https://www.google.com/images/icons/product/android-32.png"
@@ -364,6 +364,7 @@
               ]
             },
             "upload": {
+              "description": "Uploads a new Android App Bundle to this edit. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See: https://developers.google.com/api-client-library/java/google-api-java-client/errors for an example in java.",
               "httpMethod": "POST",
               "id": "androidpublisher.edits.bundles.upload",
               "mediaUpload": {
@@ -2220,7 +2221,6 @@
       }
     }
   },
-  "revision": "20180605",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Apk": {
diff --git a/androidpublisher/v3/androidpublisher-gen.go b/androidpublisher/v3/androidpublisher-gen.go
index 84964bd..ba9fbc4 100644
--- a/androidpublisher/v3/androidpublisher-gen.go
+++ b/androidpublisher/v3/androidpublisher-gen.go
@@ -3696,7 +3696,12 @@
 	header_       http.Header
 }
 
-// Upload:
+// Upload: Uploads a new Android App Bundle to this edit. If you are
+// using the Google API client libraries, please increase the timeout of
+// the http request before calling this endpoint (a timeout of 2 minutes
+// is recommended). See:
+// https://developers.google.com/api-client-library/java/google-api-java-client/errors for an example in
+// java.
 func (r *EditsBundlesService) Upload(packageNameid string, editId string) *EditsBundlesUploadCall {
 	c := &EditsBundlesUploadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.packageNameid = packageNameid
@@ -3853,6 +3858,7 @@
 	}
 	return ret, nil
 	// {
+	//   "description": "Uploads a new Android App Bundle to this edit. If you are using the Google API client libraries, please increase the timeout of the http request before calling this endpoint (a timeout of 2 minutes is recommended). See: https://developers.google.com/api-client-library/java/google-api-java-client/errors for an example in java.",
 	//   "httpMethod": "POST",
 	//   "id": "androidpublisher.edits.bundles.upload",
 	//   "mediaUpload": {
diff --git a/api-list.json b/api-list.json
index 4715d1c..edd439f 100644
--- a/api-list.json
+++ b/api-list.json
@@ -883,7 +883,7 @@
    "name": "cloudtasks",
    "version": "v2beta2",
    "title": "Cloud Tasks API",
-   "description": "Manages the execution of large numbers of distributed requests. Cloud Tasks is in Alpha.",
+   "description": "Manages the execution of large numbers of distributed requests.",
    "discoveryRestUrl": "https://cloudtasks.googleapis.com/$discovery/rest?version=v2beta2",
    "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
diff --git a/cloudresourcemanager/v1/cloudresourcemanager-api.json b/cloudresourcemanager/v1/cloudresourcemanager-api.json
index 2135460..5b24035 100644
--- a/cloudresourcemanager/v1/cloudresourcemanager-api.json
+++ b/cloudresourcemanager/v1/cloudresourcemanager-api.json
@@ -63,11 +63,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -88,12 +83,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -149,7 +138,7 @@
           ]
         },
         "getEffectiveOrgPolicy": {
-          "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.",
+          "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.\nSubtrees of Resource Manager resource hierarchy with 'under:' prefix will\nnot be expanded.",
           "flatPath": "v1/folders/{foldersId}:getEffectiveOrgPolicy",
           "httpMethod": "POST",
           "id": "cloudresourcemanager.folders.getEffectiveOrgPolicy",
@@ -341,6 +330,32 @@
             "https://www.googleapis.com/auth/cloud-platform.read-only"
           ]
         },
+        "get": {
+          "description": "Retrieve a Lien by `name`.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, a Lien with a `parent` of `projects/1234` requires permission\nrequires permission `resourcemanager.projects.get` or\n`resourcemanager.projects.updateLiens`.",
+          "flatPath": "v1/liens/{liensId}",
+          "httpMethod": "GET",
+          "id": "cloudresourcemanager.liens.get",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name/identifier of the Lien.",
+              "location": "path",
+              "pattern": "^liens/.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1/{+name}",
+          "response": {
+            "$ref": "Lien"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/cloud-platform.read-only"
+          ]
+        },
         "list": {
           "description": "List all Liens applied to the `parent` resource.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, a Lien with a `parent` of `projects/1234` requires permission\n`resourcemanager.projects.get`.",
           "flatPath": "v1/liens",
@@ -463,7 +478,7 @@
           ]
         },
         "getEffectiveOrgPolicy": {
-          "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.",
+          "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.\nSubtrees of Resource Manager resource hierarchy with 'under:' prefix will\nnot be expanded.",
           "flatPath": "v1/organizations/{organizationsId}:getEffectiveOrgPolicy",
           "httpMethod": "POST",
           "id": "cloudresourcemanager.organizations.getEffectiveOrgPolicy",
@@ -839,7 +854,7 @@
           ]
         },
         "getEffectiveOrgPolicy": {
-          "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.",
+          "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.\nSubtrees of Resource Manager resource hierarchy with 'under:' prefix will\nnot be expanded.",
           "flatPath": "v1/projects/{projectsId}:getEffectiveOrgPolicy",
           "httpMethod": "POST",
           "id": "cloudresourcemanager.projects.getEffectiveOrgPolicy",
@@ -1155,7 +1170,7 @@
       }
     }
   },
-  "revision": "20180521",
+  "revision": "20180611",
   "rootUrl": "https://cloudresourcemanager.googleapis.com/",
   "schemas": {
     "Ancestor": {
@@ -1512,6 +1527,10 @@
         "suggestedValue": {
           "description": "Optional. The Google Cloud Console will try to default to a configuration\nthat matches the value specified in this `Constraint`.",
           "type": "string"
+        },
+        "supportsUnder": {
+          "description": "Indicates whether subtrees of Cloud Resource Manager resource hierarchy\ncan be used in `Policy.allowed_values` and `Policy.denied_values`. For\nexample, `\"under:folders/123\"` would match any resource under the\n'folders/123' folder.",
+          "type": "boolean"
         }
       },
       "type": "object"
@@ -1569,7 +1588,7 @@
       "type": "object"
     },
     "ListPolicy": {
-      "description": "Used in `policy_type` to specify how `list_policy` behaves at this\nresource.\n\nA `ListPolicy` can define specific values that are allowed or denied by\nsetting either the `allowed_values` or `denied_values` fields. It can also\nbe used to allow or deny all values, by setting the `all_values` field. If\n`all_values` is `ALL_VALUES_UNSPECIFIED`, exactly one of `allowed_values`\nor `denied_values` must be set (attempting to set both or neither will\nresult in a failed request). If `all_values` is set to either `ALLOW` or\n`DENY`, `allowed_values` and `denied_values` must be unset.",
+      "description": "Used in `policy_type` to specify how `list_policy` behaves at this\nresource.\n\n`ListPolicy` can define specific values and subtrees of Cloud Resource\nManager resource hierarchy (`Organizations`, `Folders`, `Projects`) that\nare allowed or denied by setting the `allowed_values` and `denied_values`\nfields. This is achieved by using the `under:` and optional `is:` prefixes.\nThe `under:` prefix is used to denote resource subtree values.\nThe `is:` prefix is used to denote specific values, and is required only\nif the value contains a \":\". Values prefixed with \"is:\" are treated the\nsame as values with no prefix.\nAncestry subtrees must be in one of the following formats:\n    - “projects/\u003cproject-id\u003e”, e.g. “projects/tokyo-rain-123”\n    - “folders/\u003cfolder-id\u003e”, e.g. “folders/1234”\n    - “organizations/\u003corganization-id\u003e”, e.g. “organizations/1234”\nThe `supports_under` field of the associated `Constraint`  defines whether\nancestry prefixes can be used. You can set `allowed_values` and\n`denied_values` in the same `Policy` if `all_values` is\n`ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all\nvalues. If `all_values` is set to either `ALLOW` or `DENY`,\n`allowed_values` and `denied_values` must be unset.",
       "id": "ListPolicy",
       "properties": {
         "allValues": {
@@ -1580,28 +1599,28 @@
             "DENY"
           ],
           "enumDescriptions": [
-            "Indicates that either allowed_values or denied_values must be set.",
+            "Indicates that allowed_values or denied_values must be set.",
             "A policy with this set allows all values.",
             "A policy with this set denies all values."
           ],
           "type": "string"
         },
         "allowedValues": {
-          "description": "List of values allowed  at this resource. Can only be set if no values\nare set for `denied_values` and `all_values` is set to\n`ALL_VALUES_UNSPECIFIED`.",
+          "description": "List of values allowed  at this resource. Can only be set if `all_values`\nis set to `ALL_VALUES_UNSPECIFIED`.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "deniedValues": {
-          "description": "List of values denied at this resource. Can only be set if no values are\nset for `allowed_values` and `all_values` is set to\n`ALL_VALUES_UNSPECIFIED`.",
+          "description": "List of values denied at this resource. Can only be set if `all_values`\nis set to `ALL_VALUES_UNSPECIFIED`.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "inheritFromParent": {
-          "description": "Determines the inheritance behavior for this `Policy`.\n\nBy default, a `ListPolicy` set at a resource supercedes any `Policy` set\nanywhere up the resource hierarchy. However, if `inherit_from_parent` is\nset to `true`, then the values from the effective `Policy` of the parent\nresource are inherited, meaning the values set in this `Policy` are\nadded to the values inherited up the hierarchy.\n\nSetting `Policy` hierarchies that inherit both allowed values and denied\nvalues isn't recommended in most circumstances to keep the configuration\nsimple and understandable. However, it is possible to set a `Policy` with\n`allowed_values` set that inherits a `Policy` with `denied_values` set.\nIn this case, the values that are allowed must be in `allowed_values` and\nnot present in `denied_values`.\n\nFor example, suppose you have a `Constraint`\n`constraints/serviceuser.services`, which has a `constraint_type` of\n`list_constraint`, and with `constraint_default` set to `ALLOW`.\nSuppose that at the Organization level, a `Policy` is applied that\nrestricts the allowed API activations to {`E1`, `E2`}. Then, if a\n`Policy` is applied to a project below the Organization that has\n`inherit_from_parent` set to `false` and field all_values set to DENY,\nthen an attempt to activate any API will be denied.\n\nThe following examples demonstrate different possible layerings:\n\nExample 1 (no inherited values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  ``projects/bar`` has `inherit_from_parent` `false` and values:\n    {allowed_values: \"E3\" allowed_values: \"E4\"}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are `E3`, and `E4`.\n\nExample 2 (inherited values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has a `Policy` with values:\n    {value: “E3” value: ”E4” inherit_from_parent: true}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are `E1`, `E2`, `E3`, and `E4`.\n\nExample 3 (inheriting both allowed and denied values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: \"E1\" allowed_values: \"E2\"}\n  `projects/bar` has a `Policy` with:\n    {denied_values: \"E1\"}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe value accepted at `projects/bar` is `E2`.\n\nExample 4 (RestoreDefault):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has a `Policy` with values:\n    {RestoreDefault: {}}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are either all or none depending on\nthe value of `constraint_default` (if `ALLOW`, all; if\n`DENY`, none).\n\nExample 5 (no policy inherits parent policy):\n  `organizations/foo` has no `Policy` set.\n  `projects/bar` has no `Policy` set.\nThe accepted values at both levels are either all or none depending on\nthe value of `constraint_default` (if `ALLOW`, all; if\n`DENY`, none).\n\nExample 6 (ListConstraint allowing all):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values: ”E2”}\n  `projects/bar` has a `Policy` with:\n    {all: ALLOW}\nThe accepted values at `organizations/foo` are `E1`, E2`.\nAny value is accepted at `projects/bar`.\n\nExample 7 (ListConstraint allowing none):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values: ”E2”}\n  `projects/bar` has a `Policy` with:\n    {all: DENY}\nThe accepted values at `organizations/foo` are `E1`, E2`.\nNo value is accepted at `projects/bar`.",
+          "description": "Determines the inheritance behavior for this `Policy`.\n\nBy default, a `ListPolicy` set at a resource supercedes any `Policy` set\nanywhere up the resource hierarchy. However, if `inherit_from_parent` is\nset to `true`, then the values from the effective `Policy` of the parent\nresource are inherited, meaning the values set in this `Policy` are\nadded to the values inherited up the hierarchy.\n\nSetting `Policy` hierarchies that inherit both allowed values and denied\nvalues isn't recommended in most circumstances to keep the configuration\nsimple and understandable. However, it is possible to set a `Policy` with\n`allowed_values` set that inherits a `Policy` with `denied_values` set.\nIn this case, the values that are allowed must be in `allowed_values` and\nnot present in `denied_values`.\n\nFor example, suppose you have a `Constraint`\n`constraints/serviceuser.services`, which has a `constraint_type` of\n`list_constraint`, and with `constraint_default` set to `ALLOW`.\nSuppose that at the Organization level, a `Policy` is applied that\nrestricts the allowed API activations to {`E1`, `E2`}. Then, if a\n`Policy` is applied to a project below the Organization that has\n`inherit_from_parent` set to `false` and field all_values set to DENY,\nthen an attempt to activate any API will be denied.\n\nThe following examples demonstrate different possible layerings for\n`projects/bar` parented by `organizations/foo`:\n\nExample 1 (no inherited values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has `inherit_from_parent` `false` and values:\n    {allowed_values: \"E3\" allowed_values: \"E4\"}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are `E3`, and `E4`.\n\nExample 2 (inherited values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has a `Policy` with values:\n    {value: “E3” value: ”E4” inherit_from_parent: true}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are `E1`, `E2`, `E3`, and `E4`.\n\nExample 3 (inheriting both allowed and denied values):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: \"E1\" allowed_values: \"E2\"}\n  `projects/bar` has a `Policy` with:\n    {denied_values: \"E1\"}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe value accepted at `projects/bar` is `E2`.\n\nExample 4 (RestoreDefault):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values:”E2”}\n  `projects/bar` has a `Policy` with values:\n    {RestoreDefault: {}}\nThe accepted values at `organizations/foo` are `E1`, `E2`.\nThe accepted values at `projects/bar` are either all or none depending on\nthe value of `constraint_default` (if `ALLOW`, all; if\n`DENY`, none).\n\nExample 5 (no policy inherits parent policy):\n  `organizations/foo` has no `Policy` set.\n  `projects/bar` has no `Policy` set.\nThe accepted values at both levels are either all or none depending on\nthe value of `constraint_default` (if `ALLOW`, all; if\n`DENY`, none).\n\nExample 6 (ListConstraint allowing all):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values: ”E2”}\n  `projects/bar` has a `Policy` with:\n    {all: ALLOW}\nThe accepted values at `organizations/foo` are `E1`, E2`.\nAny value is accepted at `projects/bar`.\n\nExample 7 (ListConstraint allowing none):\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: “E1” allowed_values: ”E2”}\n  `projects/bar` has a `Policy` with:\n    {all: DENY}\nThe accepted values at `organizations/foo` are `E1`, E2`.\nNo value is accepted at `projects/bar`.\n\nExample 10 (allowed and denied subtrees of Resource Manager hierarchy):\nGiven the following resource hierarchy\n  O1-\u003e{F1, F2}; F1-\u003e{P1}; F2-\u003e{P2, P3},\n  `organizations/foo` has a `Policy` with values:\n    {allowed_values: \"under:organizations/O1\"}\n  `projects/bar` has a `Policy` with:\n    {allowed_values: \"under:projects/P3\"}\n    {denied_values: \"under:folders/F2\"}\nThe accepted values at `organizations/foo` are `organizations/O1`,\n  `folders/F1`, `folders/F2`, `projects/P1`, `projects/P2`,\n  `projects/P3`.\nThe accepted values at `projects/bar` are `organizations/O1`,\n  `folders/F1`, `projects/P1`.",
           "type": "boolean"
         },
         "suggestedValue": {
diff --git a/cloudresourcemanager/v1/cloudresourcemanager-gen.go b/cloudresourcemanager/v1/cloudresourcemanager-gen.go
index 6a90768..f93f0cf 100644
--- a/cloudresourcemanager/v1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v1/cloudresourcemanager-gen.go
@@ -991,6 +991,15 @@
 	// that matches the value specified in this `Constraint`.
 	SuggestedValue string `json:"suggestedValue,omitempty"`
 
+	// SupportsUnder: Indicates whether subtrees of Cloud Resource Manager
+	// resource hierarchy
+	// can be used in `Policy.allowed_values` and `Policy.denied_values`.
+	// For
+	// example, "under:folders/123" would match any resource under
+	// the
+	// 'folders/123' folder.
+	SupportsUnder bool `json:"supportsUnder,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "SuggestedValue") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -1136,41 +1145,55 @@
 // behaves at this
 // resource.
 //
-// A `ListPolicy` can define specific values that are allowed or denied
-// by
-// setting either the `allowed_values` or `denied_values` fields. It can
-// also
-// be used to allow or deny all values, by setting the `all_values`
-// field. If
-// `all_values` is `ALL_VALUES_UNSPECIFIED`, exactly one of
-// `allowed_values`
-// or `denied_values` must be set (attempting to set both or neither
-// will
-// result in a failed request). If `all_values` is set to either `ALLOW`
-// or
-// `DENY`, `allowed_values` and `denied_values` must be unset.
+// `ListPolicy` can define specific values and subtrees of Cloud
+// Resource
+// Manager resource hierarchy (`Organizations`, `Folders`, `Projects`)
+// that
+// are allowed or denied by setting the `allowed_values` and
+// `denied_values`
+// fields. This is achieved by using the `under:` and optional `is:`
+// prefixes.
+// The `under:` prefix is used to denote resource subtree values.
+// The `is:` prefix is used to denote specific values, and is required
+// only
+// if the value contains a ":". Values prefixed with "is:" are treated
+// the
+// same as values with no prefix.
+// Ancestry subtrees must be in one of the following formats:
+//     - “projects/<project-id>”, e.g.
+// “projects/tokyo-rain-123”
+//     - “folders/<folder-id>”, e.g. “folders/1234”
+//     - “organizations/<organization-id>”, e.g.
+// “organizations/1234”
+// The `supports_under` field of the associated `Constraint`  defines
+// whether
+// ancestry prefixes can be used. You can set `allowed_values`
+// and
+// `denied_values` in the same `Policy` if `all_values`
+// is
+// `ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny
+// all
+// values. If `all_values` is set to either `ALLOW` or
+// `DENY`,
+// `allowed_values` and `denied_values` must be unset.
 type ListPolicy struct {
 	// AllValues: The policy all_values state.
 	//
 	// Possible values:
-	//   "ALL_VALUES_UNSPECIFIED" - Indicates that either allowed_values or
+	//   "ALL_VALUES_UNSPECIFIED" - Indicates that allowed_values or
 	// denied_values must be set.
 	//   "ALLOW" - A policy with this set allows all values.
 	//   "DENY" - A policy with this set denies all values.
 	AllValues string `json:"allValues,omitempty"`
 
 	// AllowedValues: List of values allowed  at this resource. Can only be
-	// set if no values
-	// are set for `denied_values` and `all_values` is set
-	// to
-	// `ALL_VALUES_UNSPECIFIED`.
+	// set if `all_values`
+	// is set to `ALL_VALUES_UNSPECIFIED`.
 	AllowedValues []string `json:"allowedValues,omitempty"`
 
 	// DeniedValues: List of values denied at this resource. Can only be set
-	// if no values are
-	// set for `allowed_values` and `all_values` is set
-	// to
-	// `ALL_VALUES_UNSPECIFIED`.
+	// if `all_values`
+	// is set to `ALL_VALUES_UNSPECIFIED`.
 	DeniedValues []string `json:"deniedValues,omitempty"`
 
 	// InheritFromParent: Determines the inheritance behavior for this
@@ -1214,13 +1237,14 @@
 	// DENY,
 	// then an attempt to activate any API will be denied.
 	//
-	// The following examples demonstrate different possible
-	// layerings:
+	// The following examples demonstrate different possible layerings
+	// for
+	// `projects/bar` parented by `organizations/foo`:
 	//
 	// Example 1 (no inherited values):
 	//   `organizations/foo` has a `Policy` with values:
 	//     {allowed_values: “E1” allowed_values:”E2”}
-	//   ``projects/bar`` has `inherit_from_parent` `false` and values:
+	//   `projects/bar` has `inherit_from_parent` `false` and values:
 	//     {allowed_values: "E3" allowed_values: "E4"}
 	// The accepted values at `organizations/foo` are `E1`, `E2`.
 	// The accepted values at `projects/bar` are `E3`, and `E4`.
@@ -1276,6 +1300,21 @@
 	//     {all: DENY}
 	// The accepted values at `organizations/foo` are `E1`, E2`.
 	// No value is accepted at `projects/bar`.
+	//
+	// Example 10 (allowed and denied subtrees of Resource Manager
+	// hierarchy):
+	// Given the following resource hierarchy
+	//   O1->{F1, F2}; F1->{P1}; F2->{P2, P3},
+	//   `organizations/foo` has a `Policy` with values:
+	//     {allowed_values: "under:organizations/O1"}
+	//   `projects/bar` has a `Policy` with:
+	//     {allowed_values: "under:projects/P3"}
+	//     {denied_values: "under:folders/F2"}
+	// The accepted values at `organizations/foo` are `organizations/O1`,
+	//   `folders/F1`, `folders/F2`, `projects/P1`, `projects/P2`,
+	//   `projects/P3`.
+	// The accepted values at `projects/bar` are `organizations/O1`,
+	//   `folders/F1`, `projects/P1`.
 	InheritFromParent bool `json:"inheritFromParent,omitempty"`
 
 	// SuggestedValue: Optional. The Google Cloud Console will try to
@@ -2497,6 +2536,9 @@
 // have
 // an `etag`set because it is a computed `Policy` across multiple
 // resources.
+// Subtrees of Resource Manager resource hierarchy with 'under:' prefix
+// will
+// not be expanded.
 func (r *FoldersService) GetEffectiveOrgPolicy(resource string, geteffectiveorgpolicyrequest *GetEffectiveOrgPolicyRequest) *FoldersGetEffectiveOrgPolicyCall {
 	c := &FoldersGetEffectiveOrgPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.resource = resource
@@ -2590,7 +2632,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.",
+	//   "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.\nSubtrees of Resource Manager resource hierarchy with 'under:' prefix will\nnot be expanded.",
 	//   "flatPath": "v1/folders/{foldersId}:getEffectiveOrgPolicy",
 	//   "httpMethod": "POST",
 	//   "id": "cloudresourcemanager.folders.getEffectiveOrgPolicy",
@@ -3487,6 +3529,154 @@
 
 }
 
+// method id "cloudresourcemanager.liens.get":
+
+type LiensGetCall struct {
+	s            *Service
+	nameid       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Retrieve a Lien by `name`.
+//
+// Callers of this method will require permission on the `parent`
+// resource.
+// For example, a Lien with a `parent` of `projects/1234` requires
+// permission
+// requires permission `resourcemanager.projects.get`
+// or
+// `resourcemanager.projects.updateLiens`.
+func (r *LiensService) Get(nameid string) *LiensGetCall {
+	c := &LiensGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.nameid = nameid
+	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 *LiensGetCall) Fields(s ...googleapi.Field) *LiensGetCall {
+	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 *LiensGetCall) IfNoneMatch(entityTag string) *LiensGetCall {
+	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 *LiensGetCall) Context(ctx context.Context) *LiensGetCall {
+	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 *LiensGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *LiensGetCall) 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)
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, _ := http.NewRequest("GET", urls, body)
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.nameid,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "cloudresourcemanager.liens.get" call.
+// Exactly one of *Lien or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Lien.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 *LiensGetCall) Do(opts ...googleapi.CallOption) (*Lien, 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 := &Lien{
+		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": "Retrieve a Lien by `name`.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, a Lien with a `parent` of `projects/1234` requires permission\nrequires permission `resourcemanager.projects.get` or\n`resourcemanager.projects.updateLiens`.",
+	//   "flatPath": "v1/liens/{liensId}",
+	//   "httpMethod": "GET",
+	//   "id": "cloudresourcemanager.liens.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name/identifier of the Lien.",
+	//       "location": "path",
+	//       "pattern": "^liens/.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Lien"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloud-platform.read-only"
+	//   ]
+	// }
+
+}
+
 // method id "cloudresourcemanager.liens.list":
 
 type LiensListCall struct {
@@ -4116,6 +4306,9 @@
 // have
 // an `etag`set because it is a computed `Policy` across multiple
 // resources.
+// Subtrees of Resource Manager resource hierarchy with 'under:' prefix
+// will
+// not be expanded.
 func (r *OrganizationsService) GetEffectiveOrgPolicy(resource string, geteffectiveorgpolicyrequest *GetEffectiveOrgPolicyRequest) *OrganizationsGetEffectiveOrgPolicyCall {
 	c := &OrganizationsGetEffectiveOrgPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.resource = resource
@@ -4209,7 +4402,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.",
+	//   "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.\nSubtrees of Resource Manager resource hierarchy with 'under:' prefix will\nnot be expanded.",
 	//   "flatPath": "v1/organizations/{organizationsId}:getEffectiveOrgPolicy",
 	//   "httpMethod": "POST",
 	//   "id": "cloudresourcemanager.organizations.getEffectiveOrgPolicy",
@@ -6154,6 +6347,9 @@
 // have
 // an `etag`set because it is a computed `Policy` across multiple
 // resources.
+// Subtrees of Resource Manager resource hierarchy with 'under:' prefix
+// will
+// not be expanded.
 func (r *ProjectsService) GetEffectiveOrgPolicy(resource string, geteffectiveorgpolicyrequest *GetEffectiveOrgPolicyRequest) *ProjectsGetEffectiveOrgPolicyCall {
 	c := &ProjectsGetEffectiveOrgPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.resource = resource
@@ -6247,7 +6443,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.",
+	//   "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.\nSubtrees of Resource Manager resource hierarchy with 'under:' prefix will\nnot be expanded.",
 	//   "flatPath": "v1/projects/{projectsId}:getEffectiveOrgPolicy",
 	//   "httpMethod": "POST",
 	//   "id": "cloudresourcemanager.projects.getEffectiveOrgPolicy",
diff --git a/cloudresourcemanager/v2/cloudresourcemanager-api.json b/cloudresourcemanager/v2/cloudresourcemanager-api.json
index ca7699d..0e4afab 100644
--- a/cloudresourcemanager/v2/cloudresourcemanager-api.json
+++ b/cloudresourcemanager/v2/cloudresourcemanager-api.json
@@ -110,7 +110,7 @@
     "folders": {
       "methods": {
         "create": {
-          "description": "Creates a Folder in the resource hierarchy.\nReturns an Operation which can be used to track the progress of the\nfolder creation workflow.\nUpon success the Operation.response field will be populated with the\ncreated Folder.\n\nIn order to succeed, the addition of this new Folder must not violate\nthe Folder naming, height or fanout constraints.\n\n+ The Folder's display_name must be distinct from all other Folder's that\nshare its parent.\n+ The addition of the Folder must not cause the active Folder hierarchy\nto exceed a height of 4. Note, the full active + deleted Folder hierarchy\nis allowed to reach a height of 8; this provides additional headroom when\nmoving folders that contain deleted folders.\n+ The addition of the Folder must not cause the total number of Folders\nunder its parent to exceed 100.\n\nIf the operation fails due to a folder constraint violation,\na PreconditionFailure explaining the violation will be returned.\nIf the failure occurs synchronously then the PreconditionFailure\nwill be returned via the Status.details field and if it occurs\nasynchronously then the PreconditionFailure will be returned\nvia the the Operation.error field.\n\nThe caller must have `resourcemanager.folders.create` permission on the\nidentified parent.",
+          "description": "Creates a Folder in the resource hierarchy.\nReturns an Operation which can be used to track the progress of the\nfolder creation workflow.\nUpon success the Operation.response field will be populated with the\ncreated Folder.\n\nIn order to succeed, the addition of this new Folder must not violate\nthe Folder naming, height or fanout constraints.\n\n+ The Folder's display_name must be distinct from all other Folder's that\nshare its parent.\n+ The addition of the Folder must not cause the active Folder hierarchy\nto exceed a height of 4. Note, the full active + deleted Folder hierarchy\nis allowed to reach a height of 8; this provides additional headroom when\nmoving folders that contain deleted folders.\n+ The addition of the Folder must not cause the total number of Folders\nunder its parent to exceed 100.\n\nIf the operation fails due to a folder constraint violation, some errors\nmay be returned by the CreateFolder request, with status code\nFAILED_PRECONDITION and an error description. Other folder constraint\nviolations will be communicated in the Operation, with the specific\nPreconditionFailure returned via the details list in the Operation.error\nfield.\n\nThe caller must have `resourcemanager.folders.create` permission on the\nidentified parent.",
           "flatPath": "v2/folders",
           "httpMethod": "POST",
           "id": "cloudresourcemanager.folders.create",
@@ -419,7 +419,7 @@
       }
     }
   },
-  "revision": "20180606",
+  "revision": "20180611",
   "rootUrl": "https://cloudresourcemanager.googleapis.com/",
   "schemas": {
     "AuditConfig": {
diff --git a/cloudresourcemanager/v2/cloudresourcemanager-gen.go b/cloudresourcemanager/v2/cloudresourcemanager-gen.go
index 0975ba0..340ef0f 100644
--- a/cloudresourcemanager/v2/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v2/cloudresourcemanager-gen.go
@@ -1158,13 +1158,17 @@
 // Folders
 // under its parent to exceed 100.
 //
-// If the operation fails due to a folder constraint violation,
-// a PreconditionFailure explaining the violation will be returned.
-// If the failure occurs synchronously then the PreconditionFailure
-// will be returned via the Status.details field and if it
-// occurs
-// asynchronously then the PreconditionFailure will be returned
-// via the the Operation.error field.
+// If the operation fails due to a folder constraint violation, some
+// errors
+// may be returned by the CreateFolder request, with status
+// code
+// FAILED_PRECONDITION and an error description. Other folder
+// constraint
+// violations will be communicated in the Operation, with the
+// specific
+// PreconditionFailure returned via the details list in the
+// Operation.error
+// field.
 //
 // The caller must have `resourcemanager.folders.create` permission on
 // the
@@ -1267,7 +1271,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates a Folder in the resource hierarchy.\nReturns an Operation which can be used to track the progress of the\nfolder creation workflow.\nUpon success the Operation.response field will be populated with the\ncreated Folder.\n\nIn order to succeed, the addition of this new Folder must not violate\nthe Folder naming, height or fanout constraints.\n\n+ The Folder's display_name must be distinct from all other Folder's that\nshare its parent.\n+ The addition of the Folder must not cause the active Folder hierarchy\nto exceed a height of 4. Note, the full active + deleted Folder hierarchy\nis allowed to reach a height of 8; this provides additional headroom when\nmoving folders that contain deleted folders.\n+ The addition of the Folder must not cause the total number of Folders\nunder its parent to exceed 100.\n\nIf the operation fails due to a folder constraint violation,\na PreconditionFailure explaining the violation will be returned.\nIf the failure occurs synchronously then the PreconditionFailure\nwill be returned via the Status.details field and if it occurs\nasynchronously then the PreconditionFailure will be returned\nvia the the Operation.error field.\n\nThe caller must have `resourcemanager.folders.create` permission on the\nidentified parent.",
+	//   "description": "Creates a Folder in the resource hierarchy.\nReturns an Operation which can be used to track the progress of the\nfolder creation workflow.\nUpon success the Operation.response field will be populated with the\ncreated Folder.\n\nIn order to succeed, the addition of this new Folder must not violate\nthe Folder naming, height or fanout constraints.\n\n+ The Folder's display_name must be distinct from all other Folder's that\nshare its parent.\n+ The addition of the Folder must not cause the active Folder hierarchy\nto exceed a height of 4. Note, the full active + deleted Folder hierarchy\nis allowed to reach a height of 8; this provides additional headroom when\nmoving folders that contain deleted folders.\n+ The addition of the Folder must not cause the total number of Folders\nunder its parent to exceed 100.\n\nIf the operation fails due to a folder constraint violation, some errors\nmay be returned by the CreateFolder request, with status code\nFAILED_PRECONDITION and an error description. Other folder constraint\nviolations will be communicated in the Operation, with the specific\nPreconditionFailure returned via the details list in the Operation.error\nfield.\n\nThe caller must have `resourcemanager.folders.create` permission on the\nidentified parent.",
 	//   "flatPath": "v2/folders",
 	//   "httpMethod": "POST",
 	//   "id": "cloudresourcemanager.folders.create",
diff --git a/dlp/v2/dlp-api.json b/dlp/v2/dlp-api.json
index ad853ce..910a74a 100644
--- a/dlp/v2/dlp-api.json
+++ b/dlp/v2/dlp-api.json
@@ -60,11 +60,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -85,12 +80,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -118,7 +107,7 @@
     "infoTypes": {
       "methods": {
         "list": {
-          "description": "Returns a list of the sensitive information types that the DLP API\nsupports. For more information, see [Listing supported predefined\ninfoTypes](/dlp/docs/listing-infotypes).",
+          "description": "Returns a list of the sensitive information types that the DLP API\nsupports. See https://cloud.google.com/dlp/docs/infotypes-reference to\nlearn more.",
           "flatPath": "v2/infoTypes",
           "httpMethod": "GET",
           "id": "dlp.infoTypes.list",
@@ -150,7 +139,7 @@
         "deidentifyTemplates": {
           "methods": {
             "create": {
-              "description": "Creates a DeidentifyTemplate for re-using frequently used configuration\nfor de-identifying content, images, and storage.",
+              "description": "Creates a DeidentifyTemplate for re-using frequently used configuration\nfor de-identifying content, images, and storage.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates",
               "httpMethod": "POST",
               "id": "dlp.organizations.deidentifyTemplates.create",
@@ -178,7 +167,7 @@
               ]
             },
             "delete": {
-              "description": "Deletes a DeidentifyTemplate.",
+              "description": "Deletes a DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates/{deidentifyTemplatesId}",
               "httpMethod": "DELETE",
               "id": "dlp.organizations.deidentifyTemplates.delete",
@@ -203,7 +192,7 @@
               ]
             },
             "get": {
-              "description": "Gets a DeidentifyTemplate.",
+              "description": "Gets a DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates/{deidentifyTemplatesId}",
               "httpMethod": "GET",
               "id": "dlp.organizations.deidentifyTemplates.get",
@@ -228,7 +217,7 @@
               ]
             },
             "list": {
-              "description": "Lists DeidentifyTemplates.",
+              "description": "Lists DeidentifyTemplates.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates",
               "httpMethod": "GET",
               "id": "dlp.organizations.deidentifyTemplates.list",
@@ -264,7 +253,7 @@
               ]
             },
             "patch": {
-              "description": "Updates the DeidentifyTemplate.",
+              "description": "Updates the DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates/{deidentifyTemplatesId}",
               "httpMethod": "PATCH",
               "id": "dlp.organizations.deidentifyTemplates.patch",
@@ -296,7 +285,7 @@
         "inspectTemplates": {
           "methods": {
             "create": {
-              "description": "Creates an InspectTemplate for re-using frequently used configuration\nfor inspecting content, images, and storage.",
+              "description": "Creates an InspectTemplate for re-using frequently used configuration\nfor inspecting content, images, and storage.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/organizations/{organizationsId}/inspectTemplates",
               "httpMethod": "POST",
               "id": "dlp.organizations.inspectTemplates.create",
@@ -324,7 +313,7 @@
               ]
             },
             "delete": {
-              "description": "Deletes an InspectTemplate.",
+              "description": "Deletes an InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/organizations/{organizationsId}/inspectTemplates/{inspectTemplatesId}",
               "httpMethod": "DELETE",
               "id": "dlp.organizations.inspectTemplates.delete",
@@ -349,7 +338,7 @@
               ]
             },
             "get": {
-              "description": "Gets an InspectTemplate.",
+              "description": "Gets an InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/organizations/{organizationsId}/inspectTemplates/{inspectTemplatesId}",
               "httpMethod": "GET",
               "id": "dlp.organizations.inspectTemplates.get",
@@ -374,7 +363,7 @@
               ]
             },
             "list": {
-              "description": "Lists InspectTemplates.",
+              "description": "Lists InspectTemplates.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/organizations/{organizationsId}/inspectTemplates",
               "httpMethod": "GET",
               "id": "dlp.organizations.inspectTemplates.list",
@@ -410,7 +399,7 @@
               ]
             },
             "patch": {
-              "description": "Updates the InspectTemplate.",
+              "description": "Updates the InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/organizations/{organizationsId}/inspectTemplates/{inspectTemplatesId}",
               "httpMethod": "PATCH",
               "id": "dlp.organizations.inspectTemplates.patch",
@@ -446,7 +435,7 @@
         "content": {
           "methods": {
             "deidentify": {
-              "description": "De-identifies potentially sensitive info from a ContentItem.\nThis method has limits on input size and output size.\n[How-to guide](/dlp/docs/deidentify-sensitive-data)",
+              "description": "De-identifies potentially sensitive info from a ContentItem.\nThis method has limits on input size and output size.\nSee https://cloud.google.com/dlp/docs/deidentify-sensitive-data to\nlearn more.",
               "flatPath": "v2/projects/{projectsId}/content:deidentify",
               "httpMethod": "POST",
               "id": "dlp.projects.content.deidentify",
@@ -474,7 +463,7 @@
               ]
             },
             "inspect": {
-              "description": "Finds potentially sensitive info in content.\nThis method has limits on input size, processing time, and output size.\n[How-to guide for text](/dlp/docs/inspecting-text), [How-to guide for\nimages](/dlp/docs/inspecting-images)",
+              "description": "Finds potentially sensitive info in content.\nThis method has limits on input size, processing time, and output size.\n\nFor how to guides, see https://cloud.google.com/dlp/docs/inspecting-images\nand https://cloud.google.com/dlp/docs/inspecting-text,",
               "flatPath": "v2/projects/{projectsId}/content:inspect",
               "httpMethod": "POST",
               "id": "dlp.projects.content.inspect",
@@ -502,7 +491,7 @@
               ]
             },
             "reidentify": {
-              "description": "Re-identifies content that has been de-identified.",
+              "description": "Re-identifies content that has been de-identified.\nSee\nhttps://cloud.google.com/dlp/docs/pseudonymization#re-identification_in_free_text_code_example\nto learn more.",
               "flatPath": "v2/projects/{projectsId}/content:reidentify",
               "httpMethod": "POST",
               "id": "dlp.projects.content.reidentify",
@@ -534,7 +523,7 @@
         "deidentifyTemplates": {
           "methods": {
             "create": {
-              "description": "Creates a DeidentifyTemplate for re-using frequently used configuration\nfor de-identifying content, images, and storage.",
+              "description": "Creates a DeidentifyTemplate for re-using frequently used configuration\nfor de-identifying content, images, and storage.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/projects/{projectsId}/deidentifyTemplates",
               "httpMethod": "POST",
               "id": "dlp.projects.deidentifyTemplates.create",
@@ -562,7 +551,7 @@
               ]
             },
             "delete": {
-              "description": "Deletes a DeidentifyTemplate.",
+              "description": "Deletes a DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/projects/{projectsId}/deidentifyTemplates/{deidentifyTemplatesId}",
               "httpMethod": "DELETE",
               "id": "dlp.projects.deidentifyTemplates.delete",
@@ -587,7 +576,7 @@
               ]
             },
             "get": {
-              "description": "Gets a DeidentifyTemplate.",
+              "description": "Gets a DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/projects/{projectsId}/deidentifyTemplates/{deidentifyTemplatesId}",
               "httpMethod": "GET",
               "id": "dlp.projects.deidentifyTemplates.get",
@@ -612,7 +601,7 @@
               ]
             },
             "list": {
-              "description": "Lists DeidentifyTemplates.",
+              "description": "Lists DeidentifyTemplates.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/projects/{projectsId}/deidentifyTemplates",
               "httpMethod": "GET",
               "id": "dlp.projects.deidentifyTemplates.list",
@@ -648,7 +637,7 @@
               ]
             },
             "patch": {
-              "description": "Updates the DeidentifyTemplate.",
+              "description": "Updates the DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
               "flatPath": "v2/projects/{projectsId}/deidentifyTemplates/{deidentifyTemplatesId}",
               "httpMethod": "PATCH",
               "id": "dlp.projects.deidentifyTemplates.patch",
@@ -680,7 +669,7 @@
         "dlpJobs": {
           "methods": {
             "cancel": {
-              "description": "Starts asynchronous cancellation on a long-running DlpJob. The server\nmakes a best effort to cancel the DlpJob, but success is not\nguaranteed.",
+              "description": "Starts asynchronous cancellation on a long-running DlpJob. The server\nmakes a best effort to cancel the DlpJob, but success is not\nguaranteed.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
               "flatPath": "v2/projects/{projectsId}/dlpJobs/{dlpJobsId}:cancel",
               "httpMethod": "POST",
               "id": "dlp.projects.dlpJobs.cancel",
@@ -708,7 +697,7 @@
               ]
             },
             "create": {
-              "description": "Creates a new job to inspect storage or calculate risk metrics.\n[How-to guide](/dlp/docs/compute-risk-analysis).",
+              "description": "Creates a new job to inspect storage or calculate risk metrics.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
               "flatPath": "v2/projects/{projectsId}/dlpJobs",
               "httpMethod": "POST",
               "id": "dlp.projects.dlpJobs.create",
@@ -736,7 +725,7 @@
               ]
             },
             "delete": {
-              "description": "Deletes a long-running DlpJob. This method indicates that the client is\nno longer interested in the DlpJob result. The job will be cancelled if\npossible.",
+              "description": "Deletes a long-running DlpJob. This method indicates that the client is\nno longer interested in the DlpJob result. The job will be cancelled if\npossible.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
               "flatPath": "v2/projects/{projectsId}/dlpJobs/{dlpJobsId}",
               "httpMethod": "DELETE",
               "id": "dlp.projects.dlpJobs.delete",
@@ -761,7 +750,7 @@
               ]
             },
             "get": {
-              "description": "Gets the latest state of a long-running DlpJob.",
+              "description": "Gets the latest state of a long-running DlpJob.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
               "flatPath": "v2/projects/{projectsId}/dlpJobs/{dlpJobsId}",
               "httpMethod": "GET",
               "id": "dlp.projects.dlpJobs.get",
@@ -786,7 +775,7 @@
               ]
             },
             "list": {
-              "description": "Lists DlpJobs that match the specified filter in the request.",
+              "description": "Lists DlpJobs that match the specified filter in the request.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
               "flatPath": "v2/projects/{projectsId}/dlpJobs",
               "httpMethod": "GET",
               "id": "dlp.projects.dlpJobs.list",
@@ -841,7 +830,7 @@
         "image": {
           "methods": {
             "redact": {
-              "description": "Redacts potentially sensitive info from an image.\nThis method has limits on input size, processing time, and output size.\n[How-to guide](/dlp/docs/redacting-sensitive-data-images)",
+              "description": "Redacts potentially sensitive info from an image.\nThis method has limits on input size, processing time, and output size.\nSee https://cloud.google.com/dlp/docs/redacting-sensitive-data-images to\nlearn more.",
               "flatPath": "v2/projects/{projectsId}/image:redact",
               "httpMethod": "POST",
               "id": "dlp.projects.image.redact",
@@ -873,7 +862,7 @@
         "inspectTemplates": {
           "methods": {
             "create": {
-              "description": "Creates an InspectTemplate for re-using frequently used configuration\nfor inspecting content, images, and storage.",
+              "description": "Creates an InspectTemplate for re-using frequently used configuration\nfor inspecting content, images, and storage.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/projects/{projectsId}/inspectTemplates",
               "httpMethod": "POST",
               "id": "dlp.projects.inspectTemplates.create",
@@ -901,7 +890,7 @@
               ]
             },
             "delete": {
-              "description": "Deletes an InspectTemplate.",
+              "description": "Deletes an InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/projects/{projectsId}/inspectTemplates/{inspectTemplatesId}",
               "httpMethod": "DELETE",
               "id": "dlp.projects.inspectTemplates.delete",
@@ -926,7 +915,7 @@
               ]
             },
             "get": {
-              "description": "Gets an InspectTemplate.",
+              "description": "Gets an InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/projects/{projectsId}/inspectTemplates/{inspectTemplatesId}",
               "httpMethod": "GET",
               "id": "dlp.projects.inspectTemplates.get",
@@ -951,7 +940,7 @@
               ]
             },
             "list": {
-              "description": "Lists InspectTemplates.",
+              "description": "Lists InspectTemplates.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/projects/{projectsId}/inspectTemplates",
               "httpMethod": "GET",
               "id": "dlp.projects.inspectTemplates.list",
@@ -987,7 +976,7 @@
               ]
             },
             "patch": {
-              "description": "Updates the InspectTemplate.",
+              "description": "Updates the InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
               "flatPath": "v2/projects/{projectsId}/inspectTemplates/{inspectTemplatesId}",
               "httpMethod": "PATCH",
               "id": "dlp.projects.inspectTemplates.patch",
@@ -1019,7 +1008,7 @@
         "jobTriggers": {
           "methods": {
             "create": {
-              "description": "Creates a job trigger to run DLP actions such as scanning storage for\nsensitive information on a set schedule.",
+              "description": "Creates a job trigger to run DLP actions such as scanning storage for\nsensitive information on a set schedule.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
               "flatPath": "v2/projects/{projectsId}/jobTriggers",
               "httpMethod": "POST",
               "id": "dlp.projects.jobTriggers.create",
@@ -1047,7 +1036,7 @@
               ]
             },
             "delete": {
-              "description": "Deletes a job trigger.",
+              "description": "Deletes a job trigger.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
               "flatPath": "v2/projects/{projectsId}/jobTriggers/{jobTriggersId}",
               "httpMethod": "DELETE",
               "id": "dlp.projects.jobTriggers.delete",
@@ -1072,7 +1061,7 @@
               ]
             },
             "get": {
-              "description": "Gets a job trigger.",
+              "description": "Gets a job trigger.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
               "flatPath": "v2/projects/{projectsId}/jobTriggers/{jobTriggersId}",
               "httpMethod": "GET",
               "id": "dlp.projects.jobTriggers.get",
@@ -1097,7 +1086,7 @@
               ]
             },
             "list": {
-              "description": "Lists job triggers.",
+              "description": "Lists job triggers.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
               "flatPath": "v2/projects/{projectsId}/jobTriggers",
               "httpMethod": "GET",
               "id": "dlp.projects.jobTriggers.list",
@@ -1106,7 +1095,7 @@
               ],
               "parameters": {
                 "orderBy": {
-                  "description": "Optional comma separated list of triggeredJob fields to order by,\nfollowed by 'asc/desc' postfix, i.e.\n`\"create_time asc,name desc,schedule_mode asc\"`. This list is\ncase-insensitive.\n\nExample: `\"name asc,schedule_mode desc, status desc\"`\n\nSupported filters keys and values are:\n\n- `create_time`: corresponds to time the triggeredJob was created.\n- `update_time`: corresponds to time the triggeredJob was last updated.\n- `name`: corresponds to JobTrigger's display name.\n- `status`: corresponds to the triggeredJob status.",
+                  "description": "Optional comma separated list of triggeredJob fields to order by,\nfollowed by `asc` or `desc` postfix. This list is case-insensitive,\ndefault sorting order is ascending, redundant space characters are\ninsignificant.\n\nExample: `name asc,update_time, create_time desc`\n\nSupported fields are:\n\n- `create_time`: corresponds to time the triggeredJob was created.\n- `update_time`: corresponds to time the triggeredJob was last updated.\n- `name`: corresponds to JobTrigger's name.",
                   "location": "query",
                   "type": "string"
                 },
@@ -1117,12 +1106,12 @@
                   "type": "integer"
                 },
                 "pageToken": {
-                  "description": "Optional page token to continue retrieval. Comes from previous call\nto ListJobTriggers. `order_by` and `filter` should not change for\nsubsequent calls, but can be omitted if token is specified.",
+                  "description": "Optional page token to continue retrieval. Comes from previous call\nto ListJobTriggers. `order_by` field must not\nchange for subsequent calls.",
                   "location": "query",
                   "type": "string"
                 },
                 "parent": {
-                  "description": "The parent resource name, for example projects/my-project-id.",
+                  "description": "The parent resource name, for example `projects/my-project-id`.",
                   "location": "path",
                   "pattern": "^projects/[^/]+$",
                   "required": true,
@@ -1138,7 +1127,7 @@
               ]
             },
             "patch": {
-              "description": "Updates a job trigger.",
+              "description": "Updates a job trigger.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
               "flatPath": "v2/projects/{projectsId}/jobTriggers/{jobTriggersId}",
               "httpMethod": "PATCH",
               "id": "dlp.projects.jobTriggers.patch",
@@ -1170,11 +1159,11 @@
       }
     }
   },
-  "revision": "20180529",
+  "revision": "20180612",
   "rootUrl": "https://dlp.googleapis.com/",
   "schemas": {
     "GooglePrivacyDlpV2Action": {
-      "description": "A task to execute on the completion of a job.",
+      "description": "A task to execute on the completion of a job.\nSee https://cloud.google.com/dlp/docs/concepts-actions to learn more.",
       "id": "GooglePrivacyDlpV2Action",
       "properties": {
         "pubSub": {
@@ -1365,7 +1354,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2BucketingConfig": {
-      "description": "Generalization function that buckets values based on ranges. The ranges and\nreplacement values are dynamically provided by the user for custom behavior,\nsuch as 1-30 -\u003e LOW 31-65 -\u003e MEDIUM 66-100 -\u003e HIGH\nThis can be used on\ndata of type: number, long, string, timestamp.\nIf the bound `Value` type differs from the type of data being transformed, we\nwill first attempt converting the type of the data to be transformed to match\nthe type of the bound before comparing.",
+      "description": "Generalization function that buckets values based on ranges. The ranges and\nreplacement values are dynamically provided by the user for custom behavior,\nsuch as 1-30 -\u003e LOW 31-65 -\u003e MEDIUM 66-100 -\u003e HIGH\nThis can be used on\ndata of type: number, long, string, timestamp.\nIf the bound `Value` type differs from the type of data being transformed, we\nwill first attempt converting the type of the data to be transformed to match\nthe type of the bound before comparing.\nSee https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.",
       "id": "GooglePrivacyDlpV2BucketingConfig",
       "properties": {
         "buckets": {
@@ -1677,7 +1666,7 @@
         },
         "table": {
           "$ref": "GooglePrivacyDlpV2Table",
-          "description": "Structured content for inspection."
+          "description": "Structured content for inspection. See\nhttps://cloud.google.com/dlp/docs/inspecting-text#inspecting_a_table to\nlearn more."
         },
         "value": {
           "description": "String data to inspect or redact.",
@@ -1808,7 +1797,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig": {
-      "description": "Replaces an identifier with a surrogate using FPE with the FFX\nmode of operation; however when used in the `ReidentifyContent` API method,\nit serves the opposite function by reversing the surrogate back into\nthe original identifier.\nThe identifier must be encoded as ASCII.\nFor a given crypto key and context, the same identifier will be\nreplaced with the same surrogate.\nIdentifiers must be at least two characters long.\nIn the case that the identifier is the empty string, it will be skipped.\nSee [Pseudonymization](/dlp/docs/pseudonymization) for example usage.",
+      "description": "Replaces an identifier with a surrogate using FPE with the FFX\nmode of operation; however when used in the `ReidentifyContent` API method,\nit serves the opposite function by reversing the surrogate back into\nthe original identifier.\nThe identifier must be encoded as ASCII.\nFor a given crypto key and context, the same identifier will be\nreplaced with the same surrogate.\nIdentifiers must be at least two characters long.\nIn the case that the identifier is the empty string, it will be skipped.\nSee https://cloud.google.com/dlp/docs/pseudonymization to learn more.",
       "id": "GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig",
       "properties": {
         "commonAlphabet": {
@@ -1929,7 +1918,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2DateShiftConfig": {
-      "description": "Shifts dates by random number of days, with option to be consistent for the\nsame context.",
+      "description": "Shifts dates by random number of days, with option to be consistent for the\nsame context. See https://cloud.google.com/dlp/docs/concepts-date-shifting\nto learn more.",
       "id": "GooglePrivacyDlpV2DateShiftConfig",
       "properties": {
         "context": {
@@ -2051,7 +2040,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2DeidentifyTemplate": {
-      "description": "The DeidentifyTemplates contains instructions on how to deidentify content.",
+      "description": "The DeidentifyTemplates contains instructions on how to deidentify content.\nSee https://cloud.google.com/dlp/docs/concepts-templates to learn more.",
       "id": "GooglePrivacyDlpV2DeidentifyTemplate",
       "properties": {
         "createTime": {
@@ -2463,7 +2452,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2FixedSizeBucketingConfig": {
-      "description": "Buckets values based on fixed size ranges. The\nBucketing transformation can provide all of this functionality,\nbut requires more configuration. This message is provided as a convenience to\nthe user for simple bucketing strategies.\n\nThe transformed value will be a hyphenated string of\n\u003clower_bound\u003e-\u003cupper_bound\u003e, i.e if lower_bound = 10 and upper_bound = 20\nall values that are within this bucket will be replaced with \"10-20\".\n\nThis can be used on data of type: double, long.\n\nIf the bound Value type differs from the type of data\nbeing transformed, we will first attempt converting the type of the data to\nbe transformed to match the type of the bound before comparing.",
+      "description": "Buckets values based on fixed size ranges. The\nBucketing transformation can provide all of this functionality,\nbut requires more configuration. This message is provided as a convenience to\nthe user for simple bucketing strategies.\n\nThe transformed value will be a hyphenated string of\n\u003clower_bound\u003e-\u003cupper_bound\u003e, i.e if lower_bound = 10 and upper_bound = 20\nall values that are within this bucket will be replaced with \"10-20\".\n\nThis can be used on data of type: double, long.\n\nIf the bound Value type differs from the type of data\nbeing transformed, we will first attempt converting the type of the data to\nbe transformed to match the type of the bound before comparing.\n\nSee https://cloud.google.com/dlp/docs/concepts-bucketing to learn more.",
       "id": "GooglePrivacyDlpV2FixedSizeBucketingConfig",
       "properties": {
         "bucketSize": {
@@ -2524,7 +2513,7 @@
           "description": "Only one per info_type should be provided per request. If not\nspecified, and redact_all_text is false, the DLP API will redact all\ntext that it matches against all info_types that are found, but not\nspecified in another ImageRedactionConfig."
         },
         "redactAllText": {
-          "description": "If true, all text found in the image, regardless whether it matches an\ninfo_type, is redacted.",
+          "description": "If true, all text found in the image, regardless whether it matches an\ninfo_type, is redacted. Only one should be provided.",
           "type": "boolean"
         },
         "redactionColor": {
@@ -2614,7 +2603,7 @@
       "id": "GooglePrivacyDlpV2InfoTypeTransformation",
       "properties": {
         "infoTypes": {
-          "description": "InfoTypes to apply the transformation to. Empty list will match all\navailable infoTypes for this transformation.",
+          "description": "InfoTypes to apply the transformation to. An empty list will cause\nthis transformation to apply to all findings that correspond to\ninfoTypes that were requested in `InspectConfig`.",
           "items": {
             "$ref": "GooglePrivacyDlpV2InfoType"
           },
@@ -2663,7 +2652,7 @@
           "type": "array"
         },
         "customInfoTypes": {
-          "description": "Custom infoTypes provided by the user.",
+          "description": "CustomInfoTypes provided by the user. See\nhttps://cloud.google.com/dlp/docs/creating-custom-infotypes to learn more.",
           "items": {
             "$ref": "GooglePrivacyDlpV2CustomInfoType"
           },
@@ -2688,7 +2677,7 @@
           "$ref": "GooglePrivacyDlpV2FindingLimits"
         },
         "minLikelihood": {
-          "description": "Only returns findings equal or above this threshold. The default is\nPOSSIBLE.",
+          "description": "Only returns findings equal or above this threshold. The default is\nPOSSIBLE.\nSee https://cloud.google.com/dlp/docs/likelihood to learn more.",
           "enum": [
             "LIKELIHOOD_UNSPECIFIED",
             "VERY_UNLIKELY",
@@ -2799,7 +2788,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2InspectTemplate": {
-      "description": "The inspectTemplate contains a configuration (set of types of sensitive data\nto be detected) to be used anywhere you otherwise would normally specify\nInspectConfig.",
+      "description": "The inspectTemplate contains a configuration (set of types of sensitive data\nto be detected) to be used anywhere you otherwise would normally specify\nInspectConfig. See https://cloud.google.com/dlp/docs/concepts-templates\nto learn more.",
       "id": "GooglePrivacyDlpV2InspectTemplate",
       "properties": {
         "createTime": {
@@ -2832,7 +2821,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2JobTrigger": {
-      "description": "Contains a configuration to make dlp api calls on a repeating basis.",
+      "description": "Contains a configuration to make dlp api calls on a repeating basis.\nSee https://cloud.google.com/dlp/docs/concepts-job-triggers to learn more.",
       "id": "GooglePrivacyDlpV2JobTrigger",
       "properties": {
         "createTime": {
@@ -3393,7 +3382,7 @@
       "id": "GooglePrivacyDlpV2OutputStorageConfig",
       "properties": {
         "outputSchema": {
-          "description": "Schema used for writing the findings. Columns are derived from the\n`Finding` object. If appending to an existing table, any columns from the\npredefined schema that are missing will be added. No columns in the\nexisting table will be deleted.\n\nIf unspecified, then all available columns will be used for a new table,\nand no changes will be made to an existing table.",
+          "description": "Schema used for writing the findings for Inspect jobs. This field is only\nused for Inspect and must be unspecified for Risk jobs. Columns are derived\nfrom the `Finding` object. If appending to an existing table, any columns\nfrom the predefined schema that are missing will be added. No columns in\nthe existing table will be deleted.\n\nIf unspecified, then all available columns will be used for a new table,\nand no changes will be made to an existing table.",
           "enum": [
             "OUTPUT_SCHEMA_UNSPECIFIED",
             "BASIC_COLUMNS",
@@ -3414,7 +3403,7 @@
         },
         "table": {
           "$ref": "GooglePrivacyDlpV2BigQueryTable",
-          "description": "Store findings in an existing table or a new table in an existing\ndataset. Each column in an existing table must have the same name, type,\nand mode of a field in the `Finding` object. If table_id is not set a new\none will be generated for you with the following format:\ndlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific timezone will be used for\ngenerating the date details."
+          "description": "Store findings in an existing table or a new table in an existing\ndataset. If table_id is not set a new one will be generated\nfor you with the following format:\ndlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific timezone will be used for\ngenerating the date details.\n\nFor Inspect, each column in an existing output table must have the same\nname, type, and mode of a field in the `Finding` object.\n\nFor Risk, an existing output table should be the output of a previous\nRisk analysis job run on the same source table, with the same privacy\nmetric and quasi-identifiers. Risk jobs that analyze the same table but\ncompute a different privacy metric, or use different sets of\nquasi-identifiers, cannot store their results in the same table."
         }
       },
       "type": "object"
@@ -3708,7 +3697,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2RedactImageRequest": {
-      "description": "Request to search for potentially sensitive info in a list of items\nand replace it with a default or provided content.",
+      "description": "Request to search for potentially sensitive info in an image and redact it\nby covering it with a colored rectangle.",
       "id": "GooglePrivacyDlpV2RedactImageRequest",
       "properties": {
         "byteItem": {
@@ -3852,7 +3841,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2RiskAnalysisJobConfig": {
-      "description": "Configuration for a risk analysis job.",
+      "description": "Configuration for a risk analysis job. See\nhttps://cloud.google.com/dlp/docs/concepts-risk-analysis to learn more.",
       "id": "GooglePrivacyDlpV2RiskAnalysisJobConfig",
       "properties": {
         "actions": {
@@ -3886,7 +3875,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2SaveFindings": {
-      "description": "If set, the detailed findings will be persisted to the specified\nOutputStorageConfig. Only a single instance of this action can be\nspecified.\nCompatible with: Inspect",
+      "description": "If set, the detailed findings will be persisted to the specified\nOutputStorageConfig. Only a single instance of this action can be\nspecified.\nCompatible with: Inspect, Risk",
       "id": "GooglePrivacyDlpV2SaveFindings",
       "properties": {
         "outputConfig": {
@@ -3900,7 +3889,7 @@
       "id": "GooglePrivacyDlpV2Schedule",
       "properties": {
         "recurrencePeriodDuration": {
-          "description": "With this option a job is started a regular periodic basis. For\nexample: every 10 minutes.\n\nA scheduled start time will be skipped if the previous\nexecution has not ended when its scheduled time occurs.\n\nThis value must be set to a time duration greater than or equal\nto 60 minutes and can be no longer than 60 days.",
+          "description": "With this option a job is started a regular periodic basis. For\nexample: every day (86400 seconds).\n\nA scheduled start time will be skipped if the previous\nexecution has not ended when its scheduled time occurs.\n\nThis value must be set to a time duration greater than or equal\nto 1 day and can be no longer than 60 days.",
           "format": "google-duration",
           "type": "string"
         }
@@ -3986,7 +3975,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2Table": {
-      "description": "Structured content to inspect. Up to 50,000 `Value`s per request allowed.",
+      "description": "Structured content to inspect. Up to 50,000 `Value`s per request allowed.\nSee https://cloud.google.com/dlp/docs/inspecting-text#inspecting_a_table to\nlearn more.",
       "id": "GooglePrivacyDlpV2Table",
       "properties": {
         "headers": {
diff --git a/dlp/v2/dlp-gen.go b/dlp/v2/dlp-gen.go
index a14b003..46d19d9 100644
--- a/dlp/v2/dlp-gen.go
+++ b/dlp/v2/dlp-gen.go
@@ -206,6 +206,7 @@
 
 // GooglePrivacyDlpV2Action: A task to execute on the completion of a
 // job.
+// See https://cloud.google.com/dlp/docs/concepts-actions to learn more.
 type GooglePrivacyDlpV2Action struct {
 	// PubSub: Publish a notification to a pubsub topic.
 	PubSub *GooglePrivacyDlpV2PublishToPubSub `json:"pubSub,omitempty"`
@@ -552,6 +553,8 @@
 // will first attempt converting the type of the data to be transformed
 // to match
 // the type of the bound before comparing.
+// See https://cloud.google.com/dlp/docs/concepts-bucketing to learn
+// more.
 type GooglePrivacyDlpV2BucketingConfig struct {
 	// Buckets: Set of buckets. Ranges must be non-overlapping.
 	Buckets []*GooglePrivacyDlpV2Bucket `json:"buckets,omitempty"`
@@ -1106,6 +1109,10 @@
 	ByteItem *GooglePrivacyDlpV2ByteContentItem `json:"byteItem,omitempty"`
 
 	// Table: Structured content for inspection.
+	// See
+	// https://cloud.google.com/dlp/docs/inspecting-text#inspecting_a_tab
+	// le to
+	// learn more.
 	Table *GooglePrivacyDlpV2Table `json:"table,omitempty"`
 
 	// Value: String data to inspect or redact.
@@ -1424,7 +1431,7 @@
 // Identifiers must be at least two characters long.
 // In the case that the identifier is the empty string, it will be
 // skipped.
-// See [Pseudonymization](/dlp/docs/pseudonymization) for example usage.
+// See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
 type GooglePrivacyDlpV2CryptoReplaceFfxFpeConfig struct {
 	// Possible values:
 	//   "FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED"
@@ -1679,7 +1686,9 @@
 
 // GooglePrivacyDlpV2DateShiftConfig: Shifts dates by random number of
 // days, with option to be consistent for the
-// same context.
+// same context. See
+// https://cloud.google.com/dlp/docs/concepts-date-shifting
+// to learn more.
 type GooglePrivacyDlpV2DateShiftConfig struct {
 	// Context: Points to the field that contains the context, for example,
 	// an entity id.
@@ -1919,6 +1928,8 @@
 
 // GooglePrivacyDlpV2DeidentifyTemplate: The DeidentifyTemplates
 // contains instructions on how to deidentify content.
+// See https://cloud.google.com/dlp/docs/concepts-templates to learn
+// more.
 type GooglePrivacyDlpV2DeidentifyTemplate struct {
 	// CreateTime: The creation timestamp of a inspectTemplate, output only
 	// field.
@@ -2750,6 +2761,9 @@
 // being transformed, we will first attempt converting the type of the
 // data to
 // be transformed to match the type of the bound before comparing.
+//
+// See https://cloud.google.com/dlp/docs/concepts-bucketing to learn
+// more.
 type GooglePrivacyDlpV2FixedSizeBucketingConfig struct {
 	// BucketSize: Size of each bucket (except for minimum and maximum
 	// buckets). So if
@@ -2910,7 +2924,7 @@
 
 	// RedactAllText: If true, all text found in the image, regardless
 	// whether it matches an
-	// info_type, is redacted.
+	// info_type, is redacted. Only one should be provided.
 	RedactAllText bool `json:"redactAllText,omitempty"`
 
 	// RedactionColor: The color to use when redacting content from an
@@ -3088,9 +3102,11 @@
 // to text that is identified as a specific
 // info_type.
 type GooglePrivacyDlpV2InfoTypeTransformation struct {
-	// InfoTypes: InfoTypes to apply the transformation to. Empty list will
-	// match all
-	// available infoTypes for this transformation.
+	// InfoTypes: InfoTypes to apply the transformation to. An empty list
+	// will cause
+	// this transformation to apply to all findings that correspond
+	// to
+	// infoTypes that were requested in `InspectConfig`.
 	InfoTypes []*GooglePrivacyDlpV2InfoType `json:"infoTypes,omitempty"`
 
 	// PrimitiveTransformation: Primitive transformation to apply to the
@@ -3174,7 +3190,10 @@
 	//   "CONTENT_IMAGE" - Images found in the data.
 	ContentOptions []string `json:"contentOptions,omitempty"`
 
-	// CustomInfoTypes: Custom infoTypes provided by the user.
+	// CustomInfoTypes: CustomInfoTypes provided by the user.
+	// See
+	// https://cloud.google.com/dlp/docs/creating-custom-infotypes to learn
+	// more.
 	CustomInfoTypes []*GooglePrivacyDlpV2CustomInfoType `json:"customInfoTypes,omitempty"`
 
 	// ExcludeInfoTypes: When true, excludes type information of the
@@ -3198,6 +3217,7 @@
 	// MinLikelihood: Only returns findings equal or above this threshold.
 	// The default is
 	// POSSIBLE.
+	// See https://cloud.google.com/dlp/docs/likelihood to learn more.
 	//
 	// Possible values:
 	//   "LIKELIHOOD_UNSPECIFIED" - Default value; same as POSSIBLE.
@@ -3431,7 +3451,9 @@
 // configuration (set of types of sensitive data
 // to be detected) to be used anywhere you otherwise would normally
 // specify
-// InspectConfig.
+// InspectConfig. See
+// https://cloud.google.com/dlp/docs/concepts-templates
+// to learn more.
 type GooglePrivacyDlpV2InspectTemplate struct {
 	// CreateTime: The creation timestamp of a inspectTemplate, output only
 	// field.
@@ -3489,6 +3511,8 @@
 
 // GooglePrivacyDlpV2JobTrigger: Contains a configuration to make dlp
 // api calls on a repeating basis.
+// See https://cloud.google.com/dlp/docs/concepts-job-triggers to learn
+// more.
 type GooglePrivacyDlpV2JobTrigger struct {
 	// CreateTime: The creation timestamp of a triggeredJob, output only
 	// field.
@@ -4562,13 +4586,15 @@
 // GooglePrivacyDlpV2OutputStorageConfig: Cloud repository for storing
 // output.
 type GooglePrivacyDlpV2OutputStorageConfig struct {
-	// OutputSchema: Schema used for writing the findings. Columns are
-	// derived from the
-	// `Finding` object. If appending to an existing table, any columns from
-	// the
-	// predefined schema that are missing will be added. No columns in
-	// the
-	// existing table will be deleted.
+	// OutputSchema: Schema used for writing the findings for Inspect jobs.
+	// This field is only
+	// used for Inspect and must be unspecified for Risk jobs. Columns are
+	// derived
+	// from the `Finding` object. If appending to an existing table, any
+	// columns
+	// from the predefined schema that are missing will be added. No columns
+	// in
+	// the existing table will be deleted.
 	//
 	// If unspecified, then all available columns will be used for a new
 	// table,
@@ -4590,15 +4616,26 @@
 
 	// Table: Store findings in an existing table or a new table in an
 	// existing
-	// dataset. Each column in an existing table must have the same name,
-	// type,
-	// and mode of a field in the `Finding` object. If table_id is not set a
-	// new
-	// one will be generated for you with the following
+	// dataset. If table_id is not set a new one will be generated
+	// for you with the following
 	// format:
 	// dlp_googleapis_yyyy_mm_dd_[dlp_job_id]. Pacific timezone will be used
 	// for
 	// generating the date details.
+	//
+	// For Inspect, each column in an existing output table must have the
+	// same
+	// name, type, and mode of a field in the `Finding` object.
+	//
+	// For Risk, an existing output table should be the output of a
+	// previous
+	// Risk analysis job run on the same source table, with the same
+	// privacy
+	// metric and quasi-identifiers. Risk jobs that analyze the same table
+	// but
+	// compute a different privacy metric, or use different sets
+	// of
+	// quasi-identifiers, cannot store their results in the same table.
 	Table *GooglePrivacyDlpV2BigQueryTable `json:"table,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "OutputSchema") to
@@ -5227,8 +5264,8 @@
 }
 
 // GooglePrivacyDlpV2RedactImageRequest: Request to search for
-// potentially sensitive info in a list of items
-// and replace it with a default or provided content.
+// potentially sensitive info in an image and redact it
+// by covering it with a colored rectangle.
 type GooglePrivacyDlpV2RedactImageRequest struct {
 	// ByteItem: The content must be PNG, JPEG, SVG or BMP.
 	ByteItem *GooglePrivacyDlpV2ByteContentItem `json:"byteItem,omitempty"`
@@ -5542,6 +5579,9 @@
 
 // GooglePrivacyDlpV2RiskAnalysisJobConfig: Configuration for a risk
 // analysis job.
+// See
+// https://cloud.google.com/dlp/docs/concepts-risk-analysis to learn
+// more.
 type GooglePrivacyDlpV2RiskAnalysisJobConfig struct {
 	// Actions: Actions to execute at the completion of the job. Are
 	// executed in the order
@@ -5608,7 +5648,7 @@
 // OutputStorageConfig. Only a single instance of this action can
 // be
 // specified.
-// Compatible with: Inspect
+// Compatible with: Inspect, Risk
 type GooglePrivacyDlpV2SaveFindings struct {
 	OutputConfig *GooglePrivacyDlpV2OutputStorageConfig `json:"outputConfig,omitempty"`
 
@@ -5639,13 +5679,13 @@
 type GooglePrivacyDlpV2Schedule struct {
 	// RecurrencePeriodDuration: With this option a job is started a regular
 	// periodic basis. For
-	// example: every 10 minutes.
+	// example: every day (86400 seconds).
 	//
 	// A scheduled start time will be skipped if the previous
 	// execution has not ended when its scheduled time occurs.
 	//
 	// This value must be set to a time duration greater than or equal
-	// to 60 minutes and can be no longer than 60 days.
+	// to 1 day and can be no longer than 60 days.
 	RecurrencePeriodDuration string `json:"recurrencePeriodDuration,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g.
@@ -5819,6 +5859,10 @@
 
 // GooglePrivacyDlpV2Table: Structured content to inspect. Up to 50,000
 // `Value`s per request allowed.
+// See
+// https://cloud.google.com/dlp/docs/inspecting-text#inspecting_a_table
+// to
+// learn more.
 type GooglePrivacyDlpV2Table struct {
 	Headers []*GooglePrivacyDlpV2FieldId `json:"headers,omitempty"`
 
@@ -6721,9 +6765,9 @@
 
 // List: Returns a list of the sensitive information types that the DLP
 // API
-// supports. For more information, see [Listing supported
-// predefined
-// infoTypes](/dlp/docs/listing-infotypes).
+// supports. See https://cloud.google.com/dlp/docs/infotypes-reference
+// to
+// learn more.
 func (r *InfoTypesService) List() *InfoTypesListCall {
 	c := &InfoTypesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	return c
@@ -6838,7 +6882,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Returns a list of the sensitive information types that the DLP API\nsupports. For more information, see [Listing supported predefined\ninfoTypes](/dlp/docs/listing-infotypes).",
+	//   "description": "Returns a list of the sensitive information types that the DLP API\nsupports. See https://cloud.google.com/dlp/docs/infotypes-reference to\nlearn more.",
 	//   "flatPath": "v2/infoTypes",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.infoTypes.list",
@@ -6880,6 +6924,9 @@
 // Create: Creates a DeidentifyTemplate for re-using frequently used
 // configuration
 // for de-identifying content, images, and storage.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *OrganizationsDeidentifyTemplatesService) Create(parent string, googleprivacydlpv2createdeidentifytemplaterequest *GooglePrivacyDlpV2CreateDeidentifyTemplateRequest) *OrganizationsDeidentifyTemplatesCreateCall {
 	c := &OrganizationsDeidentifyTemplatesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -6974,7 +7021,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates a DeidentifyTemplate for re-using frequently used configuration\nfor de-identifying content, images, and storage.",
+	//   "description": "Creates a DeidentifyTemplate for re-using frequently used configuration\nfor de-identifying content, images, and storage.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.organizations.deidentifyTemplates.create",
@@ -7015,6 +7062,9 @@
 }
 
 // Delete: Deletes a DeidentifyTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *OrganizationsDeidentifyTemplatesService) Delete(name string) *OrganizationsDeidentifyTemplatesDeleteCall {
 	c := &OrganizationsDeidentifyTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -7102,7 +7152,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes a DeidentifyTemplate.",
+	//   "description": "Deletes a DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates/{deidentifyTemplatesId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "dlp.organizations.deidentifyTemplates.delete",
@@ -7141,6 +7191,9 @@
 }
 
 // Get: Gets a DeidentifyTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *OrganizationsDeidentifyTemplatesService) Get(name string) *OrganizationsDeidentifyTemplatesGetCall {
 	c := &OrganizationsDeidentifyTemplatesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -7242,7 +7295,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets a DeidentifyTemplate.",
+	//   "description": "Gets a DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates/{deidentifyTemplatesId}",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.organizations.deidentifyTemplates.get",
@@ -7281,6 +7334,9 @@
 }
 
 // List: Lists DeidentifyTemplates.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *OrganizationsDeidentifyTemplatesService) List(parent string) *OrganizationsDeidentifyTemplatesListCall {
 	c := &OrganizationsDeidentifyTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -7399,7 +7455,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Lists DeidentifyTemplates.",
+	//   "description": "Lists DeidentifyTemplates.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.organizations.deidentifyTemplates.list",
@@ -7470,6 +7526,9 @@
 }
 
 // Patch: Updates the DeidentifyTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *OrganizationsDeidentifyTemplatesService) Patch(name string, googleprivacydlpv2updatedeidentifytemplaterequest *GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest) *OrganizationsDeidentifyTemplatesPatchCall {
 	c := &OrganizationsDeidentifyTemplatesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -7564,7 +7623,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Updates the DeidentifyTemplate.",
+	//   "description": "Updates the DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/organizations/{organizationsId}/deidentifyTemplates/{deidentifyTemplatesId}",
 	//   "httpMethod": "PATCH",
 	//   "id": "dlp.organizations.deidentifyTemplates.patch",
@@ -7608,6 +7667,8 @@
 // Create: Creates an InspectTemplate for re-using frequently used
 // configuration
 // for inspecting content, images, and storage.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *OrganizationsInspectTemplatesService) Create(parent string, googleprivacydlpv2createinspecttemplaterequest *GooglePrivacyDlpV2CreateInspectTemplateRequest) *OrganizationsInspectTemplatesCreateCall {
 	c := &OrganizationsInspectTemplatesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -7702,7 +7763,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates an InspectTemplate for re-using frequently used configuration\nfor inspecting content, images, and storage.",
+	//   "description": "Creates an InspectTemplate for re-using frequently used configuration\nfor inspecting content, images, and storage.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/organizations/{organizationsId}/inspectTemplates",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.organizations.inspectTemplates.create",
@@ -7743,6 +7804,8 @@
 }
 
 // Delete: Deletes an InspectTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *OrganizationsInspectTemplatesService) Delete(name string) *OrganizationsInspectTemplatesDeleteCall {
 	c := &OrganizationsInspectTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -7830,7 +7893,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes an InspectTemplate.",
+	//   "description": "Deletes an InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/organizations/{organizationsId}/inspectTemplates/{inspectTemplatesId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "dlp.organizations.inspectTemplates.delete",
@@ -7869,6 +7932,8 @@
 }
 
 // Get: Gets an InspectTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *OrganizationsInspectTemplatesService) Get(name string) *OrganizationsInspectTemplatesGetCall {
 	c := &OrganizationsInspectTemplatesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -7970,7 +8035,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets an InspectTemplate.",
+	//   "description": "Gets an InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/organizations/{organizationsId}/inspectTemplates/{inspectTemplatesId}",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.organizations.inspectTemplates.get",
@@ -8009,6 +8074,8 @@
 }
 
 // List: Lists InspectTemplates.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *OrganizationsInspectTemplatesService) List(parent string) *OrganizationsInspectTemplatesListCall {
 	c := &OrganizationsInspectTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -8127,7 +8194,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Lists InspectTemplates.",
+	//   "description": "Lists InspectTemplates.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/organizations/{organizationsId}/inspectTemplates",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.organizations.inspectTemplates.list",
@@ -8198,6 +8265,8 @@
 }
 
 // Patch: Updates the InspectTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *OrganizationsInspectTemplatesService) Patch(name string, googleprivacydlpv2updateinspecttemplaterequest *GooglePrivacyDlpV2UpdateInspectTemplateRequest) *OrganizationsInspectTemplatesPatchCall {
 	c := &OrganizationsInspectTemplatesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -8292,7 +8361,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Updates the InspectTemplate.",
+	//   "description": "Updates the InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/organizations/{organizationsId}/inspectTemplates/{inspectTemplatesId}",
 	//   "httpMethod": "PATCH",
 	//   "id": "dlp.organizations.inspectTemplates.patch",
@@ -8336,7 +8405,9 @@
 // Deidentify: De-identifies potentially sensitive info from a
 // ContentItem.
 // This method has limits on input size and output size.
-// [How-to guide](/dlp/docs/deidentify-sensitive-data)
+// See https://cloud.google.com/dlp/docs/deidentify-sensitive-data
+// to
+// learn more.
 func (r *ProjectsContentService) Deidentify(parent string, googleprivacydlpv2deidentifycontentrequest *GooglePrivacyDlpV2DeidentifyContentRequest) *ProjectsContentDeidentifyCall {
 	c := &ProjectsContentDeidentifyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -8432,7 +8503,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "De-identifies potentially sensitive info from a ContentItem.\nThis method has limits on input size and output size.\n[How-to guide](/dlp/docs/deidentify-sensitive-data)",
+	//   "description": "De-identifies potentially sensitive info from a ContentItem.\nThis method has limits on input size and output size.\nSee https://cloud.google.com/dlp/docs/deidentify-sensitive-data to\nlearn more.",
 	//   "flatPath": "v2/projects/{projectsId}/content:deidentify",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.content.deidentify",
@@ -8476,9 +8547,10 @@
 // Inspect: Finds potentially sensitive info in content.
 // This method has limits on input size, processing time, and output
 // size.
-// [How-to guide for text](/dlp/docs/inspecting-text), [How-to guide
-// for
-// images](/dlp/docs/inspecting-images)
+//
+// For how to guides, see
+// https://cloud.google.com/dlp/docs/inspecting-images
+// and https://cloud.google.com/dlp/docs/inspecting-text,
 func (r *ProjectsContentService) Inspect(parent string, googleprivacydlpv2inspectcontentrequest *GooglePrivacyDlpV2InspectContentRequest) *ProjectsContentInspectCall {
 	c := &ProjectsContentInspectCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -8574,7 +8646,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Finds potentially sensitive info in content.\nThis method has limits on input size, processing time, and output size.\n[How-to guide for text](/dlp/docs/inspecting-text), [How-to guide for\nimages](/dlp/docs/inspecting-images)",
+	//   "description": "Finds potentially sensitive info in content.\nThis method has limits on input size, processing time, and output size.\n\nFor how to guides, see https://cloud.google.com/dlp/docs/inspecting-images\nand https://cloud.google.com/dlp/docs/inspecting-text,",
 	//   "flatPath": "v2/projects/{projectsId}/content:inspect",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.content.inspect",
@@ -8615,7 +8687,12 @@
 	header_                                    http.Header
 }
 
-// Reidentify: Re-identifies content that has been de-identified.
+// Reidentify: Re-identifies content that has been
+// de-identified.
+// See
+// https://cloud.google.com/dlp/docs/pseudonymization#
+// re-identification_in_free_text_code_example
+// to learn more.
 func (r *ProjectsContentService) Reidentify(parent string, googleprivacydlpv2reidentifycontentrequest *GooglePrivacyDlpV2ReidentifyContentRequest) *ProjectsContentReidentifyCall {
 	c := &ProjectsContentReidentifyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -8711,7 +8788,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Re-identifies content that has been de-identified.",
+	//   "description": "Re-identifies content that has been de-identified.\nSee\nhttps://cloud.google.com/dlp/docs/pseudonymization#re-identification_in_free_text_code_example\nto learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/content:reidentify",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.content.reidentify",
@@ -8755,6 +8832,9 @@
 // Create: Creates a DeidentifyTemplate for re-using frequently used
 // configuration
 // for de-identifying content, images, and storage.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *ProjectsDeidentifyTemplatesService) Create(parent string, googleprivacydlpv2createdeidentifytemplaterequest *GooglePrivacyDlpV2CreateDeidentifyTemplateRequest) *ProjectsDeidentifyTemplatesCreateCall {
 	c := &ProjectsDeidentifyTemplatesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -8849,7 +8929,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates a DeidentifyTemplate for re-using frequently used configuration\nfor de-identifying content, images, and storage.",
+	//   "description": "Creates a DeidentifyTemplate for re-using frequently used configuration\nfor de-identifying content, images, and storage.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/projects/{projectsId}/deidentifyTemplates",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.deidentifyTemplates.create",
@@ -8890,6 +8970,9 @@
 }
 
 // Delete: Deletes a DeidentifyTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *ProjectsDeidentifyTemplatesService) Delete(name string) *ProjectsDeidentifyTemplatesDeleteCall {
 	c := &ProjectsDeidentifyTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -8977,7 +9060,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes a DeidentifyTemplate.",
+	//   "description": "Deletes a DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/projects/{projectsId}/deidentifyTemplates/{deidentifyTemplatesId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "dlp.projects.deidentifyTemplates.delete",
@@ -9016,6 +9099,9 @@
 }
 
 // Get: Gets a DeidentifyTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *ProjectsDeidentifyTemplatesService) Get(name string) *ProjectsDeidentifyTemplatesGetCall {
 	c := &ProjectsDeidentifyTemplatesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -9117,7 +9203,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets a DeidentifyTemplate.",
+	//   "description": "Gets a DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/projects/{projectsId}/deidentifyTemplates/{deidentifyTemplatesId}",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.projects.deidentifyTemplates.get",
@@ -9156,6 +9242,9 @@
 }
 
 // List: Lists DeidentifyTemplates.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *ProjectsDeidentifyTemplatesService) List(parent string) *ProjectsDeidentifyTemplatesListCall {
 	c := &ProjectsDeidentifyTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -9274,7 +9363,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Lists DeidentifyTemplates.",
+	//   "description": "Lists DeidentifyTemplates.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/projects/{projectsId}/deidentifyTemplates",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.projects.deidentifyTemplates.list",
@@ -9345,6 +9434,9 @@
 }
 
 // Patch: Updates the DeidentifyTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates-deid to
+// learn
+// more.
 func (r *ProjectsDeidentifyTemplatesService) Patch(name string, googleprivacydlpv2updatedeidentifytemplaterequest *GooglePrivacyDlpV2UpdateDeidentifyTemplateRequest) *ProjectsDeidentifyTemplatesPatchCall {
 	c := &ProjectsDeidentifyTemplatesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -9439,7 +9531,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Updates the DeidentifyTemplate.",
+	//   "description": "Updates the DeidentifyTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates-deid to learn\nmore.",
 	//   "flatPath": "v2/projects/{projectsId}/deidentifyTemplates/{deidentifyTemplatesId}",
 	//   "httpMethod": "PATCH",
 	//   "id": "dlp.projects.deidentifyTemplates.patch",
@@ -9485,6 +9577,10 @@
 // makes a best effort to cancel the DlpJob, but success is
 // not
 // guaranteed.
+// See https://cloud.google.com/dlp/docs/inspecting-storage
+// and
+// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn
+// more.
 func (r *ProjectsDlpJobsService) Cancel(name string, googleprivacydlpv2canceldlpjobrequest *GooglePrivacyDlpV2CancelDlpJobRequest) *ProjectsDlpJobsCancelCall {
 	c := &ProjectsDlpJobsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -9578,7 +9674,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Starts asynchronous cancellation on a long-running DlpJob. The server\nmakes a best effort to cancel the DlpJob, but success is not\nguaranteed.",
+	//   "description": "Starts asynchronous cancellation on a long-running DlpJob. The server\nmakes a best effort to cancel the DlpJob, but success is not\nguaranteed.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/dlpJobs/{dlpJobsId}:cancel",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.dlpJobs.cancel",
@@ -9621,7 +9717,10 @@
 
 // Create: Creates a new job to inspect storage or calculate risk
 // metrics.
-// [How-to guide](/dlp/docs/compute-risk-analysis).
+// See https://cloud.google.com/dlp/docs/inspecting-storage
+// and
+// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn
+// more.
 func (r *ProjectsDlpJobsService) Create(parent string, googleprivacydlpv2createdlpjobrequest *GooglePrivacyDlpV2CreateDlpJobRequest) *ProjectsDlpJobsCreateCall {
 	c := &ProjectsDlpJobsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -9715,7 +9814,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates a new job to inspect storage or calculate risk metrics.\n[How-to guide](/dlp/docs/compute-risk-analysis).",
+	//   "description": "Creates a new job to inspect storage or calculate risk metrics.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/dlpJobs",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.dlpJobs.create",
@@ -9760,6 +9859,10 @@
 // no longer interested in the DlpJob result. The job will be cancelled
 // if
 // possible.
+// See https://cloud.google.com/dlp/docs/inspecting-storage
+// and
+// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn
+// more.
 func (r *ProjectsDlpJobsService) Delete(name string) *ProjectsDlpJobsDeleteCall {
 	c := &ProjectsDlpJobsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -9847,7 +9950,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes a long-running DlpJob. This method indicates that the client is\nno longer interested in the DlpJob result. The job will be cancelled if\npossible.",
+	//   "description": "Deletes a long-running DlpJob. This method indicates that the client is\nno longer interested in the DlpJob result. The job will be cancelled if\npossible.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/dlpJobs/{dlpJobsId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "dlp.projects.dlpJobs.delete",
@@ -9886,6 +9989,10 @@
 }
 
 // Get: Gets the latest state of a long-running DlpJob.
+// See https://cloud.google.com/dlp/docs/inspecting-storage
+// and
+// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn
+// more.
 func (r *ProjectsDlpJobsService) Get(name string) *ProjectsDlpJobsGetCall {
 	c := &ProjectsDlpJobsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -9986,7 +10093,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets the latest state of a long-running DlpJob.",
+	//   "description": "Gets the latest state of a long-running DlpJob.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/dlpJobs/{dlpJobsId}",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.projects.dlpJobs.get",
@@ -10024,7 +10131,12 @@
 	header_      http.Header
 }
 
-// List: Lists DlpJobs that match the specified filter in the request.
+// List: Lists DlpJobs that match the specified filter in the
+// request.
+// See https://cloud.google.com/dlp/docs/inspecting-storage
+// and
+// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn
+// more.
 func (r *ProjectsDlpJobsService) List(parent string) *ProjectsDlpJobsListCall {
 	c := &ProjectsDlpJobsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -10184,7 +10296,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Lists DlpJobs that match the specified filter in the request.",
+	//   "description": "Lists DlpJobs that match the specified filter in the request.\nSee https://cloud.google.com/dlp/docs/inspecting-storage and\nhttps://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/dlpJobs",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.projects.dlpJobs.list",
@@ -10272,7 +10384,9 @@
 // Redact: Redacts potentially sensitive info from an image.
 // This method has limits on input size, processing time, and output
 // size.
-// [How-to guide](/dlp/docs/redacting-sensitive-data-images)
+// See https://cloud.google.com/dlp/docs/redacting-sensitive-data-images
+// to
+// learn more.
 func (r *ProjectsImageService) Redact(parent string, googleprivacydlpv2redactimagerequest *GooglePrivacyDlpV2RedactImageRequest) *ProjectsImageRedactCall {
 	c := &ProjectsImageRedactCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -10367,7 +10481,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Redacts potentially sensitive info from an image.\nThis method has limits on input size, processing time, and output size.\n[How-to guide](/dlp/docs/redacting-sensitive-data-images)",
+	//   "description": "Redacts potentially sensitive info from an image.\nThis method has limits on input size, processing time, and output size.\nSee https://cloud.google.com/dlp/docs/redacting-sensitive-data-images to\nlearn more.",
 	//   "flatPath": "v2/projects/{projectsId}/image:redact",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.image.redact",
@@ -10411,6 +10525,8 @@
 // Create: Creates an InspectTemplate for re-using frequently used
 // configuration
 // for inspecting content, images, and storage.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *ProjectsInspectTemplatesService) Create(parent string, googleprivacydlpv2createinspecttemplaterequest *GooglePrivacyDlpV2CreateInspectTemplateRequest) *ProjectsInspectTemplatesCreateCall {
 	c := &ProjectsInspectTemplatesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -10505,7 +10621,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates an InspectTemplate for re-using frequently used configuration\nfor inspecting content, images, and storage.",
+	//   "description": "Creates an InspectTemplate for re-using frequently used configuration\nfor inspecting content, images, and storage.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/inspectTemplates",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.inspectTemplates.create",
@@ -10546,6 +10662,8 @@
 }
 
 // Delete: Deletes an InspectTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *ProjectsInspectTemplatesService) Delete(name string) *ProjectsInspectTemplatesDeleteCall {
 	c := &ProjectsInspectTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -10633,7 +10751,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes an InspectTemplate.",
+	//   "description": "Deletes an InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/inspectTemplates/{inspectTemplatesId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "dlp.projects.inspectTemplates.delete",
@@ -10672,6 +10790,8 @@
 }
 
 // Get: Gets an InspectTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *ProjectsInspectTemplatesService) Get(name string) *ProjectsInspectTemplatesGetCall {
 	c := &ProjectsInspectTemplatesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -10773,7 +10893,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets an InspectTemplate.",
+	//   "description": "Gets an InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/inspectTemplates/{inspectTemplatesId}",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.projects.inspectTemplates.get",
@@ -10812,6 +10932,8 @@
 }
 
 // List: Lists InspectTemplates.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *ProjectsInspectTemplatesService) List(parent string) *ProjectsInspectTemplatesListCall {
 	c := &ProjectsInspectTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -10930,7 +11052,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Lists InspectTemplates.",
+	//   "description": "Lists InspectTemplates.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/inspectTemplates",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.projects.inspectTemplates.list",
@@ -11001,6 +11123,8 @@
 }
 
 // Patch: Updates the InspectTemplate.
+// See https://cloud.google.com/dlp/docs/creating-templates to learn
+// more.
 func (r *ProjectsInspectTemplatesService) Patch(name string, googleprivacydlpv2updateinspecttemplaterequest *GooglePrivacyDlpV2UpdateInspectTemplateRequest) *ProjectsInspectTemplatesPatchCall {
 	c := &ProjectsInspectTemplatesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -11095,7 +11219,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Updates the InspectTemplate.",
+	//   "description": "Updates the InspectTemplate.\nSee https://cloud.google.com/dlp/docs/creating-templates to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/inspectTemplates/{inspectTemplatesId}",
 	//   "httpMethod": "PATCH",
 	//   "id": "dlp.projects.inspectTemplates.patch",
@@ -11139,6 +11263,8 @@
 // Create: Creates a job trigger to run DLP actions such as scanning
 // storage for
 // sensitive information on a set schedule.
+// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn
+// more.
 func (r *ProjectsJobTriggersService) Create(parent string, googleprivacydlpv2createjobtriggerrequest *GooglePrivacyDlpV2CreateJobTriggerRequest) *ProjectsJobTriggersCreateCall {
 	c := &ProjectsJobTriggersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -11232,7 +11358,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Creates a job trigger to run DLP actions such as scanning storage for\nsensitive information on a set schedule.",
+	//   "description": "Creates a job trigger to run DLP actions such as scanning storage for\nsensitive information on a set schedule.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/jobTriggers",
 	//   "httpMethod": "POST",
 	//   "id": "dlp.projects.jobTriggers.create",
@@ -11273,6 +11399,8 @@
 }
 
 // Delete: Deletes a job trigger.
+// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn
+// more.
 func (r *ProjectsJobTriggersService) Delete(name string) *ProjectsJobTriggersDeleteCall {
 	c := &ProjectsJobTriggersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -11360,7 +11488,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes a job trigger.",
+	//   "description": "Deletes a job trigger.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/jobTriggers/{jobTriggersId}",
 	//   "httpMethod": "DELETE",
 	//   "id": "dlp.projects.jobTriggers.delete",
@@ -11399,6 +11527,8 @@
 }
 
 // Get: Gets a job trigger.
+// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn
+// more.
 func (r *ProjectsJobTriggersService) Get(name string) *ProjectsJobTriggersGetCall {
 	c := &ProjectsJobTriggersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -11499,7 +11629,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Gets a job trigger.",
+	//   "description": "Gets a job trigger.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/jobTriggers/{jobTriggersId}",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.projects.jobTriggers.get",
@@ -11538,6 +11668,8 @@
 }
 
 // List: Lists job triggers.
+// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn
+// more.
 func (r *ProjectsJobTriggersService) List(parent string) *ProjectsJobTriggersListCall {
 	c := &ProjectsJobTriggersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -11546,20 +11678,20 @@
 
 // OrderBy sets the optional parameter "orderBy": Optional comma
 // separated list of triggeredJob fields to order by,
-// followed by 'asc/desc' postfix, i.e.
-// "create_time asc,name desc,schedule_mode asc". This list
-// is
-// case-insensitive.
+// followed by `asc` or `desc` postfix. This list is
+// case-insensitive,
+// default sorting order is ascending, redundant space characters
+// are
+// insignificant.
 //
-// Example: "name asc,schedule_mode desc, status desc"
+// Example: `name asc,update_time, create_time desc`
 //
-// Supported filters keys and values are:
+// Supported fields are:
 //
 // - `create_time`: corresponds to time the triggeredJob was created.
 // - `update_time`: corresponds to time the triggeredJob was last
 // updated.
-// - `name`: corresponds to JobTrigger's display name.
-// - `status`: corresponds to the triggeredJob status.
+// - `name`: corresponds to JobTrigger's name.
 func (c *ProjectsJobTriggersListCall) OrderBy(orderBy string) *ProjectsJobTriggersListCall {
 	c.urlParams_.Set("orderBy", orderBy)
 	return c
@@ -11574,9 +11706,8 @@
 
 // PageToken sets the optional parameter "pageToken": Optional page
 // token to continue retrieval. Comes from previous call
-// to ListJobTriggers. `order_by` and `filter` should not change
-// for
-// subsequent calls, but can be omitted if token is specified.
+// to ListJobTriggers. `order_by` field must not
+// change for subsequent calls.
 func (c *ProjectsJobTriggersListCall) PageToken(pageToken string) *ProjectsJobTriggersListCall {
 	c.urlParams_.Set("pageToken", pageToken)
 	return c
@@ -11678,7 +11809,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Lists job triggers.",
+	//   "description": "Lists job triggers.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/jobTriggers",
 	//   "httpMethod": "GET",
 	//   "id": "dlp.projects.jobTriggers.list",
@@ -11687,7 +11818,7 @@
 	//   ],
 	//   "parameters": {
 	//     "orderBy": {
-	//       "description": "Optional comma separated list of triggeredJob fields to order by,\nfollowed by 'asc/desc' postfix, i.e.\n`\"create_time asc,name desc,schedule_mode asc\"`. This list is\ncase-insensitive.\n\nExample: `\"name asc,schedule_mode desc, status desc\"`\n\nSupported filters keys and values are:\n\n- `create_time`: corresponds to time the triggeredJob was created.\n- `update_time`: corresponds to time the triggeredJob was last updated.\n- `name`: corresponds to JobTrigger's display name.\n- `status`: corresponds to the triggeredJob status.",
+	//       "description": "Optional comma separated list of triggeredJob fields to order by,\nfollowed by `asc` or `desc` postfix. This list is case-insensitive,\ndefault sorting order is ascending, redundant space characters are\ninsignificant.\n\nExample: `name asc,update_time, create_time desc`\n\nSupported fields are:\n\n- `create_time`: corresponds to time the triggeredJob was created.\n- `update_time`: corresponds to time the triggeredJob was last updated.\n- `name`: corresponds to JobTrigger's name.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
@@ -11698,12 +11829,12 @@
 	//       "type": "integer"
 	//     },
 	//     "pageToken": {
-	//       "description": "Optional page token to continue retrieval. Comes from previous call\nto ListJobTriggers. `order_by` and `filter` should not change for\nsubsequent calls, but can be omitted if token is specified.",
+	//       "description": "Optional page token to continue retrieval. Comes from previous call\nto ListJobTriggers. `order_by` field must not\nchange for subsequent calls.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "parent": {
-	//       "description": "The parent resource name, for example projects/my-project-id.",
+	//       "description": "The parent resource name, for example `projects/my-project-id`.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+$",
 	//       "required": true,
@@ -11754,6 +11885,8 @@
 }
 
 // Patch: Updates a job trigger.
+// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn
+// more.
 func (r *ProjectsJobTriggersService) Patch(name string, googleprivacydlpv2updatejobtriggerrequest *GooglePrivacyDlpV2UpdateJobTriggerRequest) *ProjectsJobTriggersPatchCall {
 	c := &ProjectsJobTriggersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.name = name
@@ -11847,7 +11980,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Updates a job trigger.",
+	//   "description": "Updates a job trigger.\nSee https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.",
 	//   "flatPath": "v2/projects/{projectsId}/jobTriggers/{jobTriggersId}",
 	//   "httpMethod": "PATCH",
 	//   "id": "dlp.projects.jobTriggers.patch",
diff --git a/firebaserules/v1/firebaserules-api.json b/firebaserules/v1/firebaserules-api.json
index e56b768..f4c4f65 100644
--- a/firebaserules/v1/firebaserules-api.json
+++ b/firebaserules/v1/firebaserules-api.json
@@ -65,11 +65,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -90,12 +85,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -481,7 +470,7 @@
       }
     }
   },
-  "revision": "20180124",
+  "revision": "20180605",
   "rootUrl": "https://firebaserules.googleapis.com/",
   "schemas": {
     "Arg": {
@@ -847,6 +836,13 @@
             "Test is a failure."
           ],
           "type": "string"
+        },
+        "visitedExpressions": {
+          "description": "The set of visited expressions for a given test. This returns positions\nand evaluation results of all visited expressions.",
+          "items": {
+            "$ref": "VisitedExpression"
+          },
+          "type": "array"
         }
       },
       "type": "object"
@@ -916,6 +912,21 @@
         }
       },
       "type": "object"
+    },
+    "VisitedExpression": {
+      "description": "Store the position and access outcome for an expression visited in rules.",
+      "id": "VisitedExpression",
+      "properties": {
+        "sourcePosition": {
+          "$ref": "SourcePosition",
+          "description": "Position in the `Source` or `Ruleset` where an expression was visited."
+        },
+        "value": {
+          "description": "The evaluated value for the visited expression, e.g. true/false",
+          "type": "any"
+        }
+      },
+      "type": "object"
     }
   },
   "servicePath": "",
diff --git a/firebaserules/v1/firebaserules-gen.go b/firebaserules/v1/firebaserules-gen.go
index 3ad9090..41cf942 100644
--- a/firebaserules/v1/firebaserules-gen.go
+++ b/firebaserules/v1/firebaserules-gen.go
@@ -824,6 +824,11 @@
 	//   "FAILURE" - Test is a failure.
 	State string `json:"state,omitempty"`
 
+	// VisitedExpressions: The set of visited expressions for a given test.
+	// This returns positions
+	// and evaluation results of all visited expressions.
+	VisitedExpressions []*VisitedExpression `json:"visitedExpressions,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "DebugMessages") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -989,6 +994,41 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// VisitedExpression: Store the position and access outcome for an
+// expression visited in rules.
+type VisitedExpression struct {
+	// SourcePosition: Position in the `Source` or `Ruleset` where an
+	// expression was visited.
+	SourcePosition *SourcePosition `json:"sourcePosition,omitempty"`
+
+	// Value: The evaluated value for the visited expression, e.g.
+	// true/false
+	Value interface{} `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "SourcePosition") 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. "SourcePosition") 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 *VisitedExpression) MarshalJSON() ([]byte, error) {
+	type NoMethod VisitedExpression
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // method id "firebaserules.projects.test":
 
 type ProjectsTestCall struct {
diff --git a/iam/v1/iam-api.json b/iam/v1/iam-api.json
index c6262f5..dc325b7 100644
--- a/iam/v1/iam-api.json
+++ b/iam/v1/iam-api.json
@@ -60,11 +60,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -85,12 +80,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -1074,7 +1063,7 @@
       }
     }
   },
-  "revision": "20180420",
+  "revision": "20180607",
   "rootUrl": "https://iam.googleapis.com/",
   "schemas": {
     "AuditConfig": {
diff --git a/poly/v1/poly-api.json b/poly/v1/poly-api.json
index 52b399e..6d08f5c 100644
--- a/poly/v1/poly-api.json
+++ b/poly/v1/poly-api.json
@@ -51,11 +51,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -76,12 +71,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -301,7 +290,7 @@
       }
     }
   },
-  "revision": "20180601",
+  "revision": "20180610",
   "rootUrl": "https://poly.googleapis.com/",
   "schemas": {
     "Asset": {
diff --git a/pubsub/v1/pubsub-api.json b/pubsub/v1/pubsub-api.json
index d8be67b..2a2e03d 100644
--- a/pubsub/v1/pubsub-api.json
+++ b/pubsub/v1/pubsub-api.json
@@ -62,11 +62,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -87,12 +82,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -1056,7 +1045,7 @@
       }
     }
   },
-  "revision": "20180522",
+  "revision": "20180604",
   "rootUrl": "https://pubsub.googleapis.com/",
   "schemas": {
     "AcknowledgeRequest": {
diff --git a/pubsub/v1beta1a/pubsub-api.json b/pubsub/v1beta1a/pubsub-api.json
index ef739b4..904b88b 100644
--- a/pubsub/v1beta1a/pubsub-api.json
+++ b/pubsub/v1beta1a/pubsub-api.json
@@ -62,11 +62,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -87,12 +82,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -467,7 +456,7 @@
       }
     }
   },
-  "revision": "20180416",
+  "revision": "20180604",
   "rootUrl": "https://pubsub.googleapis.com/",
   "schemas": {
     "AcknowledgeRequest": {
diff --git a/servicecontrol/v1/servicecontrol-api.json b/servicecontrol/v1/servicecontrol-api.json
index 6a880ad..646bc24 100644
--- a/servicecontrol/v1/servicecontrol-api.json
+++ b/servicecontrol/v1/servicecontrol-api.json
@@ -280,7 +280,7 @@
       }
     }
   },
-  "revision": "20180601",
+  "revision": "20180610",
   "rootUrl": "https://servicecontrol.googleapis.com/",
   "schemas": {
     "AllocateInfo": {
@@ -423,6 +423,43 @@
       },
       "type": "object"
     },
+    "Auth": {
+      "description": "This message defines request authentication attributes. Terminology is\nbased on the JSON Web Token (JWT) standard, but the terms also\ncorrelate to concepts in other standards.",
+      "id": "Auth",
+      "properties": {
+        "accessLevels": {
+          "description": "A list of access level resource names that allow resources to be\naccessed by authenticated requester. It is part of Secure GCP processing\nfor the incoming request. An access level string has the format:\n\"//{api_service_name}/accessPolicies/{policy_id}/accessLevels/{short_name}\"\n\nExample:\n\"//accesscontextmanager.googleapis.com/accessPolicies/MY_POLICY_ID/accessLevels/MY_LEVEL\"",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "audiences": {
+          "description": "The intended audience(s) for this authentication information. Reflects\nthe audience (`aud`) claim within a JWT. The audience\nvalue(s) depends on the `issuer`, but typically include one or more of\nthe following pieces of information:\n\n*  The services intended to receive the credential such as\n   [\"pubsub.googleapis.com\", \"storage.googleapis.com\"]\n*  A set of service-based scopes. For example,\n   [\"https://www.googleapis.com/auth/cloud-platform\"]\n*  The client id of an app, such as the Firebase project id for JWTs\n   from Firebase Auth.\n\nConsult the documentation for the credential issuer to determine the\ninformation provided.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "claims": {
+          "additionalProperties": {
+            "description": "Properties of the object.",
+            "type": "any"
+          },
+          "description": "Structured claims presented with the credential. JWTs include\n`{key: value}` pairs for standard and private claims. The following\nis a subset of the standard required and optional claims that would\ntypically be presented for a Google-based JWT:\n\n   {'iss': 'accounts.google.com',\n    'sub': '113289723416554971153',\n    'aud': ['123456789012', 'pubsub.googleapis.com'],\n    'azp': '123456789012.apps.googleusercontent.com',\n    'email': 'jsmith@example.com',\n    'iat': 1353601026,\n    'exp': 1353604926}\n\nSAML assertions are similarly specified, but with an identity provider\ndependent structure.",
+          "type": "object"
+        },
+        "presenter": {
+          "description": "The authorized presenter of the credential. Reflects the optional\nAuthorized Presenter (`azp`) claim within a JWT or the\nOAuth client id. For example, a Google Cloud Platform client id looks\nas follows: \"123456789012.apps.googleusercontent.com\".",
+          "type": "string"
+        },
+        "principal": {
+          "description": "The authenticated principal. Reflects the issuer (`iss`) and subject\n(`sub`) claims within a JWT. The issuer and subject should be `/`\ndelimited, with `/` percent-encoded within the subject fragment. For\nGoogle accounts, the principal format is:\n\"https://accounts.google.com/{id}\"",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "AuthenticationInfo": {
       "description": "Authentication information for the operation.",
       "id": "AuthenticationInfo",
@@ -461,6 +498,10 @@
         "resource": {
           "description": "The resource being accessed, as a REST-style string. For example:\n\n    bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID",
           "type": "string"
+        },
+        "resourceAttributes": {
+          "$ref": "Resource",
+          "description": "Resource attributes used in IAM condition evaluation. This field contains\nresource attributes like resource type and resource name.\n\nTo get the whole view of the attributes used in IAM\ncondition evaluation, the user must also look into\n`AuditLog.request_metadata.request_attributes`."
         }
       },
       "type": "object"
@@ -1309,6 +1350,70 @@
       },
       "type": "object"
     },
+    "Request": {
+      "description": "This message defines attributes for an HTTP request. If the actual\nrequest is not an HTTP request, the runtime system should try to map\nthe actual request to an equivalent HTTP request.",
+      "id": "Request",
+      "properties": {
+        "auth": {
+          "$ref": "Auth",
+          "description": "The request authentication. May be absent for unauthenticated requests.\nDerived from the HTTP request `Authorization` header or equivalent."
+        },
+        "fragment": {
+          "description": "The HTTP URL fragment. No URL decoding is performed.",
+          "type": "string"
+        },
+        "headers": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "The HTTP request headers. If multiple headers share the same key, they\nmust be merged according to the HTTP spec. All header keys must be\nlowercased, because HTTP header keys are case-insensitive.",
+          "type": "object"
+        },
+        "host": {
+          "description": "The HTTP request `Host` header value.",
+          "type": "string"
+        },
+        "id": {
+          "description": "The unique ID for a request, which can be propagated to downstream\nsystems. The ID should have low probability of collision\nwithin a single day for a specific service.",
+          "type": "string"
+        },
+        "method": {
+          "description": "The HTTP request method, such as `GET`, `POST`.",
+          "type": "string"
+        },
+        "path": {
+          "description": "The HTTP URL path.",
+          "type": "string"
+        },
+        "protocol": {
+          "description": "The network protocol used with the request, such as \"http/1.1\",\n\"spdy/3\", \"h2\", \"h2c\", \"webrtc\", \"tcp\", \"udp\", \"quic\". See\nhttps://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids\nfor details.",
+          "type": "string"
+        },
+        "query": {
+          "description": "The HTTP URL query in the format of `name1=value`\u0026name2=value2`, as it\nappears in the first line of the HTTP request. No decoding is performed.",
+          "type": "string"
+        },
+        "reason": {
+          "description": "A special parameter for request reason. It is used by security systems\nto associate auditing information with a request.",
+          "type": "string"
+        },
+        "scheme": {
+          "description": "The HTTP URL scheme, such as `http` and `https`.",
+          "type": "string"
+        },
+        "size": {
+          "description": "The HTTP request size in bytes. If unknown, it must be -1.",
+          "format": "int64",
+          "type": "string"
+        },
+        "time": {
+          "description": "The timestamp when the `destination` service receives the first byte of\nthe request.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "RequestMetadata": {
       "description": "Metadata about the request.",
       "id": "RequestMetadata",
@@ -1324,6 +1429,36 @@
         "callerSuppliedUserAgent": {
           "description": "The user agent of the caller.\nThis information is not authenticated and should be treated accordingly.\nFor example:\n\n+   `google-api-python-client/1.4.0`:\n    The request was made by the Google API client for Python.\n+   `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`:\n    The request was made by the Google Cloud SDK CLI (gcloud).\n+   `AppEngine-Google; (+http://code.google.com/appengine; appid: s~my-project`:\n    The request was made from the `my-project` App Engine app.\nNOLINT",
           "type": "string"
+        },
+        "requestAttributes": {
+          "$ref": "Request",
+          "description": "Request attributes used in IAM condition evaluation. This field contains\nrequest attributes like request time and access levels associated with\nthe request.\n\nTo get the whole view of the attributes used in IAM\ncondition evaluation, the user must also look into\n`AuditLog.authentication_info.resource_attributes`."
+        }
+      },
+      "type": "object"
+    },
+    "Resource": {
+      "description": "This message defines core attributes for a resource. A resource is an\naddressable (named) entity provided by the destination service. For\nexample, a file stored on a network storage service.",
+      "id": "Resource",
+      "properties": {
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "The labels or tags on the resource, such as AWS resource tags and\nKubernetes resource labels.",
+          "type": "object"
+        },
+        "name": {
+          "description": "The stable identifier (name) of a resource on the `service`. A resource\ncan be logically identified as \"//{resource.service}/{resource.name}\".\nThe differences between a resource name and a URI are:\n\n*   Resource name is a logical identifier, independent of network\n    protocol and API version. For example,\n    `//pubsub.googleapis.com/projects/123/topics/news-feed`.\n*   URI often includes protocol and version information, so it can\n    be used directly by applications. For example,\n    `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`.\n\nSee https://cloud.google.com/apis/design/resource_names for details.",
+          "type": "string"
+        },
+        "service": {
+          "description": "The name of the service that this resource belongs to, such as\n`pubsub.googleapis.com`. The service may be different from the DNS\nhostname that actually serves the request.",
+          "type": "string"
+        },
+        "type": {
+          "description": "The type of the resource. The scheme is platform-specific because\ndifferent platforms define their resources differently.",
+          "type": "string"
         }
       },
       "type": "object"
diff --git a/servicecontrol/v1/servicecontrol-gen.go b/servicecontrol/v1/servicecontrol-gen.go
index c3dbeb4..a70533e 100644
--- a/servicecontrol/v1/servicecontrol-gen.go
+++ b/servicecontrol/v1/servicecontrol-gen.go
@@ -327,6 +327,108 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Auth: This message defines request authentication attributes.
+// Terminology is
+// based on the JSON Web Token (JWT) standard, but the terms
+// also
+// correlate to concepts in other standards.
+type Auth struct {
+	// AccessLevels: A list of access level resource names that allow
+	// resources to be
+	// accessed by authenticated requester. It is part of Secure GCP
+	// processing
+	// for the incoming request. An access level string has the
+	// format:
+	// "//{api_service_name}/accessPolicies/{policy_id}/accessLevels/
+	// {short_name}"
+	//
+	// Example:
+	// "//accesscontextmanager.googleapis.com/accessP
+	// olicies/MY_POLICY_ID/accessLevels/MY_LEVEL"
+	AccessLevels []string `json:"accessLevels,omitempty"`
+
+	// Audiences: The intended audience(s) for this authentication
+	// information. Reflects
+	// the audience (`aud`) claim within a JWT. The audience
+	// value(s) depends on the `issuer`, but typically include one or more
+	// of
+	// the following pieces of information:
+	//
+	// *  The services intended to receive the credential such as
+	//    ["pubsub.googleapis.com", "storage.googleapis.com"]
+	// *  A set of service-based scopes. For example,
+	//    ["https://www.googleapis.com/auth/cloud-platform"]
+	// *  The client id of an app, such as the Firebase project id for JWTs
+	//    from Firebase Auth.
+	//
+	// Consult the documentation for the credential issuer to determine
+	// the
+	// information provided.
+	Audiences []string `json:"audiences,omitempty"`
+
+	// Claims: Structured claims presented with the credential. JWTs
+	// include
+	// `{key: value}` pairs for standard and private claims. The
+	// following
+	// is a subset of the standard required and optional claims that
+	// would
+	// typically be presented for a Google-based JWT:
+	//
+	//    {'iss': 'accounts.google.com',
+	//     'sub': '113289723416554971153',
+	//     'aud': ['123456789012', 'pubsub.googleapis.com'],
+	//     'azp': '123456789012.apps.googleusercontent.com',
+	//     'email': 'jsmith@example.com',
+	//     'iat': 1353601026,
+	//     'exp': 1353604926}
+	//
+	// SAML assertions are similarly specified, but with an identity
+	// provider
+	// dependent structure.
+	Claims googleapi.RawMessage `json:"claims,omitempty"`
+
+	// Presenter: The authorized presenter of the credential. Reflects the
+	// optional
+	// Authorized Presenter (`azp`) claim within a JWT or the
+	// OAuth client id. For example, a Google Cloud Platform client id
+	// looks
+	// as follows: "123456789012.apps.googleusercontent.com".
+	Presenter string `json:"presenter,omitempty"`
+
+	// Principal: The authenticated principal. Reflects the issuer (`iss`)
+	// and subject
+	// (`sub`) claims within a JWT. The issuer and subject should be
+	// `/`
+	// delimited, with `/` percent-encoded within the subject fragment.
+	// For
+	// Google accounts, the principal format
+	// is:
+	// "https://accounts.google.com/{id}"
+	Principal string `json:"principal,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AccessLevels") 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. "AccessLevels") 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 *Auth) MarshalJSON() ([]byte, error) {
+	type NoMethod Auth
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // AuthenticationInfo: Authentication information for the operation.
 type AuthenticationInfo struct {
 	// AuthoritySelector: The authority selector specified by the requestor,
@@ -392,6 +494,16 @@
 	//     bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID
 	Resource string `json:"resource,omitempty"`
 
+	// ResourceAttributes: Resource attributes used in IAM condition
+	// evaluation. This field contains
+	// resource attributes like resource type and resource name.
+	//
+	// To get the whole view of the attributes used in IAM
+	// condition evaluation, the user must also look
+	// into
+	// `AuditLog.request_metadata.request_attributes`.
+	ResourceAttributes *Resource `json:"resourceAttributes,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Granted") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -2051,6 +2163,96 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Request: This message defines attributes for an HTTP request. If the
+// actual
+// request is not an HTTP request, the runtime system should try to
+// map
+// the actual request to an equivalent HTTP request.
+type Request struct {
+	// Auth: The request authentication. May be absent for unauthenticated
+	// requests.
+	// Derived from the HTTP request `Authorization` header or equivalent.
+	Auth *Auth `json:"auth,omitempty"`
+
+	// Fragment: The HTTP URL fragment. No URL decoding is performed.
+	Fragment string `json:"fragment,omitempty"`
+
+	// Headers: The HTTP request headers. If multiple headers share the same
+	// key, they
+	// must be merged according to the HTTP spec. All header keys must
+	// be
+	// lowercased, because HTTP header keys are case-insensitive.
+	Headers map[string]string `json:"headers,omitempty"`
+
+	// Host: The HTTP request `Host` header value.
+	Host string `json:"host,omitempty"`
+
+	// Id: The unique ID for a request, which can be propagated to
+	// downstream
+	// systems. The ID should have low probability of collision
+	// within a single day for a specific service.
+	Id string `json:"id,omitempty"`
+
+	// Method: The HTTP request method, such as `GET`, `POST`.
+	Method string `json:"method,omitempty"`
+
+	// Path: The HTTP URL path.
+	Path string `json:"path,omitempty"`
+
+	// Protocol: The network protocol used with the request, such as
+	// "http/1.1",
+	// "spdy/3", "h2", "h2c", "webrtc", "tcp", "udp", "quic".
+	// See
+	// https://www.iana.org/assignments/tls-extensiontype-values/tls-exte
+	// nsiontype-values.xhtml#alpn-protocol-ids
+	// for details.
+	Protocol string `json:"protocol,omitempty"`
+
+	// Query: The HTTP URL query in the format of
+	// `name1=value`&name2=value2`, as it
+	// appears in the first line of the HTTP request. No decoding is
+	// performed.
+	Query string `json:"query,omitempty"`
+
+	// Reason: A special parameter for request reason. It is used by
+	// security systems
+	// to associate auditing information with a request.
+	Reason string `json:"reason,omitempty"`
+
+	// Scheme: The HTTP URL scheme, such as `http` and `https`.
+	Scheme string `json:"scheme,omitempty"`
+
+	// Size: The HTTP request size in bytes. If unknown, it must be -1.
+	Size int64 `json:"size,omitempty,string"`
+
+	// Time: The timestamp when the `destination` service receives the first
+	// byte of
+	// the request.
+	Time string `json:"time,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Auth") 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. "Auth") 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 *Request) MarshalJSON() ([]byte, error) {
+	type NoMethod Request
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // RequestMetadata: Metadata about the request.
 type RequestMetadata struct {
 	// CallerIp: The IP address of the caller.
@@ -2098,6 +2300,18 @@
 	// NOLINT
 	CallerSuppliedUserAgent string `json:"callerSuppliedUserAgent,omitempty"`
 
+	// RequestAttributes: Request attributes used in IAM condition
+	// evaluation. This field contains
+	// request attributes like request time and access levels associated
+	// with
+	// the request.
+	//
+	// To get the whole view of the attributes used in IAM
+	// condition evaluation, the user must also look
+	// into
+	// `AuditLog.authentication_info.resource_attributes`.
+	RequestAttributes *Request `json:"requestAttributes,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "CallerIp") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -2121,6 +2335,70 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Resource: This message defines core attributes for a resource. A
+// resource is an
+// addressable (named) entity provided by the destination service.
+// For
+// example, a file stored on a network storage service.
+type Resource struct {
+	// Labels: The labels or tags on the resource, such as AWS resource tags
+	// and
+	// Kubernetes resource labels.
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// Name: The stable identifier (name) of a resource on the `service`. A
+	// resource
+	// can be logically identified as
+	// "//{resource.service}/{resource.name}".
+	// The differences between a resource name and a URI are:
+	//
+	// *   Resource name is a logical identifier, independent of network
+	//     protocol and API version. For example,
+	//     `//pubsub.googleapis.com/projects/123/topics/news-feed`.
+	// *   URI often includes protocol and version information, so it can
+	//     be used directly by applications. For example,
+	//
+	// `https://pubsub.googleapis.com/v1/projects/123/topics/news-feed`.
+	//
+	// See
+	//  https://cloud.google.com/apis/design/resource_names for details.
+	Name string `json:"name,omitempty"`
+
+	// Service: The name of the service that this resource belongs to, such
+	// as
+	// `pubsub.googleapis.com`. The service may be different from the
+	// DNS
+	// hostname that actually serves the request.
+	Service string `json:"service,omitempty"`
+
+	// Type: The type of the resource. The scheme is platform-specific
+	// because
+	// different platforms define their resources differently.
+	Type string `json:"type,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Labels") 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. "Labels") 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 *Resource) MarshalJSON() ([]byte, error) {
+	type NoMethod Resource
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // ResourceInfo: Describes a resource associated with this operation.
 type ResourceInfo struct {
 	// ResourceContainer: The identifier of the parent of this resource
diff --git a/servicemanagement/v1/servicemanagement-api.json b/servicemanagement/v1/servicemanagement-api.json
index 2f52cd7..88b138f 100644
--- a/servicemanagement/v1/servicemanagement-api.json
+++ b/servicemanagement/v1/servicemanagement-api.json
@@ -69,11 +69,6 @@
       "location": "query",
       "type": "string"
     },
-    "bearer_token": {
-      "description": "OAuth bearer token.",
-      "location": "query",
-      "type": "string"
-    },
     "callback": {
       "description": "JSONP",
       "location": "query",
@@ -94,12 +89,6 @@
       "location": "query",
       "type": "string"
     },
-    "pp": {
-      "default": "true",
-      "description": "Pretty-print response.",
-      "location": "query",
-      "type": "boolean"
-    },
     "prettyPrint": {
       "default": "true",
       "description": "Returns response with indentations and line breaks.",
@@ -887,7 +876,7 @@
       }
     }
   },
-  "revision": "20180525",
+  "revision": "20180612",
   "rootUrl": "https://servicemanagement.googleapis.com/",
   "schemas": {
     "Advice": {