all: autogenerated update (2019-03-27)

Add:
- factchecktools/v1alpha1
- websecurityscanner/v1beta

Update:
- cloudkms/v1
- dialogflow/v2
- genomics/v1
- genomics/v1alpha2
- genomics/v2alpha1
- groupssettings/v1
- healthcare/v1alpha2
- iap/v1
- iap/v1beta1
- jobs/v3p1beta1
- people/v1
- plusdomains/v1
- runtimeconfig/v1beta1
- serviceconsumermanagement/v1
- speech/v1
- speech/v1p1beta1
- sqladmin/v1beta4
- testing/v1
diff --git a/api-list.json b/api-list.json
index 1df4eda..28a4285 100644
--- a/api-list.json
+++ b/api-list.json
@@ -1754,6 +1754,21 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "factchecktools:v1alpha1",
+   "name": "factchecktools",
+   "version": "v1alpha1",
+   "title": "Fact Check Tools API",
+   "description": "",
+   "discoveryRestUrl": "https://factchecktools.googleapis.com/$discovery/rest?version=v1alpha1",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://developers.google.com/fact-check/tools/api/",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "file:v1",
    "name": "file",
    "version": "v1",
@@ -2051,7 +2066,7 @@
    "name": "groupssettings",
    "version": "v1",
    "title": "Groups Settings API",
-   "description": "Lets you manage permission levels and related settings of a group.",
+   "description": "Manages permission levels and related settings of a group.",
    "discoveryRestUrl": "https://www.googleapis.com/discovery/v1/apis/groupssettings/v1/rest",
    "discoveryLink": "./apis/groupssettings/v1/rest",
    "icons": {
diff --git a/cloudkms/v1/cloudkms-api.json b/cloudkms/v1/cloudkms-api.json
index 1f1e873..56fe6c2 100644
--- a/cloudkms/v1/cloudkms-api.json
+++ b/cloudkms/v1/cloudkms-api.json
@@ -1061,7 +1061,7 @@
       }
     }
   },
-  "revision": "20190222",
+  "revision": "20190321",
   "rootUrl": "https://cloudkms.googleapis.com/",
   "schemas": {
     "AsymmetricDecryptRequest": {
@@ -1165,7 +1165,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/cloudkms/v1/cloudkms-gen.go b/cloudkms/v1/cloudkms-gen.go
index dab0043..e30a0e3 100644
--- a/cloudkms/v1/cloudkms-gen.go
+++ b/cloudkms/v1/cloudkms-gen.go
@@ -497,8 +497,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
diff --git a/dialogflow/v2/dialogflow-api.json b/dialogflow/v2/dialogflow-api.json
index fea3f7d..e0bfe10 100644
--- a/dialogflow/v2/dialogflow-api.json
+++ b/dialogflow/v2/dialogflow-api.json
@@ -1303,7 +1303,7 @@
       }
     }
   },
-  "revision": "20190318",
+  "revision": "20190326",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowV2Agent": {
@@ -1780,7 +1780,7 @@
           "type": "string"
         },
         "languageCode": {
-          "description": "Required. The language of the supplied audio. Dialogflow does not do\ntranslations. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/languages)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
+          "description": "Required. The language of the supplied audio. Dialogflow does not do\ntranslations. See [Language\nSupport](https://cloud.google.com/dialogflow-enterprise/docs/reference/language)\nfor a list of the currently supported language codes. Note that queries in\nthe same session do not necessarily need to specify the same language.",
           "type": "string"
         },
         "phraseHints": {
diff --git a/dialogflow/v2/dialogflow-gen.go b/dialogflow/v2/dialogflow-gen.go
index 8fc0624..0c4f36d 100644
--- a/dialogflow/v2/dialogflow-gen.go
+++ b/dialogflow/v2/dialogflow-gen.go
@@ -1282,7 +1282,7 @@
 	// translations. See
 	// [Language
 	// Support](https://cloud.google.com/dialogflow-enterprise/docs
-	// /reference/languages)
+	// /reference/language)
 	// for a list of the currently supported language codes. Note that
 	// queries in
 	// the same session do not necessarily need to specify the same
diff --git a/factchecktools/v1alpha1/factchecktools-api.json b/factchecktools/v1alpha1/factchecktools-api.json
new file mode 100644
index 0000000..482767b
--- /dev/null
+++ b/factchecktools/v1alpha1/factchecktools-api.json
@@ -0,0 +1,574 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://factchecktools.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Fact Check Tools",
+  "description": "",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://developers.google.com/fact-check/tools/api/",
+  "fullyEncodeReservedExpansion": true,
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "id": "factchecktools:v1alpha1",
+  "kind": "discovery#restDescription",
+  "name": "factchecktools",
+  "ownerDomain": "google.com",
+  "ownerName": "Google",
+  "parameters": {
+    "$.xgafv": {
+      "description": "V1 error format.",
+      "enum": [
+        "1",
+        "2"
+      ],
+      "enumDescriptions": [
+        "v1 error format",
+        "v2 error format"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "access_token": {
+      "description": "OAuth access token.",
+      "location": "query",
+      "type": "string"
+    },
+    "alt": {
+      "default": "json",
+      "description": "Data format for response.",
+      "enum": [
+        "json",
+        "media",
+        "proto"
+      ],
+      "enumDescriptions": [
+        "Responses with Content-Type of application/json",
+        "Media download with context-dependent Content-Type",
+        "Responses with Content-Type of application/x-protobuf"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "callback": {
+      "description": "JSONP",
+      "location": "query",
+      "type": "string"
+    },
+    "fields": {
+      "description": "Selector specifying which fields to include in a partial response.",
+      "location": "query",
+      "type": "string"
+    },
+    "key": {
+      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+      "location": "query",
+      "type": "string"
+    },
+    "oauth_token": {
+      "description": "OAuth 2.0 token for the current user.",
+      "location": "query",
+      "type": "string"
+    },
+    "prettyPrint": {
+      "default": "true",
+      "description": "Returns response with indentations and line breaks.",
+      "location": "query",
+      "type": "boolean"
+    },
+    "quotaUser": {
+      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+      "location": "query",
+      "type": "string"
+    },
+    "uploadType": {
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    }
+  },
+  "protocol": "rest",
+  "resources": {
+    "claims": {
+      "methods": {
+        "search": {
+          "description": "Search through fact-checked claims.",
+          "flatPath": "v1alpha1/claims:search",
+          "httpMethod": "GET",
+          "id": "factchecktools.claims.search",
+          "parameterOrder": [],
+          "parameters": {
+            "languageCode": {
+              "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". Can be used to\nrestrict results by language, though we do not currently consider the\nregion.",
+              "location": "query",
+              "type": "string"
+            },
+            "maxAgeDays": {
+              "description": "The maximum age of the returned search results, in days.\nAge is determined by either claim date or review date, whichever is newer.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "offset": {
+              "description": "An integer that specifies the current offset (that is, starting result\nlocation) in search results. This field is only considered if `page_token`\nis unset. For example, 0 means to return results starting from the first\nmatching result, and 10 means to return from the 11th result.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageSize": {
+              "description": "The pagination size. We will return up to that many results. Defaults to\n10 if not set.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "The pagination token. You may provide the `next_page_token` returned from a\nprevious List request, if any, in order to get the next page. All other\nfields must have the same values as in the previous request.",
+              "location": "query",
+              "type": "string"
+            },
+            "query": {
+              "description": "Textual query string. Required unless `review_publisher_site_filter` is\nspecified.",
+              "location": "query",
+              "type": "string"
+            },
+            "reviewPublisherSiteFilter": {
+              "description": "The review publisher site to filter results by, e.g. nytimes.com.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1alpha1/claims:search",
+          "response": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse"
+          }
+        }
+      }
+    },
+    "pages": {
+      "methods": {
+        "create": {
+          "description": "Create `ClaimReview` markup on a page.",
+          "flatPath": "v1alpha1/pages",
+          "httpMethod": "POST",
+          "id": "factchecktools.pages.create",
+          "parameterOrder": [],
+          "parameters": {},
+          "path": "v1alpha1/pages",
+          "request": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+          },
+          "response": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "delete": {
+          "description": "Delete all `ClaimReview` markup on a page.",
+          "flatPath": "v1alpha1/pages/{pagesId}",
+          "httpMethod": "DELETE",
+          "id": "factchecktools.pages.delete",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name of the resource to delete, in the form of `pages/{page_id}`.",
+              "location": "path",
+              "pattern": "^pages/[^/]+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1alpha1/{+name}",
+          "response": {
+            "$ref": "GoogleProtobufEmpty"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "get": {
+          "description": "Get all `ClaimReview` markup on a page.",
+          "flatPath": "v1alpha1/pages/{pagesId}",
+          "httpMethod": "GET",
+          "id": "factchecktools.pages.get",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name of the resource to get, in the form of `pages/{page_id}`.",
+              "location": "path",
+              "pattern": "^pages/[^/]+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1alpha1/{+name}",
+          "response": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "list": {
+          "description": "List the `ClaimReview` markup pages for a specific URL or for an\norganization.",
+          "flatPath": "v1alpha1/pages",
+          "httpMethod": "GET",
+          "id": "factchecktools.pages.list",
+          "parameterOrder": [],
+          "parameters": {
+            "offset": {
+              "description": "An integer that specifies the current offset (that is, starting result\nlocation) in search results. This field is only considered if `page_token`\nis unset, and if the request is not for a specific URL. For example, 0\nmeans to return results starting from the first matching result, and 10\nmeans to return from the 11th result.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "organization": {
+              "description": "The organization for which we want to fetch markups for. For instance,\n\"site.com\". Cannot be specified along with an URL.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageSize": {
+              "description": "The pagination size. We will return up to that many results. Defaults to\n10 if not set. Has no effect if a URL is requested.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "The pagination token. You may provide the `next_page_token` returned from a\nprevious List request, if any, in order to get the next page. All other\nfields must have the same values as in the previous request.",
+              "location": "query",
+              "type": "string"
+            },
+            "url": {
+              "description": "The URL from which to get `ClaimReview` markup. There will be at most one\nresult. If markup is associated with a more canonical version of the URL\nprovided, we will return that URL instead. Cannot be specified along with\nan organization.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1alpha1/pages",
+          "response": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "update": {
+          "description": "Update for all `ClaimReview` markup on a page\n\nNote that this is a full update. To retain the existing `ClaimReview`\nmarkup on a page, first perform a Get operation, then modify the returned\nmarkup, and finally call Update with the entire `ClaimReview` markup as the\nbody.",
+          "flatPath": "v1alpha1/pages/{pagesId}",
+          "httpMethod": "PUT",
+          "id": "factchecktools.pages.update",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name of this `ClaimReview` markup page resource, in the form of\n`pages/{page_id}`. Except for update requests, this field is output-only\nand should not be set by the user.",
+              "location": "path",
+              "pattern": "^pages/[^/]+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1alpha1/{+name}",
+          "request": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+          },
+          "response": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      }
+    }
+  },
+  "revision": "20190325",
+  "rootUrl": "https://factchecktools.googleapis.com/",
+  "schemas": {
+    "GoogleFactcheckingFactchecktoolsV1alpha1Claim": {
+      "description": "Information about the claim.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1Claim",
+      "properties": {
+        "claimDate": {
+          "description": "The date that the claim was made.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "claimReview": {
+          "description": "One or more reviews of this claim (namely, a fact-checking article).",
+          "items": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReview"
+          },
+          "type": "array"
+        },
+        "claimant": {
+          "description": "A person or organization stating the claim. For instance, \"John Doe\".",
+          "type": "string"
+        },
+        "text": {
+          "description": "The claim text. For instance, \"Crime has doubled in the last 2 years.\"",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1ClaimAuthor": {
+      "description": "Information about the claim author.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimAuthor",
+      "properties": {
+        "imageUrl": {
+          "description": "Corresponds to `ClaimReview.itemReviewed.author.image`.",
+          "type": "string"
+        },
+        "jobTitle": {
+          "description": "Corresponds to `ClaimReview.itemReviewed.author.jobTitle`.",
+          "type": "string"
+        },
+        "name": {
+          "description": "A person or organization stating the claim. For instance, \"John Doe\".\u003cbr\u003e\nCorresponds to `ClaimReview.itemReviewed.author.name`.",
+          "type": "string"
+        },
+        "sameAs": {
+          "description": "Corresponds to `ClaimReview.itemReviewed.author.sameAs`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1ClaimRating": {
+      "description": "Information about the claim rating.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimRating",
+      "properties": {
+        "bestRating": {
+          "description": "For numeric ratings, the best value possible in the scale from worst to\nbest.\u003cbr\u003e\nCorresponds to `ClaimReview.reviewRating.bestRating`.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "imageUrl": {
+          "description": "Corresponds to `ClaimReview.reviewRating.image`.",
+          "type": "string"
+        },
+        "ratingValue": {
+          "description": "A numeric rating of this claim, in the range worstRating — bestRating\ninclusive.\u003cbr\u003e\nCorresponds to `ClaimReview.reviewRating.ratingValue`.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "textualRating": {
+          "description": "The truthfulness rating as a human-readible short word or phrase.\u003cbr\u003e\nCorresponds to `ClaimReview.reviewRating.alternateName`.",
+          "type": "string"
+        },
+        "worstRating": {
+          "description": "For numeric ratings, the worst value possible in the scale from worst to\nbest.\u003cbr\u003e\nCorresponds to `ClaimReview.reviewRating.worstRating`.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReview": {
+      "description": "Information about a claim review.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReview",
+      "properties": {
+        "languageCode": {
+          "description": "The language this review was written in. For instance, \"en\" or \"de\".",
+          "type": "string"
+        },
+        "publisher": {
+          "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1Publisher",
+          "description": "The publisher of this claim review."
+        },
+        "reviewDate": {
+          "description": "The date the claim was reviewed.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "textualRating": {
+          "description": "Textual rating. For instance, \"Mostly false\".",
+          "type": "string"
+        },
+        "title": {
+          "description": "The title of this claim review, if it can be determined.",
+          "type": "string"
+        },
+        "url": {
+          "description": "The URL of this claim review.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewAuthor": {
+      "description": "Information about the claim review author.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewAuthor",
+      "properties": {
+        "imageUrl": {
+          "description": "Corresponds to `ClaimReview.author.image`.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Name of the organization that is publishing the fact check.\u003cbr\u003e\nCorresponds to `ClaimReview.author.name`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkup": {
+      "description": "Fields for an individual `ClaimReview` element.\nExcept for sub-messages that group fields together, each of these fields\ncorrespond those in https://schema.org/ClaimReview. We list the precise\nmapping for each field.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkup",
+      "properties": {
+        "claimAppearances": {
+          "description": "A list of links to works in which this claim appears, aside from the one\nspecified in `claim_first_appearance`.\u003cbr\u003e\nCorresponds to `ClaimReview.itemReviewed[@type=Claim].appearance.url`.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "claimAuthor": {
+          "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimAuthor",
+          "description": "Info about the author of this claim."
+        },
+        "claimDate": {
+          "description": "The date when the claim was made or entered public discourse.\u003cbr\u003e\nCorresponds to `ClaimReview.itemReviewed.datePublished`.",
+          "type": "string"
+        },
+        "claimFirstAppearance": {
+          "description": "A link to a work in which this claim first appears.\u003cbr\u003e\nCorresponds to `ClaimReview.itemReviewed[@type=Claim].firstAppearance.url`.",
+          "type": "string"
+        },
+        "claimLocation": {
+          "description": "The location where this claim was made.\u003cbr\u003e\nCorresponds to `ClaimReview.itemReviewed.name`.",
+          "type": "string"
+        },
+        "claimReviewed": {
+          "description": "A short summary of the claim being evaluated.\u003cbr\u003e\nCorresponds to `ClaimReview.claimReviewed`.",
+          "type": "string"
+        },
+        "rating": {
+          "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimRating",
+          "description": "Info about the rating of this claim review."
+        },
+        "url": {
+          "description": "This field is optional, and will default to the page URL. We provide this\nfield to allow you the override the default value, but the only permitted\noverride is the page URL plus an optional anchor link (\"page jump\").\u003cbr\u003e\nCorresponds to `ClaimReview.url`",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage": {
+      "description": "Holds one or more instances of `ClaimReview` markup for a webpage.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage",
+      "properties": {
+        "claimReviewAuthor": {
+          "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewAuthor",
+          "description": "Info about the author of this claim review.\nSimilar to the above, semantically these are page-level fields, and each\n`ClaimReview` on this page will contain the same values."
+        },
+        "claimReviewMarkups": {
+          "description": "A list of individual claim reviews for this page.\nEach item in the list corresponds to one `ClaimReview` element.",
+          "items": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkup"
+          },
+          "type": "array"
+        },
+        "name": {
+          "description": "The name of this `ClaimReview` markup page resource, in the form of\n`pages/{page_id}`. Except for update requests, this field is output-only\nand should not be set by the user.",
+          "type": "string"
+        },
+        "pageUrl": {
+          "description": "The URL of the page associated with this `ClaimReview` markup.\nWhile every individual `ClaimReview` has its own URL field, semantically\nthis is a page-level field, and each `ClaimReview` on this page will use\nthis value unless individually overridden.\u003cbr\u003e\nCorresponds to `ClaimReview.url`",
+          "type": "string"
+        },
+        "publishDate": {
+          "description": "The date when the fact check was published.\nSimilar to the URL, semantically this is a page-level field, and each\n`ClaimReview` on this page will contain the same value.\u003cbr\u003e\nCorresponds to `ClaimReview.datePublished`",
+          "type": "string"
+        },
+        "versionId": {
+          "description": "The version ID for this markup. Except for update requests, this field is\noutput-only and should not be set by the user.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse": {
+      "description": "Response from searching fact-checked claims.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse",
+      "properties": {
+        "claims": {
+          "description": "The list of claims and all of their associated information.",
+          "items": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1Claim"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "The next pagination token in the Search response. It should be used as the\n`page_token` for the following request. An empty value means no more\nresults.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse": {
+      "description": "Response from listing `ClaimReview` markup.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse",
+      "properties": {
+        "claimReviewMarkupPages": {
+          "description": "The result list of pages of `ClaimReview` markup.",
+          "items": {
+            "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "The next pagination token in the Search response. It should be used as the\n`page_token` for the following request. An empty value means no more\nresults.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleFactcheckingFactchecktoolsV1alpha1Publisher": {
+      "description": "Information about the publisher.",
+      "id": "GoogleFactcheckingFactchecktoolsV1alpha1Publisher",
+      "properties": {
+        "name": {
+          "description": "The name of this publisher. For instance, \"Awesome Fact Checks\".",
+          "type": "string"
+        },
+        "site": {
+          "description": "Host-level site name, without the protocol or \"www\" prefix. For instance,\n\"awesomefactchecks.com\". This value of this field is based purely on the\nclaim review URL.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleProtobufEmpty": {
+      "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+      "id": "GoogleProtobufEmpty",
+      "properties": {},
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Fact Check Tools API",
+  "version": "v1alpha1",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/factchecktools/v1alpha1/factchecktools-gen.go b/factchecktools/v1alpha1/factchecktools-gen.go
new file mode 100644
index 0000000..812fb77
--- /dev/null
+++ b/factchecktools/v1alpha1/factchecktools-gen.go
@@ -0,0 +1,1690 @@
+// Copyright 2019 Google LLC.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package factchecktools provides access to the Fact Check Tools API.
+//
+// For product documentation, see: https://developers.google.com/fact-check/tools/api/
+//
+// Creating a client
+//
+// Usage example:
+//
+//   import "google.golang.org/api/factchecktools/v1alpha1"
+//   ...
+//   ctx := context.Background()
+//   factchecktoolsService, err := factchecktools.NewService(ctx)
+//
+// In this example, Google Application Default Credentials are used for authentication.
+//
+// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
+//
+// Other authentication options
+//
+// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
+//
+//   factchecktoolsService, err := factchecktools.NewService(ctx, option.WithAPIKey("AIza..."))
+//
+// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
+//
+//   config := &oauth2.Config{...}
+//   // ...
+//   token, err := config.Exchange(ctx, ...)
+//   factchecktoolsService, err := factchecktools.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
+//
+// See https://godoc.org/google.golang.org/api/option/ for details on options.
+package factchecktools // import "google.golang.org/api/factchecktools/v1alpha1"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	option "google.golang.org/api/option"
+	htransport "google.golang.org/api/transport/http"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "factchecktools:v1alpha1"
+const apiName = "factchecktools"
+const apiVersion = "v1alpha1"
+const basePath = "https://factchecktools.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+)
+
+// NewService creates a new Service.
+func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
+	scopesOption := option.WithScopes(
+		"https://www.googleapis.com/auth/cloud-platform",
+	)
+	// NOTE: prepend, so we don't override user-specified scopes.
+	opts = append([]option.ClientOption{scopesOption}, opts...)
+	client, endpoint, err := htransport.NewClient(ctx, opts...)
+	if err != nil {
+		return nil, err
+	}
+	s, err := New(client)
+	if err != nil {
+		return nil, err
+	}
+	if endpoint != "" {
+		s.BasePath = endpoint
+	}
+	return s, nil
+}
+
+// New creates a new Service. It uses the provided http.Client for requests.
+//
+// Deprecated: please use NewService instead.
+// To provide a custom HTTP client, use option.WithHTTPClient.
+// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Claims = NewClaimsService(s)
+	s.Pages = NewPagesService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Claims *ClaimsService
+
+	Pages *PagesService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewClaimsService(s *Service) *ClaimsService {
+	rs := &ClaimsService{s: s}
+	return rs
+}
+
+type ClaimsService struct {
+	s *Service
+}
+
+func NewPagesService(s *Service) *PagesService {
+	rs := &PagesService{s: s}
+	return rs
+}
+
+type PagesService struct {
+	s *Service
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1Claim: Information about the
+// claim.
+type GoogleFactcheckingFactchecktoolsV1alpha1Claim struct {
+	// ClaimDate: The date that the claim was made.
+	ClaimDate string `json:"claimDate,omitempty"`
+
+	// ClaimReview: One or more reviews of this claim (namely, a
+	// fact-checking article).
+	ClaimReview []*GoogleFactcheckingFactchecktoolsV1alpha1ClaimReview `json:"claimReview,omitempty"`
+
+	// Claimant: A person or organization stating the claim. For instance,
+	// "John Doe".
+	Claimant string `json:"claimant,omitempty"`
+
+	// Text: The claim text. For instance, "Crime has doubled in the last 2
+	// years."
+	Text string `json:"text,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ClaimDate") 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. "ClaimDate") 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 *GoogleFactcheckingFactchecktoolsV1alpha1Claim) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1Claim
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1ClaimAuthor: Information
+// about the claim author.
+type GoogleFactcheckingFactchecktoolsV1alpha1ClaimAuthor struct {
+	// ImageUrl: Corresponds to `ClaimReview.itemReviewed.author.image`.
+	ImageUrl string `json:"imageUrl,omitempty"`
+
+	// JobTitle: Corresponds to `ClaimReview.itemReviewed.author.jobTitle`.
+	JobTitle string `json:"jobTitle,omitempty"`
+
+	// Name: A person or organization stating the claim. For instance, "John
+	// Doe".<br>
+	// Corresponds to `ClaimReview.itemReviewed.author.name`.
+	Name string `json:"name,omitempty"`
+
+	// SameAs: Corresponds to `ClaimReview.itemReviewed.author.sameAs`.
+	SameAs string `json:"sameAs,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ImageUrl") 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. "ImageUrl") 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 *GoogleFactcheckingFactchecktoolsV1alpha1ClaimAuthor) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1ClaimAuthor
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1ClaimRating: Information
+// about the claim rating.
+type GoogleFactcheckingFactchecktoolsV1alpha1ClaimRating struct {
+	// BestRating: For numeric ratings, the best value possible in the scale
+	// from worst to
+	// best.<br>
+	// Corresponds to `ClaimReview.reviewRating.bestRating`.
+	BestRating int64 `json:"bestRating,omitempty"`
+
+	// ImageUrl: Corresponds to `ClaimReview.reviewRating.image`.
+	ImageUrl string `json:"imageUrl,omitempty"`
+
+	// RatingValue: A numeric rating of this claim, in the range worstRating
+	// — bestRating
+	// inclusive.<br>
+	// Corresponds to `ClaimReview.reviewRating.ratingValue`.
+	RatingValue int64 `json:"ratingValue,omitempty"`
+
+	// TextualRating: The truthfulness rating as a human-readible short word
+	// or phrase.<br>
+	// Corresponds to `ClaimReview.reviewRating.alternateName`.
+	TextualRating string `json:"textualRating,omitempty"`
+
+	// WorstRating: For numeric ratings, the worst value possible in the
+	// scale from worst to
+	// best.<br>
+	// Corresponds to `ClaimReview.reviewRating.worstRating`.
+	WorstRating int64 `json:"worstRating,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BestRating") 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. "BestRating") 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 *GoogleFactcheckingFactchecktoolsV1alpha1ClaimRating) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1ClaimRating
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1ClaimReview: Information
+// about a claim review.
+type GoogleFactcheckingFactchecktoolsV1alpha1ClaimReview struct {
+	// LanguageCode: The language this review was written in. For instance,
+	// "en" or "de".
+	LanguageCode string `json:"languageCode,omitempty"`
+
+	// Publisher: The publisher of this claim review.
+	Publisher *GoogleFactcheckingFactchecktoolsV1alpha1Publisher `json:"publisher,omitempty"`
+
+	// ReviewDate: The date the claim was reviewed.
+	ReviewDate string `json:"reviewDate,omitempty"`
+
+	// TextualRating: Textual rating. For instance, "Mostly false".
+	TextualRating string `json:"textualRating,omitempty"`
+
+	// Title: The title of this claim review, if it can be determined.
+	Title string `json:"title,omitempty"`
+
+	// Url: The URL of this claim review.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "LanguageCode") 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. "LanguageCode") 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 *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReview) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1ClaimReview
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewAuthor:
+// Information about the claim review author.
+type GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewAuthor struct {
+	// ImageUrl: Corresponds to `ClaimReview.author.image`.
+	ImageUrl string `json:"imageUrl,omitempty"`
+
+	// Name: Name of the organization that is publishing the fact
+	// check.<br>
+	// Corresponds to `ClaimReview.author.name`.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ImageUrl") 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. "ImageUrl") 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 *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewAuthor) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewAuthor
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkup: Fields for
+// an individual `ClaimReview` element.
+// Except for sub-messages that group fields together, each of these
+// fields
+// correspond those in https://schema.org/ClaimReview. We list the
+// precise
+// mapping for each field.
+type GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkup struct {
+	// ClaimAppearances: A list of links to works in which this claim
+	// appears, aside from the one
+	// specified in `claim_first_appearance`.<br>
+	// Corresponds to
+	// `ClaimReview.itemReviewed[@type=Claim].appearance.url`.
+	ClaimAppearances []string `json:"claimAppearances,omitempty"`
+
+	// ClaimAuthor: Info about the author of this claim.
+	ClaimAuthor *GoogleFactcheckingFactchecktoolsV1alpha1ClaimAuthor `json:"claimAuthor,omitempty"`
+
+	// ClaimDate: The date when the claim was made or entered public
+	// discourse.<br>
+	// Corresponds to `ClaimReview.itemReviewed.datePublished`.
+	ClaimDate string `json:"claimDate,omitempty"`
+
+	// ClaimFirstAppearance: A link to a work in which this claim first
+	// appears.<br>
+	// Corresponds to
+	// `ClaimReview.itemReviewed[@type=Claim].firstAppearance.url`.
+	ClaimFirstAppearance string `json:"claimFirstAppearance,omitempty"`
+
+	// ClaimLocation: The location where this claim was
+	// made.<br>
+	// Corresponds to `ClaimReview.itemReviewed.name`.
+	ClaimLocation string `json:"claimLocation,omitempty"`
+
+	// ClaimReviewed: A short summary of the claim being
+	// evaluated.<br>
+	// Corresponds to `ClaimReview.claimReviewed`.
+	ClaimReviewed string `json:"claimReviewed,omitempty"`
+
+	// Rating: Info about the rating of this claim review.
+	Rating *GoogleFactcheckingFactchecktoolsV1alpha1ClaimRating `json:"rating,omitempty"`
+
+	// Url: This field is optional, and will default to the page URL. We
+	// provide this
+	// field to allow you the override the default value, but the only
+	// permitted
+	// override is the page URL plus an optional anchor link ("page
+	// jump").<br>
+	// Corresponds to `ClaimReview.url`
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ClaimAppearances") 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. "ClaimAppearances") 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 *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkup) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkup
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage: Holds
+// one or more instances of `ClaimReview` markup for a webpage.
+type GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage struct {
+	// ClaimReviewAuthor: Info about the author of this claim
+	// review.
+	// Similar to the above, semantically these are page-level fields, and
+	// each
+	// `ClaimReview` on this page will contain the same values.
+	ClaimReviewAuthor *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewAuthor `json:"claimReviewAuthor,omitempty"`
+
+	// ClaimReviewMarkups: A list of individual claim reviews for this
+	// page.
+	// Each item in the list corresponds to one `ClaimReview` element.
+	ClaimReviewMarkups []*GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkup `json:"claimReviewMarkups,omitempty"`
+
+	// Name: The name of this `ClaimReview` markup page resource, in the
+	// form of
+	// `pages/{page_id}`. Except for update requests, this field is
+	// output-only
+	// and should not be set by the user.
+	Name string `json:"name,omitempty"`
+
+	// PageUrl: The URL of the page associated with this `ClaimReview`
+	// markup.
+	// While every individual `ClaimReview` has its own URL field,
+	// semantically
+	// this is a page-level field, and each `ClaimReview` on this page will
+	// use
+	// this value unless individually overridden.<br>
+	// Corresponds to `ClaimReview.url`
+	PageUrl string `json:"pageUrl,omitempty"`
+
+	// PublishDate: The date when the fact check was published.
+	// Similar to the URL, semantically this is a page-level field, and
+	// each
+	// `ClaimReview` on this page will contain the same
+	// value.<br>
+	// Corresponds to `ClaimReview.datePublished`
+	PublishDate string `json:"publishDate,omitempty"`
+
+	// VersionId: The version ID for this markup. Except for update
+	// requests, this field is
+	// output-only and should not be set by the user.
+	VersionId string `json:"versionId,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ClaimReviewAuthor")
+	// 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. "ClaimReviewAuthor") 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 *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse
+// : Response from searching fact-checked claims.
+type GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse struct {
+	// Claims: The list of claims and all of their associated information.
+	Claims []*GoogleFactcheckingFactchecktoolsV1alpha1Claim `json:"claims,omitempty"`
+
+	// NextPageToken: The next pagination token in the Search response. It
+	// should be used as the
+	// `page_token` for the following request. An empty value means no
+	// more
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Claims") 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. "Claims") 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 *GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResp
+// onse: Response from listing `ClaimReview` markup.
+type GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse struct {
+	// ClaimReviewMarkupPages: The result list of pages of `ClaimReview`
+	// markup.
+	ClaimReviewMarkupPages []*GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage `json:"claimReviewMarkupPages,omitempty"`
+
+	// NextPageToken: The next pagination token in the Search response. It
+	// should be used as the
+	// `page_token` for the following request. An empty value means no
+	// more
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ClaimReviewMarkupPages") 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. "ClaimReviewMarkupPages")
+	// 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 *GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleFactcheckingFactchecktoolsV1alpha1Publisher: Information about
+// the publisher.
+type GoogleFactcheckingFactchecktoolsV1alpha1Publisher struct {
+	// Name: The name of this publisher. For instance, "Awesome Fact
+	// Checks".
+	Name string `json:"name,omitempty"`
+
+	// Site: Host-level site name, without the protocol or "www" prefix. For
+	// instance,
+	// "awesomefactchecks.com". This value of this field is based purely on
+	// the
+	// claim review URL.
+	Site string `json:"site,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") 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. "Name") 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 *GoogleFactcheckingFactchecktoolsV1alpha1Publisher) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleFactcheckingFactchecktoolsV1alpha1Publisher
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleProtobufEmpty: A generic empty message that you can re-use to
+// avoid defining duplicated
+// empty messages in your APIs. A typical example is to use it as the
+// request
+// or the response type of an API method. For instance:
+//
+//     service Foo {
+//       rpc Bar(google.protobuf.Empty) returns
+// (google.protobuf.Empty);
+//     }
+//
+// The JSON representation for `Empty` is empty JSON object `{}`.
+type GoogleProtobufEmpty struct {
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+}
+
+// method id "factchecktools.claims.search":
+
+type ClaimsSearchCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Search: Search through fact-checked claims.
+func (r *ClaimsService) Search() *ClaimsSearchCall {
+	c := &ClaimsSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// LanguageCode sets the optional parameter "languageCode": The BCP-47
+// language code, such as "en-US" or "sr-Latn". Can be used to
+// restrict results by language, though we do not currently consider
+// the
+// region.
+func (c *ClaimsSearchCall) LanguageCode(languageCode string) *ClaimsSearchCall {
+	c.urlParams_.Set("languageCode", languageCode)
+	return c
+}
+
+// MaxAgeDays sets the optional parameter "maxAgeDays": The maximum age
+// of the returned search results, in days.
+// Age is determined by either claim date or review date, whichever is
+// newer.
+func (c *ClaimsSearchCall) MaxAgeDays(maxAgeDays int64) *ClaimsSearchCall {
+	c.urlParams_.Set("maxAgeDays", fmt.Sprint(maxAgeDays))
+	return c
+}
+
+// Offset sets the optional parameter "offset": An integer that
+// specifies the current offset (that is, starting result
+// location) in search results. This field is only considered if
+// `page_token`
+// is unset. For example, 0 means to return results starting from the
+// first
+// matching result, and 10 means to return from the 11th result.
+func (c *ClaimsSearchCall) Offset(offset int64) *ClaimsSearchCall {
+	c.urlParams_.Set("offset", fmt.Sprint(offset))
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The pagination size.
+// We will return up to that many results. Defaults to
+// 10 if not set.
+func (c *ClaimsSearchCall) PageSize(pageSize int64) *ClaimsSearchCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The pagination
+// token. You may provide the `next_page_token` returned from a
+// previous List request, if any, in order to get the next page. All
+// other
+// fields must have the same values as in the previous request.
+func (c *ClaimsSearchCall) PageToken(pageToken string) *ClaimsSearchCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Query sets the optional parameter "query": Textual query string.
+// Required unless `review_publisher_site_filter` is
+// specified.
+func (c *ClaimsSearchCall) Query(query string) *ClaimsSearchCall {
+	c.urlParams_.Set("query", query)
+	return c
+}
+
+// ReviewPublisherSiteFilter sets the optional parameter
+// "reviewPublisherSiteFilter": The review publisher site to filter
+// results by, e.g. nytimes.com.
+func (c *ClaimsSearchCall) ReviewPublisherSiteFilter(reviewPublisherSiteFilter string) *ClaimsSearchCall {
+	c.urlParams_.Set("reviewPublisherSiteFilter", reviewPublisherSiteFilter)
+	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 *ClaimsSearchCall) Fields(s ...googleapi.Field) *ClaimsSearchCall {
+	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 *ClaimsSearchCall) IfNoneMatch(entityTag string) *ClaimsSearchCall {
+	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 *ClaimsSearchCall) Context(ctx context.Context) *ClaimsSearchCall {
+	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 *ClaimsSearchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ClaimsSearchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha1/claims:search")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "factchecktools.claims.search" call.
+// Exactly one of
+// *GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchRespons
+// e or error will be non-nil. Any non-2xx status code is an error.
+// Response headers are in either
+// *GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchRespons
+// e.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 *ClaimsSearchCall) Do(opts ...googleapi.CallOption) (*GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse, 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 := &GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse{
+		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": "Search through fact-checked claims.",
+	//   "flatPath": "v1alpha1/claims:search",
+	//   "httpMethod": "GET",
+	//   "id": "factchecktools.claims.search",
+	//   "parameterOrder": [],
+	//   "parameters": {
+	//     "languageCode": {
+	//       "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". Can be used to\nrestrict results by language, though we do not currently consider the\nregion.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxAgeDays": {
+	//       "description": "The maximum age of the returned search results, in days.\nAge is determined by either claim date or review date, whichever is newer.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "offset": {
+	//       "description": "An integer that specifies the current offset (that is, starting result\nlocation) in search results. This field is only considered if `page_token`\nis unset. For example, 0 means to return results starting from the first\nmatching result, and 10 means to return from the 11th result.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageSize": {
+	//       "description": "The pagination size. We will return up to that many results. Defaults to\n10 if not set.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The pagination token. You may provide the `next_page_token` returned from a\nprevious List request, if any, in order to get the next page. All other\nfields must have the same values as in the previous request.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "query": {
+	//       "description": "Textual query string. Required unless `review_publisher_site_filter` is\nspecified.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "reviewPublisherSiteFilter": {
+	//       "description": "The review publisher site to filter results by, e.g. nytimes.com.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/claims:search",
+	//   "response": {
+	//     "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse"
+	//   }
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ClaimsSearchCall) Pages(ctx context.Context, f func(*GoogleFactcheckingFactchecktoolsV1alpha1FactCheckedClaimSearchResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "factchecktools.pages.create":
+
+type PagesCreateCall struct {
+	s                                                             *Service
+	googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage
+	urlParams_                                                    gensupport.URLParams
+	ctx_                                                          context.Context
+	header_                                                       http.Header
+}
+
+// Create: Create `ClaimReview` markup on a page.
+func (r *PagesService) Create(googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage) *PagesCreateCall {
+	c := &PagesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage = googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage
+	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 *PagesCreateCall) Fields(s ...googleapi.Field) *PagesCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PagesCreateCall) Context(ctx context.Context) *PagesCreateCall {
+	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 *PagesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *PagesCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha1/pages")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "factchecktools.pages.create" call.
+// Exactly one of
+// *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage or
+// error will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage.ServerR
+// esponse.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 *PagesCreateCall) Do(opts ...googleapi.CallOption) (*GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage, 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 := &GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage{
+		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": "Create `ClaimReview` markup on a page.",
+	//   "flatPath": "v1alpha1/pages",
+	//   "httpMethod": "POST",
+	//   "id": "factchecktools.pages.create",
+	//   "parameterOrder": [],
+	//   "parameters": {},
+	//   "path": "v1alpha1/pages",
+	//   "request": {
+	//     "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "factchecktools.pages.delete":
+
+type PagesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Delete all `ClaimReview` markup on a page.
+func (r *PagesService) Delete(name string) *PagesDeleteCall {
+	c := &PagesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PagesDeleteCall) Fields(s ...googleapi.Field) *PagesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PagesDeleteCall) Context(ctx context.Context) *PagesDeleteCall {
+	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 *PagesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *PagesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "factchecktools.pages.delete" call.
+// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *GoogleProtobufEmpty.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 *PagesDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, 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 := &GoogleProtobufEmpty{
+		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": "Delete all `ClaimReview` markup on a page.",
+	//   "flatPath": "v1alpha1/pages/{pagesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "factchecktools.pages.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the resource to delete, in the form of `pages/{page_id}`.",
+	//       "location": "path",
+	//       "pattern": "^pages/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleProtobufEmpty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "factchecktools.pages.get":
+
+type PagesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Get all `ClaimReview` markup on a page.
+func (r *PagesService) Get(name string) *PagesGetCall {
+	c := &PagesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *PagesGetCall) Fields(s ...googleapi.Field) *PagesGetCall {
+	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 *PagesGetCall) IfNoneMatch(entityTag string) *PagesGetCall {
+	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 *PagesGetCall) Context(ctx context.Context) *PagesGetCall {
+	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 *PagesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *PagesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "factchecktools.pages.get" call.
+// Exactly one of
+// *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage or
+// error will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage.ServerR
+// esponse.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 *PagesGetCall) Do(opts ...googleapi.CallOption) (*GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage, 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 := &GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage{
+		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": "Get all `ClaimReview` markup on a page.",
+	//   "flatPath": "v1alpha1/pages/{pagesId}",
+	//   "httpMethod": "GET",
+	//   "id": "factchecktools.pages.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the resource to get, in the form of `pages/{page_id}`.",
+	//       "location": "path",
+	//       "pattern": "^pages/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "factchecktools.pages.list":
+
+type PagesListCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List the `ClaimReview` markup pages for a specific URL or for
+// an
+// organization.
+func (r *PagesService) List() *PagesListCall {
+	c := &PagesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// Offset sets the optional parameter "offset": An integer that
+// specifies the current offset (that is, starting result
+// location) in search results. This field is only considered if
+// `page_token`
+// is unset, and if the request is not for a specific URL. For example,
+// 0
+// means to return results starting from the first matching result, and
+// 10
+// means to return from the 11th result.
+func (c *PagesListCall) Offset(offset int64) *PagesListCall {
+	c.urlParams_.Set("offset", fmt.Sprint(offset))
+	return c
+}
+
+// Organization sets the optional parameter "organization": The
+// organization for which we want to fetch markups for. For
+// instance,
+// "site.com". Cannot be specified along with an URL.
+func (c *PagesListCall) Organization(organization string) *PagesListCall {
+	c.urlParams_.Set("organization", organization)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The pagination size.
+// We will return up to that many results. Defaults to
+// 10 if not set. Has no effect if a URL is requested.
+func (c *PagesListCall) PageSize(pageSize int64) *PagesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The pagination
+// token. You may provide the `next_page_token` returned from a
+// previous List request, if any, in order to get the next page. All
+// other
+// fields must have the same values as in the previous request.
+func (c *PagesListCall) PageToken(pageToken string) *PagesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Url sets the optional parameter "url": The URL from which to get
+// `ClaimReview` markup. There will be at most one
+// result. If markup is associated with a more canonical version of the
+// URL
+// provided, we will return that URL instead. Cannot be specified along
+// with
+// an organization.
+func (c *PagesListCall) Url(url string) *PagesListCall {
+	c.urlParams_.Set("url", url)
+	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 *PagesListCall) Fields(s ...googleapi.Field) *PagesListCall {
+	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 *PagesListCall) IfNoneMatch(entityTag string) *PagesListCall {
+	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 *PagesListCall) Context(ctx context.Context) *PagesListCall {
+	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 *PagesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *PagesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha1/pages")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "factchecktools.pages.list" call.
+// Exactly one of
+// *GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesRes
+// ponse or error will be non-nil. Any non-2xx status code is an error.
+// Response headers are in either
+// *GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesRes
+// ponse.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 *PagesListCall) Do(opts ...googleapi.CallOption) (*GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse, 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 := &GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse{
+		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": "List the `ClaimReview` markup pages for a specific URL or for an\norganization.",
+	//   "flatPath": "v1alpha1/pages",
+	//   "httpMethod": "GET",
+	//   "id": "factchecktools.pages.list",
+	//   "parameterOrder": [],
+	//   "parameters": {
+	//     "offset": {
+	//       "description": "An integer that specifies the current offset (that is, starting result\nlocation) in search results. This field is only considered if `page_token`\nis unset, and if the request is not for a specific URL. For example, 0\nmeans to return results starting from the first matching result, and 10\nmeans to return from the 11th result.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "organization": {
+	//       "description": "The organization for which we want to fetch markups for. For instance,\n\"site.com\". Cannot be specified along with an URL.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The pagination size. We will return up to that many results. Defaults to\n10 if not set. Has no effect if a URL is requested.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The pagination token. You may provide the `next_page_token` returned from a\nprevious List request, if any, in order to get the next page. All other\nfields must have the same values as in the previous request.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "url": {
+	//       "description": "The URL from which to get `ClaimReview` markup. There will be at most one\nresult. If markup is associated with a more canonical version of the URL\nprovided, we will return that URL instead. Cannot be specified along with\nan organization.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/pages",
+	//   "response": {
+	//     "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *PagesListCall) Pages(ctx context.Context, f func(*GoogleFactcheckingFactchecktoolsV1alpha1ListClaimReviewMarkupPagesResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "factchecktools.pages.update":
+
+type PagesUpdateCall struct {
+	s                                                             *Service
+	name                                                          string
+	googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage
+	urlParams_                                                    gensupport.URLParams
+	ctx_                                                          context.Context
+	header_                                                       http.Header
+}
+
+// Update: Update for all `ClaimReview` markup on a page
+//
+// Note that this is a full update. To retain the existing
+// `ClaimReview`
+// markup on a page, first perform a Get operation, then modify the
+// returned
+// markup, and finally call Update with the entire `ClaimReview` markup
+// as the
+// body.
+func (r *PagesService) Update(name string, googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage) *PagesUpdateCall {
+	c := &PagesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage = googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage
+	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 *PagesUpdateCall) Fields(s ...googleapi.Field) *PagesUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *PagesUpdateCall) Context(ctx context.Context) *PagesUpdateCall {
+	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 *PagesUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *PagesUpdateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlefactcheckingfactchecktoolsv1alpha1claimreviewmarkuppage)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PUT", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "factchecktools.pages.update" call.
+// Exactly one of
+// *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage or
+// error will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage.ServerR
+// esponse.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 *PagesUpdateCall) Do(opts ...googleapi.CallOption) (*GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage, 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 := &GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage{
+		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": "Update for all `ClaimReview` markup on a page\n\nNote that this is a full update. To retain the existing `ClaimReview`\nmarkup on a page, first perform a Get operation, then modify the returned\nmarkup, and finally call Update with the entire `ClaimReview` markup as the\nbody.",
+	//   "flatPath": "v1alpha1/pages/{pagesId}",
+	//   "httpMethod": "PUT",
+	//   "id": "factchecktools.pages.update",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of this `ClaimReview` markup page resource, in the form of\n`pages/{page_id}`. Except for update requests, this field is output-only\nand should not be set by the user.",
+	//       "location": "path",
+	//       "pattern": "^pages/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "request": {
+	//     "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleFactcheckingFactchecktoolsV1alpha1ClaimReviewMarkupPage"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/genomics/v1/genomics-api.json b/genomics/v1/genomics-api.json
index 494e503..6656a98 100644
--- a/genomics/v1/genomics-api.json
+++ b/genomics/v1/genomics-api.json
@@ -208,7 +208,7 @@
       }
     }
   },
-  "revision": "20190312",
+  "revision": "20190326",
   "rootUrl": "https://genomics.googleapis.com/",
   "schemas": {
     "CancelOperationRequest": {
@@ -401,34 +401,6 @@
       },
       "type": "object"
     },
-    "ImportReadGroupSetsResponse": {
-      "description": "The read group set import response.",
-      "id": "ImportReadGroupSetsResponse",
-      "properties": {
-        "readGroupSetIds": {
-          "description": "IDs of the read group sets that were created.",
-          "items": {
-            "type": "string"
-          },
-          "type": "array"
-        }
-      },
-      "type": "object"
-    },
-    "ImportVariantsResponse": {
-      "description": "The variant data import response.",
-      "id": "ImportVariantsResponse",
-      "properties": {
-        "callSetIds": {
-          "description": "IDs of the call sets created during the import.",
-          "items": {
-            "type": "string"
-          },
-          "type": "array"
-        }
-      },
-      "type": "object"
-    },
     "ListOperationsResponse": {
       "description": "The response message for Operations.ListOperations.",
       "id": "ListOperationsResponse",
@@ -476,7 +448,7 @@
             "description": "Properties of the object. Contains field @type with type URL.",
             "type": "any"
           },
-          "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an Empty response is returned.",
+          "description": "An Empty object.",
           "type": "object"
         }
       },
diff --git a/genomics/v1/genomics-gen.go b/genomics/v1/genomics-gen.go
index 94d26ad..195b892 100644
--- a/genomics/v1/genomics-gen.go
+++ b/genomics/v1/genomics-gen.go
@@ -604,63 +604,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ImportReadGroupSetsResponse: The read group set import response.
-type ImportReadGroupSetsResponse struct {
-	// ReadGroupSetIds: IDs of the read group sets that were created.
-	ReadGroupSetIds []string `json:"readGroupSetIds,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "ReadGroupSetIds") 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. "ReadGroupSetIds") 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 *ImportReadGroupSetsResponse) MarshalJSON() ([]byte, error) {
-	type NoMethod ImportReadGroupSetsResponse
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// ImportVariantsResponse: The variant data import response.
-type ImportVariantsResponse struct {
-	// CallSetIds: IDs of the call sets created during the import.
-	CallSetIds []string `json:"callSetIds,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "CallSetIds") 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. "CallSetIds") 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 *ImportVariantsResponse) MarshalJSON() ([]byte, error) {
-	type NoMethod ImportVariantsResponse
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 // ListOperationsResponse: The response message for
 // Operations.ListOperations.
 type ListOperationsResponse struct {
@@ -722,9 +665,7 @@
 	// `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`
 	Name string `json:"name,omitempty"`
 
-	// Response: If importing ReadGroupSets, an ImportReadGroupSetsResponse
-	// is returned. If importing Variants, an ImportVariantsResponse is
-	// returned. For pipelines and exports, an Empty response is returned.
+	// Response: An Empty object.
 	Response googleapi.RawMessage `json:"response,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
diff --git a/genomics/v1alpha2/genomics-api.json b/genomics/v1alpha2/genomics-api.json
index b733a15..ddccff0 100644
--- a/genomics/v1alpha2/genomics-api.json
+++ b/genomics/v1alpha2/genomics-api.json
@@ -388,7 +388,7 @@
       }
     }
   },
-  "revision": "20190309",
+  "revision": "20190326",
   "rootUrl": "https://genomics.googleapis.com/",
   "schemas": {
     "CancelOperationRequest": {
@@ -687,34 +687,6 @@
       },
       "type": "object"
     },
-    "ImportReadGroupSetsResponse": {
-      "description": "The read group set import response.",
-      "id": "ImportReadGroupSetsResponse",
-      "properties": {
-        "readGroupSetIds": {
-          "description": "IDs of the read group sets that were created.",
-          "items": {
-            "type": "string"
-          },
-          "type": "array"
-        }
-      },
-      "type": "object"
-    },
-    "ImportVariantsResponse": {
-      "description": "The variant data import response.",
-      "id": "ImportVariantsResponse",
-      "properties": {
-        "callSetIds": {
-          "description": "IDs of the call sets created during the import.",
-          "items": {
-            "type": "string"
-          },
-          "type": "array"
-        }
-      },
-      "type": "object"
-    },
     "ListOperationsResponse": {
       "description": "The response message for Operations.ListOperations.",
       "id": "ListOperationsResponse",
@@ -806,7 +778,7 @@
             "description": "Properties of the object. Contains field @type with type URL.",
             "type": "any"
           },
-          "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an Empty response is returned.",
+          "description": "An Empty object.",
           "type": "object"
         }
       },
diff --git a/genomics/v1alpha2/genomics-gen.go b/genomics/v1alpha2/genomics-gen.go
index 3eb8ed8..a53fa55 100644
--- a/genomics/v1alpha2/genomics-gen.go
+++ b/genomics/v1alpha2/genomics-gen.go
@@ -797,63 +797,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ImportReadGroupSetsResponse: The read group set import response.
-type ImportReadGroupSetsResponse struct {
-	// ReadGroupSetIds: IDs of the read group sets that were created.
-	ReadGroupSetIds []string `json:"readGroupSetIds,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "ReadGroupSetIds") 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. "ReadGroupSetIds") 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 *ImportReadGroupSetsResponse) MarshalJSON() ([]byte, error) {
-	type NoMethod ImportReadGroupSetsResponse
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// ImportVariantsResponse: The variant data import response.
-type ImportVariantsResponse struct {
-	// CallSetIds: IDs of the call sets created during the import.
-	CallSetIds []string `json:"callSetIds,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "CallSetIds") 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. "CallSetIds") 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 *ImportVariantsResponse) MarshalJSON() ([]byte, error) {
-	type NoMethod ImportVariantsResponse
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 // ListOperationsResponse: The response message for
 // Operations.ListOperations.
 type ListOperationsResponse struct {
@@ -1034,9 +977,7 @@
 	// `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`
 	Name string `json:"name,omitempty"`
 
-	// Response: If importing ReadGroupSets, an ImportReadGroupSetsResponse
-	// is returned. If importing Variants, an ImportVariantsResponse is
-	// returned. For pipelines and exports, an Empty response is returned.
+	// Response: An Empty object.
 	Response googleapi.RawMessage `json:"response,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
diff --git a/genomics/v2alpha1/genomics-api.json b/genomics/v2alpha1/genomics-api.json
index 35f4b04..ccfccfe 100644
--- a/genomics/v2alpha1/genomics-api.json
+++ b/genomics/v2alpha1/genomics-api.json
@@ -267,7 +267,7 @@
       }
     }
   },
-  "revision": "20190309",
+  "revision": "20190326",
   "rootUrl": "https://genomics.googleapis.com/",
   "schemas": {
     "Accelerator": {
@@ -659,34 +659,6 @@
       },
       "type": "object"
     },
-    "ImportReadGroupSetsResponse": {
-      "description": "The read group set import response.",
-      "id": "ImportReadGroupSetsResponse",
-      "properties": {
-        "readGroupSetIds": {
-          "description": "IDs of the read group sets that were created.",
-          "items": {
-            "type": "string"
-          },
-          "type": "array"
-        }
-      },
-      "type": "object"
-    },
-    "ImportVariantsResponse": {
-      "description": "The variant data import response.",
-      "id": "ImportVariantsResponse",
-      "properties": {
-        "callSetIds": {
-          "description": "IDs of the call sets created during the import.",
-          "items": {
-            "type": "string"
-          },
-          "type": "array"
-        }
-      },
-      "type": "object"
-    },
     "ListOperationsResponse": {
       "description": "The response message for Operations.ListOperations.",
       "id": "ListOperationsResponse",
@@ -812,7 +784,7 @@
             "description": "Properties of the object. Contains field @type with type URL.",
             "type": "any"
           },
-          "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an Empty response is returned.",
+          "description": "An Empty object.",
           "type": "object"
         }
       },
diff --git a/genomics/v2alpha1/genomics-gen.go b/genomics/v2alpha1/genomics-gen.go
index 1acea27..73cf98a 100644
--- a/genomics/v2alpha1/genomics-gen.go
+++ b/genomics/v2alpha1/genomics-gen.go
@@ -1069,63 +1069,6 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ImportReadGroupSetsResponse: The read group set import response.
-type ImportReadGroupSetsResponse struct {
-	// ReadGroupSetIds: IDs of the read group sets that were created.
-	ReadGroupSetIds []string `json:"readGroupSetIds,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "ReadGroupSetIds") 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. "ReadGroupSetIds") 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 *ImportReadGroupSetsResponse) MarshalJSON() ([]byte, error) {
-	type NoMethod ImportReadGroupSetsResponse
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// ImportVariantsResponse: The variant data import response.
-type ImportVariantsResponse struct {
-	// CallSetIds: IDs of the call sets created during the import.
-	CallSetIds []string `json:"callSetIds,omitempty"`
-
-	// ForceSendFields is a list of field names (e.g. "CallSetIds") 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. "CallSetIds") 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 *ImportVariantsResponse) MarshalJSON() ([]byte, error) {
-	type NoMethod ImportVariantsResponse
-	raw := NoMethod(*s)
-	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
 // ListOperationsResponse: The response message for
 // Operations.ListOperations.
 type ListOperationsResponse struct {
@@ -1334,9 +1277,7 @@
 	// `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`
 	Name string `json:"name,omitempty"`
 
-	// Response: If importing ReadGroupSets, an ImportReadGroupSetsResponse
-	// is returned. If importing Variants, an ImportVariantsResponse is
-	// returned. For pipelines and exports, an Empty response is returned.
+	// Response: An Empty object.
 	Response googleapi.RawMessage `json:"response,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
diff --git a/groupssettings/v1/groupssettings-api.json b/groupssettings/v1/groupssettings-api.json
index 65a3746..881f22f 100644
--- a/groupssettings/v1/groupssettings-api.json
+++ b/groupssettings/v1/groupssettings-api.json
@@ -11,10 +11,10 @@
   "basePath": "/groups/v1/groups/",
   "baseUrl": "https://www.googleapis.com/groups/v1/groups/",
   "batchPath": "batch/groupssettings/v1",
-  "description": "Lets you manage permission levels and related settings of a group.",
+  "description": "Manages permission levels and related settings of a group.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/google-apps/groups-settings/get_started",
-  "etag": "\"Zkyw9ACJZUvcYmlFaKGChzhmtnE/EPhjvZDrZYF2OpavwIs_l0lsmo0\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/O9huEvNfRwSHRIf9WwGPIyLtR7c\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -153,6 +153,7 @@
       }
     }
   },
+  "revision": "20190315",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Groups": {
@@ -183,6 +184,10 @@
           "description": "Default email to which reply to any message should go.",
           "type": "string"
         },
+        "customRolesEnabledForSettingsToBeMerged": {
+          "description": "If any of the settings that will be merged have custom roles which is anything other than owners, managers, or group scopes.",
+          "type": "string"
+        },
         "defaultMessageDenyNotificationText": {
           "description": "Default message deny notification message",
           "type": "string"
@@ -195,6 +200,10 @@
           "description": "Email id of the group",
           "type": "string"
         },
+        "enableCollaborativeInbox": {
+          "description": "If a primary Collab Inbox feature is enabled.",
+          "type": "string"
+        },
         "favoriteRepliesOnTop": {
           "description": "If favorite replies should be displayed above other replies.",
           "type": "string"
@@ -265,18 +274,50 @@
           "description": "Permission to add references to a topic. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
           "type": "string"
         },
+        "whoCanApproveMembers": {
+          "description": "Permission to approve members. Possible values are: ALL_OWNERS_CAN_APPROVE ALL_MANAGERS_CAN_APPROVE ALL_MEMBERS_CAN_APPROVE NONE_CAN_APPROVE",
+          "type": "string"
+        },
+        "whoCanApproveMessages": {
+          "description": "Permission to approve pending messages in the moderation queue. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
         "whoCanAssignTopics": {
           "description": "Permission to assign topics in a forum to another user. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
           "type": "string"
         },
+        "whoCanAssistContent": {
+          "description": "Permission for content assistants. Possible values are: Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
+        "whoCanBanUsers": {
+          "description": "Permission to ban users. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
         "whoCanContactOwner": {
           "description": "Permission to contact owner of the group via web UI. Possible values are: ANYONE_CAN_CONTACT ALL_IN_DOMAIN_CAN_CONTACT ALL_MEMBERS_CAN_CONTACT ALL_MANAGERS_CAN_CONTACT",
           "type": "string"
         },
+        "whoCanDeleteAnyPost": {
+          "description": "Permission to delete replies to topics. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
+        "whoCanDeleteTopics": {
+          "description": "Permission to delete topics. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
+        "whoCanDiscoverGroup": {
+          "description": "Permission for who can discover the group. Possible values are: ALL_MEMBERS_CAN_DISCOVER ALL_IN_DOMAIN_CAN_DISCOVER ANYONE_CAN_DISCOVER",
+          "type": "string"
+        },
         "whoCanEnterFreeFormTags": {
           "description": "Permission to enter free form tags for topics in a forum. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
           "type": "string"
         },
+        "whoCanHideAbuse": {
+          "description": "Permission to hide posts by reporting them as abuse. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
         "whoCanInvite": {
           "description": "Permissions to invite members. Possible values are: ALL_MEMBERS_CAN_INVITE ALL_MANAGERS_CAN_INVITE ALL_OWNERS_CAN_INVITE NONE_CAN_INVITE",
           "type": "string"
@@ -289,6 +330,14 @@
           "description": "Permission to leave the group. Possible values are: ALL_MANAGERS_CAN_LEAVE ALL_OWNERS_CAN_LEAVE ALL_MEMBERS_CAN_LEAVE NONE_CAN_LEAVE",
           "type": "string"
         },
+        "whoCanLockTopics": {
+          "description": "Permission to lock topics. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
+        "whoCanMakeTopicsSticky": {
+          "description": "Permission to make topics appear at the top of the topic list. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
         "whoCanMarkDuplicate": {
           "description": "Permission to mark a topic as a duplicate of another topic. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
           "type": "string"
@@ -305,10 +354,34 @@
           "description": "Permission to mark a topic as not needing a response. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
           "type": "string"
         },
+        "whoCanModerateContent": {
+          "description": "Permission for content moderation. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
+        "whoCanModerateMembers": {
+          "description": "Permission for membership moderation. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
+        "whoCanModifyMembers": {
+          "description": "Permission to modify members (change member roles). Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
         "whoCanModifyTagsAndCategories": {
           "description": "Permission to change tags and categories. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
           "type": "string"
         },
+        "whoCanMoveTopicsIn": {
+          "description": "Permission to move topics into the group or forum. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
+        "whoCanMoveTopicsOut": {
+          "description": "Permission to move topics out of the group or forum. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
+        "whoCanPostAnnouncements": {
+          "description": "Permission to post announcements, a special topic type. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS",
+          "type": "string"
+        },
         "whoCanPostMessage": {
           "description": "Permissions to post messages to the group. Possible values are: NONE_CAN_POST ALL_MANAGERS_CAN_POST ALL_MEMBERS_CAN_POST ALL_OWNERS_CAN_POST ALL_IN_DOMAIN_CAN_POST ANYONE_CAN_POST",
           "type": "string"
@@ -330,7 +403,7 @@
           "type": "string"
         },
         "whoCanViewMembership": {
-          "description": "Permissions to view membership. Possible values are: ALL_IN_DOMAIN_CAN_VIEW ALL_MEMBERS_CAN_VIEW ALL_MANAGERS_CAN_VIEW",
+          "description": "Permissions to view membership. Possible values are: ALL_IN_DOMAIN_CAN_VIEW ALL_MEMBERS_CAN_VIEW ALL_MANAGERS_CAN_VIEW ALL_OWNERS_CAN_VIEW",
           "type": "string"
         }
       },
diff --git a/groupssettings/v1/groupssettings-gen.go b/groupssettings/v1/groupssettings-gen.go
index a4c07d9..b954e74 100644
--- a/groupssettings/v1/groupssettings-gen.go
+++ b/groupssettings/v1/groupssettings-gen.go
@@ -159,6 +159,11 @@
 	// CustomReplyTo: Default email to which reply to any message should go.
 	CustomReplyTo string `json:"customReplyTo,omitempty"`
 
+	// CustomRolesEnabledForSettingsToBeMerged: If any of the settings that
+	// will be merged have custom roles which is anything other than owners,
+	// managers, or group scopes.
+	CustomRolesEnabledForSettingsToBeMerged string `json:"customRolesEnabledForSettingsToBeMerged,omitempty"`
+
 	// DefaultMessageDenyNotificationText: Default message deny notification
 	// message
 	DefaultMessageDenyNotificationText string `json:"defaultMessageDenyNotificationText,omitempty"`
@@ -169,6 +174,10 @@
 	// Email: Email id of the group
 	Email string `json:"email,omitempty"`
 
+	// EnableCollaborativeInbox: If a primary Collab Inbox feature is
+	// enabled.
+	EnableCollaborativeInbox string `json:"enableCollaborativeInbox,omitempty"`
+
 	// FavoriteRepliesOnTop: If favorite replies should be displayed above
 	// other replies.
 	FavoriteRepliesOnTop string `json:"favoriteRepliesOnTop,omitempty"`
@@ -234,21 +243,58 @@
 	// OWNERS_AND_MANAGERS ALL_MEMBERS
 	WhoCanAddReferences string `json:"whoCanAddReferences,omitempty"`
 
+	// WhoCanApproveMembers: Permission to approve members. Possible values
+	// are: ALL_OWNERS_CAN_APPROVE ALL_MANAGERS_CAN_APPROVE
+	// ALL_MEMBERS_CAN_APPROVE NONE_CAN_APPROVE
+	WhoCanApproveMembers string `json:"whoCanApproveMembers,omitempty"`
+
+	// WhoCanApproveMessages: Permission to approve pending messages in the
+	// moderation queue. Possible values are: NONE OWNERS_ONLY
+	// OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanApproveMessages string `json:"whoCanApproveMessages,omitempty"`
+
 	// WhoCanAssignTopics: Permission to assign topics in a forum to another
 	// user. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY
 	// OWNERS_AND_MANAGERS ALL_MEMBERS
 	WhoCanAssignTopics string `json:"whoCanAssignTopics,omitempty"`
 
+	// WhoCanAssistContent: Permission for content assistants. Possible
+	// values are: Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY
+	// OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanAssistContent string `json:"whoCanAssistContent,omitempty"`
+
+	// WhoCanBanUsers: Permission to ban users. Possible values are: NONE
+	// OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanBanUsers string `json:"whoCanBanUsers,omitempty"`
+
 	// WhoCanContactOwner: Permission to contact owner of the group via web
 	// UI. Possible values are: ANYONE_CAN_CONTACT ALL_IN_DOMAIN_CAN_CONTACT
 	// ALL_MEMBERS_CAN_CONTACT ALL_MANAGERS_CAN_CONTACT
 	WhoCanContactOwner string `json:"whoCanContactOwner,omitempty"`
 
+	// WhoCanDeleteAnyPost: Permission to delete replies to topics. Possible
+	// values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanDeleteAnyPost string `json:"whoCanDeleteAnyPost,omitempty"`
+
+	// WhoCanDeleteTopics: Permission to delete topics. Possible values are:
+	// NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanDeleteTopics string `json:"whoCanDeleteTopics,omitempty"`
+
+	// WhoCanDiscoverGroup: Permission for who can discover the group.
+	// Possible values are: ALL_MEMBERS_CAN_DISCOVER
+	// ALL_IN_DOMAIN_CAN_DISCOVER ANYONE_CAN_DISCOVER
+	WhoCanDiscoverGroup string `json:"whoCanDiscoverGroup,omitempty"`
+
 	// WhoCanEnterFreeFormTags: Permission to enter free form tags for
 	// topics in a forum. Possible values are: NONE OWNERS_ONLY
 	// MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS
 	WhoCanEnterFreeFormTags string `json:"whoCanEnterFreeFormTags,omitempty"`
 
+	// WhoCanHideAbuse: Permission to hide posts by reporting them as abuse.
+	// Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY
+	// OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanHideAbuse string `json:"whoCanHideAbuse,omitempty"`
+
 	// WhoCanInvite: Permissions to invite members. Possible values are:
 	// ALL_MEMBERS_CAN_INVITE ALL_MANAGERS_CAN_INVITE ALL_OWNERS_CAN_INVITE
 	// NONE_CAN_INVITE
@@ -264,6 +310,15 @@
 	// NONE_CAN_LEAVE
 	WhoCanLeaveGroup string `json:"whoCanLeaveGroup,omitempty"`
 
+	// WhoCanLockTopics: Permission to lock topics. Possible values are:
+	// NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanLockTopics string `json:"whoCanLockTopics,omitempty"`
+
+	// WhoCanMakeTopicsSticky: Permission to make topics appear at the top
+	// of the topic list. Possible values are: NONE OWNERS_ONLY
+	// MANAGERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanMakeTopicsSticky string `json:"whoCanMakeTopicsSticky,omitempty"`
+
 	// WhoCanMarkDuplicate: Permission to mark a topic as a duplicate of
 	// another topic. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY
 	// OWNERS_AND_MANAGERS ALL_MEMBERS
@@ -284,11 +339,39 @@
 	// OWNERS_AND_MANAGERS ALL_MEMBERS
 	WhoCanMarkNoResponseNeeded string `json:"whoCanMarkNoResponseNeeded,omitempty"`
 
+	// WhoCanModerateContent: Permission for content moderation. Possible
+	// values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanModerateContent string `json:"whoCanModerateContent,omitempty"`
+
+	// WhoCanModerateMembers: Permission for membership moderation. Possible
+	// values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS ALL_MEMBERS
+	WhoCanModerateMembers string `json:"whoCanModerateMembers,omitempty"`
+
+	// WhoCanModifyMembers: Permission to modify members (change member
+	// roles). Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS
+	// ALL_MEMBERS
+	WhoCanModifyMembers string `json:"whoCanModifyMembers,omitempty"`
+
 	// WhoCanModifyTagsAndCategories: Permission to change tags and
 	// categories. Possible values are: NONE OWNERS_ONLY MANAGERS_ONLY
 	// OWNERS_AND_MANAGERS ALL_MEMBERS
 	WhoCanModifyTagsAndCategories string `json:"whoCanModifyTagsAndCategories,omitempty"`
 
+	// WhoCanMoveTopicsIn: Permission to move topics into the group or
+	// forum. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS
+	// ALL_MEMBERS
+	WhoCanMoveTopicsIn string `json:"whoCanMoveTopicsIn,omitempty"`
+
+	// WhoCanMoveTopicsOut: Permission to move topics out of the group or
+	// forum. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS
+	// ALL_MEMBERS
+	WhoCanMoveTopicsOut string `json:"whoCanMoveTopicsOut,omitempty"`
+
+	// WhoCanPostAnnouncements: Permission to post announcements, a special
+	// topic type. Possible values are: NONE OWNERS_ONLY OWNERS_AND_MANAGERS
+	// ALL_MEMBERS
+	WhoCanPostAnnouncements string `json:"whoCanPostAnnouncements,omitempty"`
+
 	// WhoCanPostMessage: Permissions to post messages to the group.
 	// Possible values are: NONE_CAN_POST ALL_MANAGERS_CAN_POST
 	// ALL_MEMBERS_CAN_POST ALL_OWNERS_CAN_POST ALL_IN_DOMAIN_CAN_POST
@@ -317,7 +400,7 @@
 
 	// WhoCanViewMembership: Permissions to view membership. Possible values
 	// are: ALL_IN_DOMAIN_CAN_VIEW ALL_MEMBERS_CAN_VIEW
-	// ALL_MANAGERS_CAN_VIEW
+	// ALL_MANAGERS_CAN_VIEW ALL_OWNERS_CAN_VIEW
 	WhoCanViewMembership string `json:"whoCanViewMembership,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
diff --git a/healthcare/v1alpha2/healthcare-api.json b/healthcare/v1alpha2/healthcare-api.json
index ff199a2..6469b4b 100644
--- a/healthcare/v1alpha2/healthcare-api.json
+++ b/healthcare/v1alpha2/healthcare-api.json
@@ -3254,7 +3254,7 @@
       }
     }
   },
-  "revision": "20190321",
+  "revision": "20190325",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -4044,10 +4044,6 @@
       "description": "Returns the errors encountered during DICOM store import.",
       "id": "ImportDicomDataErrorDetails",
       "properties": {
-        "dicomStore": {
-          "description": "The name of the DICOM store where the resources have been imported, in the\nformat\n`projects/{project_id}/locations/{location_id}/datasets/{dataset_id}/dicomStores/{dicom_store_id}`",
-          "type": "string"
-        },
         "sampleErrors": {
           "description": "Deprecated. Use only for debugging purposes.\n\nContains sample errors encountered in imports of individual resources\n(for example, a Cloud Storage object).",
           "items": {
diff --git a/healthcare/v1alpha2/healthcare-gen.go b/healthcare/v1alpha2/healthcare-gen.go
index d9f3848..9ac6d66 100644
--- a/healthcare/v1alpha2/healthcare-gen.go
+++ b/healthcare/v1alpha2/healthcare-gen.go
@@ -2381,14 +2381,6 @@
 // ImportDicomDataErrorDetails: Returns the errors encountered during
 // DICOM store import.
 type ImportDicomDataErrorDetails struct {
-	// DicomStore: The name of the DICOM store where the resources have been
-	// imported, in
-	// the
-	// format
-	// `projects/{project_id}/locations/{location_id}/datasets/{da
-	// taset_id}/dicomStores/{dicom_store_id}`
-	DicomStore string `json:"dicomStore,omitempty"`
-
 	// SampleErrors: Deprecated. Use only for debugging purposes.
 	//
 	// Contains sample errors encountered in imports of individual
@@ -2396,7 +2388,7 @@
 	// (for example, a Cloud Storage object).
 	SampleErrors []*ErrorDetail `json:"sampleErrors,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "DicomStore") to
+	// ForceSendFields is a list of field names (e.g. "SampleErrors") 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
@@ -2404,10 +2396,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "DicomStore") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
+	// NullFields is a list of field names (e.g. "SampleErrors") 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:"-"`
diff --git a/iap/v1/iap-api.json b/iap/v1/iap-api.json
index c36ad72..1fd9df2 100644
--- a/iap/v1/iap-api.json
+++ b/iap/v1/iap-api.json
@@ -193,7 +193,7 @@
       }
     }
   },
-  "revision": "20190306",
+  "revision": "20190323",
   "rootUrl": "https://iap.googleapis.com/",
   "schemas": {
     "Binding": {
@@ -202,7 +202,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/iap/v1/iap-gen.go b/iap/v1/iap-gen.go
index 46d89b9..3152dac 100644
--- a/iap/v1/iap-gen.go
+++ b/iap/v1/iap-gen.go
@@ -141,8 +141,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
diff --git a/iap/v1beta1/iap-api.json b/iap/v1beta1/iap-api.json
index fff6e8b..27e975c 100644
--- a/iap/v1beta1/iap-api.json
+++ b/iap/v1beta1/iap-api.json
@@ -193,7 +193,7 @@
       }
     }
   },
-  "revision": "20190306",
+  "revision": "20190323",
   "rootUrl": "https://iap.googleapis.com/",
   "schemas": {
     "Binding": {
@@ -202,7 +202,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/iap/v1beta1/iap-gen.go b/iap/v1beta1/iap-gen.go
index 31560e6..f1638b2 100644
--- a/iap/v1beta1/iap-gen.go
+++ b/iap/v1beta1/iap-gen.go
@@ -141,8 +141,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
diff --git a/jobs/v3p1beta1/jobs-api.json b/jobs/v3p1beta1/jobs-api.json
index 1ca4947..bdf2b3e 100644
--- a/jobs/v3p1beta1/jobs-api.json
+++ b/jobs/v3p1beta1/jobs-api.json
@@ -662,7 +662,7 @@
       }
     }
   },
-  "revision": "20190315",
+  "revision": "20190322",
   "rootUrl": "https://jobs.googleapis.com/",
   "schemas": {
     "ApplicationInfo": {
@@ -2715,7 +2715,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/jobs/v3p1beta1/jobs-gen.go b/jobs/v3p1beta1/jobs-gen.go
index bad6133..36dcdec 100644
--- a/jobs/v3p1beta1/jobs-gen.go
+++ b/jobs/v3p1beta1/jobs-gen.go
@@ -4712,20 +4712,20 @@
 }
 
 // Status: The `Status` type defines a logical error model that is
-// suitable for different
-// programming environments, including REST APIs and RPC APIs. It is
-// used by
-// [gRPC](https://github.com/grpc). The error model is designed to
-// be:
+// suitable for
+// different programming environments, including REST APIs and RPC APIs.
+// It is
+// used by [gRPC](https://github.com/grpc). The error model is designed
+// to be:
 //
 // - Simple to use and understand for most users
 // - Flexible enough to meet unexpected needs
 //
 // # Overview
 //
-// The `Status` message contains three pieces of data: error code, error
-// message,
-// and error details. The error code should be an enum value
+// The `Status` message contains three pieces of data: error code,
+// error
+// message, and error details. The error code should be an enum value
 // of
 // google.rpc.Code, but it may accept additional error codes if needed.
 // The
diff --git a/people/v1/people-api.json b/people/v1/people-api.json
index 046f854..2194f96 100644
--- a/people/v1/people-api.json
+++ b/people/v1/people-api.json
@@ -27,7 +27,7 @@
           "description": "View your email address"
         },
         "https://www.googleapis.com/auth/userinfo.profile": {
-          "description": "See your personal info, including any personal info you've made publically available"
+          "description": "See your personal info, including any personal info you've made publicly available"
         }
       }
     }
@@ -585,7 +585,7 @@
       }
     }
   },
-  "revision": "20190320",
+  "revision": "20190323",
   "rootUrl": "https://people.googleapis.com/",
   "schemas": {
     "Address": {
diff --git a/people/v1/people-gen.go b/people/v1/people-gen.go
index 61ecb0f..8abd763 100644
--- a/people/v1/people-gen.go
+++ b/people/v1/people-gen.go
@@ -105,7 +105,7 @@
 	UserinfoEmailScope = "https://www.googleapis.com/auth/userinfo.email"
 
 	// See your personal info, including any personal info you've made
-	// publically available
+	// publicly available
 	UserinfoProfileScope = "https://www.googleapis.com/auth/userinfo.profile"
 )
 
diff --git a/plusdomains/v1/plusdomains-api.json b/plusdomains/v1/plusdomains-api.json
index b902220..9203b9d 100644
--- a/plusdomains/v1/plusdomains-api.json
+++ b/plusdomains/v1/plusdomains-api.json
@@ -5,9 +5,6 @@
         "https://www.googleapis.com/auth/plus.circles.read": {
           "description": "View your circles and the people and pages in them"
         },
-        "https://www.googleapis.com/auth/plus.circles.write": {
-          "description": "Manage your circles and add people and pages. People and pages you add to your circles will be notified. Others may see this information publicly. People you add to circles can use Hangouts with you."
-        },
         "https://www.googleapis.com/auth/plus.login": {
           "description": "View your basic profile info, including your age range and language"
         },
@@ -41,7 +38,7 @@
   "description": "Builds on top of the Google+ platform for Google Apps Domains.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/+/domains/",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/i92XADu-jYkxWsaEBWE352t2jKE\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/gYoLKAjj0P6KeBeXDv50eS4yV-Y\"",
   "icons": {
     "x16": "http://www.google.com/images/icons/product/gplus-16.png",
     "x32": "http://www.google.com/images/icons/product/gplus-32.png"
@@ -125,39 +122,6 @@
             "https://www.googleapis.com/auth/plus.stream.read"
           ]
         },
-        "insert": {
-          "description": "Create a new activity for the authenticated user.",
-          "httpMethod": "POST",
-          "id": "plusDomains.activities.insert",
-          "parameterOrder": [
-            "userId"
-          ],
-          "parameters": {
-            "preview": {
-              "description": "If \"true\", extract the potential media attachments for a URL. The response will include all possible attachments for a URL, including video, photos, and articles based on the content of the page.",
-              "location": "query",
-              "type": "boolean"
-            },
-            "userId": {
-              "description": "The ID of the user to create the activity on behalf of. Its value should be \"me\", to indicate the authenticated user.",
-              "location": "path",
-              "required": true,
-              "type": "string"
-            }
-          },
-          "path": "people/{userId}/activities",
-          "request": {
-            "$ref": "Activity"
-          },
-          "response": {
-            "$ref": "Activity"
-          },
-          "scopes": [
-            "https://www.googleapis.com/auth/plus.login",
-            "https://www.googleapis.com/auth/plus.me",
-            "https://www.googleapis.com/auth/plus.stream.write"
-          ]
-        },
         "list": {
           "description": "List all of the activities in the specified collection for a particular user.",
           "httpMethod": "GET",
@@ -257,94 +221,6 @@
     },
     "circles": {
       "methods": {
-        "addPeople": {
-          "description": "Add a person to a circle. Google+ limits certain circle operations, including the number of circle adds. Learn More.",
-          "httpMethod": "PUT",
-          "id": "plusDomains.circles.addPeople",
-          "parameterOrder": [
-            "circleId"
-          ],
-          "parameters": {
-            "circleId": {
-              "description": "The ID of the circle to add the person to.",
-              "location": "path",
-              "required": true,
-              "type": "string"
-            },
-            "email": {
-              "description": "Email of the people to add to the circle. Optional, can be repeated.",
-              "location": "query",
-              "repeated": true,
-              "type": "string"
-            },
-            "userId": {
-              "description": "IDs of the people to add to the circle. Optional, can be repeated.",
-              "location": "query",
-              "repeated": true,
-              "type": "string"
-            }
-          },
-          "path": "circles/{circleId}/people",
-          "response": {
-            "$ref": "Circle"
-          },
-          "scopes": [
-            "https://www.googleapis.com/auth/plus.circles.write",
-            "https://www.googleapis.com/auth/plus.login"
-          ]
-        },
-        "get": {
-          "description": "Get a circle.",
-          "httpMethod": "GET",
-          "id": "plusDomains.circles.get",
-          "parameterOrder": [
-            "circleId"
-          ],
-          "parameters": {
-            "circleId": {
-              "description": "The ID of the circle to get.",
-              "location": "path",
-              "required": true,
-              "type": "string"
-            }
-          },
-          "path": "circles/{circleId}",
-          "response": {
-            "$ref": "Circle"
-          },
-          "scopes": [
-            "https://www.googleapis.com/auth/plus.circles.read",
-            "https://www.googleapis.com/auth/plus.login"
-          ]
-        },
-        "insert": {
-          "description": "Create a new circle for the authenticated user.",
-          "httpMethod": "POST",
-          "id": "plusDomains.circles.insert",
-          "parameterOrder": [
-            "userId"
-          ],
-          "parameters": {
-            "userId": {
-              "description": "The ID of the user to create the circle on behalf of. The value \"me\" can be used to indicate the authenticated user.",
-              "location": "path",
-              "required": true,
-              "type": "string"
-            }
-          },
-          "path": "people/{userId}/circles",
-          "request": {
-            "$ref": "Circle"
-          },
-          "response": {
-            "$ref": "Circle"
-          },
-          "scopes": [
-            "https://www.googleapis.com/auth/plus.circles.write",
-            "https://www.googleapis.com/auth/plus.login",
-            "https://www.googleapis.com/auth/plus.me"
-          ]
-        },
         "list": {
           "description": "List all of the circles for a user.",
           "httpMethod": "GET",
@@ -383,114 +259,6 @@
             "https://www.googleapis.com/auth/plus.login",
             "https://www.googleapis.com/auth/plus.me"
           ]
-        },
-        "patch": {
-          "description": "Update a circle's description. This method supports patch semantics.",
-          "httpMethod": "PATCH",
-          "id": "plusDomains.circles.patch",
-          "parameterOrder": [
-            "circleId"
-          ],
-          "parameters": {
-            "circleId": {
-              "description": "The ID of the circle to update.",
-              "location": "path",
-              "required": true,
-              "type": "string"
-            }
-          },
-          "path": "circles/{circleId}",
-          "request": {
-            "$ref": "Circle"
-          },
-          "response": {
-            "$ref": "Circle"
-          },
-          "scopes": [
-            "https://www.googleapis.com/auth/plus.circles.write",
-            "https://www.googleapis.com/auth/plus.login"
-          ]
-        },
-        "remove": {
-          "description": "Delete a circle.",
-          "httpMethod": "DELETE",
-          "id": "plusDomains.circles.remove",
-          "parameterOrder": [
-            "circleId"
-          ],
-          "parameters": {
-            "circleId": {
-              "description": "The ID of the circle to delete.",
-              "location": "path",
-              "required": true,
-              "type": "string"
-            }
-          },
-          "path": "circles/{circleId}",
-          "scopes": [
-            "https://www.googleapis.com/auth/plus.circles.write",
-            "https://www.googleapis.com/auth/plus.login"
-          ]
-        },
-        "removePeople": {
-          "description": "Remove a person from a circle.",
-          "httpMethod": "DELETE",
-          "id": "plusDomains.circles.removePeople",
-          "parameterOrder": [
-            "circleId"
-          ],
-          "parameters": {
-            "circleId": {
-              "description": "The ID of the circle to remove the person from.",
-              "location": "path",
-              "required": true,
-              "type": "string"
-            },
-            "email": {
-              "description": "Email of the people to add to the circle. Optional, can be repeated.",
-              "location": "query",
-              "repeated": true,
-              "type": "string"
-            },
-            "userId": {
-              "description": "IDs of the people to remove from the circle. Optional, can be repeated.",
-              "location": "query",
-              "repeated": true,
-              "type": "string"
-            }
-          },
-          "path": "circles/{circleId}/people",
-          "scopes": [
-            "https://www.googleapis.com/auth/plus.circles.write",
-            "https://www.googleapis.com/auth/plus.login"
-          ]
-        },
-        "update": {
-          "description": "Update a circle's description.",
-          "httpMethod": "PUT",
-          "id": "plusDomains.circles.update",
-          "parameterOrder": [
-            "circleId"
-          ],
-          "parameters": {
-            "circleId": {
-              "description": "The ID of the circle to update.",
-              "location": "path",
-              "required": true,
-              "type": "string"
-            }
-          },
-          "path": "circles/{circleId}",
-          "request": {
-            "$ref": "Circle"
-          },
-          "response": {
-            "$ref": "Circle"
-          },
-          "scopes": [
-            "https://www.googleapis.com/auth/plus.circles.write",
-            "https://www.googleapis.com/auth/plus.login"
-          ]
         }
       }
     },
@@ -852,7 +620,7 @@
       }
     }
   },
-  "revision": "20190313",
+  "revision": "20190322",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Acl": {
diff --git a/plusdomains/v1/plusdomains-gen.go b/plusdomains/v1/plusdomains-gen.go
index 5ebdf7d..89c58fe 100644
--- a/plusdomains/v1/plusdomains-gen.go
+++ b/plusdomains/v1/plusdomains-gen.go
@@ -83,11 +83,6 @@
 	// View your circles and the people and pages in them
 	PlusCirclesReadScope = "https://www.googleapis.com/auth/plus.circles.read"
 
-	// Manage your circles and add people and pages. People and pages you
-	// add to your circles will be notified. Others may see this information
-	// publicly. People you add to circles can use Hangouts with you.
-	PlusCirclesWriteScope = "https://www.googleapis.com/auth/plus.circles.write"
-
 	// View your basic profile info, including your age range and language
 	PlusLoginScope = "https://www.googleapis.com/auth/plus.login"
 
@@ -118,7 +113,6 @@
 func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
 	scopesOption := option.WithScopes(
 		"https://www.googleapis.com/auth/plus.circles.read",
-		"https://www.googleapis.com/auth/plus.circles.write",
 		"https://www.googleapis.com/auth/plus.login",
 		"https://www.googleapis.com/auth/plus.me",
 		"https://www.googleapis.com/auth/plus.media.upload",
@@ -1418,10 +1412,6 @@
 	// SelfLink: Link to this circle resource
 	SelfLink string `json:"selfLink,omitempty"`
 
-	// ServerResponse contains the HTTP response code and headers from the
-	// server.
-	googleapi.ServerResponse `json:"-"`
-
 	// ForceSendFields is a list of field names (e.g. "Description") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -2976,159 +2966,6 @@
 
 }
 
-// method id "plusDomains.activities.insert":
-
-type ActivitiesInsertCall struct {
-	s          *Service
-	userId     string
-	activity   *Activity
-	urlParams_ gensupport.URLParams
-	ctx_       context.Context
-	header_    http.Header
-}
-
-// Insert: Create a new activity for the authenticated user.
-func (r *ActivitiesService) Insert(userId string, activity *Activity) *ActivitiesInsertCall {
-	c := &ActivitiesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.userId = userId
-	c.activity = activity
-	return c
-}
-
-// Preview sets the optional parameter "preview": If "true", extract the
-// potential media attachments for a URL. The response will include all
-// possible attachments for a URL, including video, photos, and articles
-// based on the content of the page.
-func (c *ActivitiesInsertCall) Preview(preview bool) *ActivitiesInsertCall {
-	c.urlParams_.Set("preview", fmt.Sprint(preview))
-	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 *ActivitiesInsertCall) Fields(s ...googleapi.Field) *ActivitiesInsertCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *ActivitiesInsertCall) Context(ctx context.Context) *ActivitiesInsertCall {
-	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 *ActivitiesInsertCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *ActivitiesInsertCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.activity)
-	if err != nil {
-		return nil, err
-	}
-	reqHeaders.Set("Content-Type", "application/json")
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "people/{userId}/activities")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("POST", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"userId": c.userId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "plusDomains.activities.insert" call.
-// Exactly one of *Activity or error will be non-nil. Any non-2xx status
-// code is an error. Response headers are in either
-// *Activity.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 *ActivitiesInsertCall) Do(opts ...googleapi.CallOption) (*Activity, 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 := &Activity{
-		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": "Create a new activity for the authenticated user.",
-	//   "httpMethod": "POST",
-	//   "id": "plusDomains.activities.insert",
-	//   "parameterOrder": [
-	//     "userId"
-	//   ],
-	//   "parameters": {
-	//     "preview": {
-	//       "description": "If \"true\", extract the potential media attachments for a URL. The response will include all possible attachments for a URL, including video, photos, and articles based on the content of the page.",
-	//       "location": "query",
-	//       "type": "boolean"
-	//     },
-	//     "userId": {
-	//       "description": "The ID of the user to create the activity on behalf of. Its value should be \"me\", to indicate the authenticated user.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "people/{userId}/activities",
-	//   "request": {
-	//     "$ref": "Activity"
-	//   },
-	//   "response": {
-	//     "$ref": "Activity"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.login",
-	//     "https://www.googleapis.com/auth/plus.me",
-	//     "https://www.googleapis.com/auth/plus.stream.write"
-	//   ]
-	// }
-
-}
-
 // method id "plusDomains.activities.list":
 
 type ActivitiesListCall struct {
@@ -3538,442 +3375,6 @@
 	}
 }
 
-// method id "plusDomains.circles.addPeople":
-
-type CirclesAddPeopleCall struct {
-	s          *Service
-	circleId   string
-	urlParams_ gensupport.URLParams
-	ctx_       context.Context
-	header_    http.Header
-}
-
-// AddPeople: Add a person to a circle. Google+ limits certain circle
-// operations, including the number of circle adds. Learn More.
-func (r *CirclesService) AddPeople(circleId string) *CirclesAddPeopleCall {
-	c := &CirclesAddPeopleCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.circleId = circleId
-	return c
-}
-
-// Email sets the optional parameter "email": Email of the people to add
-// to the circle. Optional, can be repeated.
-func (c *CirclesAddPeopleCall) Email(email ...string) *CirclesAddPeopleCall {
-	c.urlParams_.SetMulti("email", append([]string{}, email...))
-	return c
-}
-
-// UserId sets the optional parameter "userId": IDs of the people to add
-// to the circle. Optional, can be repeated.
-func (c *CirclesAddPeopleCall) UserId(userId ...string) *CirclesAddPeopleCall {
-	c.urlParams_.SetMulti("userId", append([]string{}, userId...))
-	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 *CirclesAddPeopleCall) Fields(s ...googleapi.Field) *CirclesAddPeopleCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *CirclesAddPeopleCall) Context(ctx context.Context) *CirclesAddPeopleCall {
-	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 *CirclesAddPeopleCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *CirclesAddPeopleCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "circles/{circleId}/people")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("PUT", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"circleId": c.circleId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "plusDomains.circles.addPeople" call.
-// Exactly one of *Circle or error will be non-nil. Any non-2xx status
-// code is an error. Response headers are in either
-// *Circle.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 *CirclesAddPeopleCall) Do(opts ...googleapi.CallOption) (*Circle, 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 := &Circle{
-		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": "Add a person to a circle. Google+ limits certain circle operations, including the number of circle adds. Learn More.",
-	//   "httpMethod": "PUT",
-	//   "id": "plusDomains.circles.addPeople",
-	//   "parameterOrder": [
-	//     "circleId"
-	//   ],
-	//   "parameters": {
-	//     "circleId": {
-	//       "description": "The ID of the circle to add the person to.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "email": {
-	//       "description": "Email of the people to add to the circle. Optional, can be repeated.",
-	//       "location": "query",
-	//       "repeated": true,
-	//       "type": "string"
-	//     },
-	//     "userId": {
-	//       "description": "IDs of the people to add to the circle. Optional, can be repeated.",
-	//       "location": "query",
-	//       "repeated": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "circles/{circleId}/people",
-	//   "response": {
-	//     "$ref": "Circle"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.circles.write",
-	//     "https://www.googleapis.com/auth/plus.login"
-	//   ]
-	// }
-
-}
-
-// method id "plusDomains.circles.get":
-
-type CirclesGetCall struct {
-	s            *Service
-	circleId     string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// Get: Get a circle.
-func (r *CirclesService) Get(circleId string) *CirclesGetCall {
-	c := &CirclesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.circleId = circleId
-	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 *CirclesGetCall) Fields(s ...googleapi.Field) *CirclesGetCall {
-	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 *CirclesGetCall) IfNoneMatch(entityTag string) *CirclesGetCall {
-	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 *CirclesGetCall) Context(ctx context.Context) *CirclesGetCall {
-	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 *CirclesGetCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *CirclesGetCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	if c.ifNoneMatch_ != "" {
-		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
-	}
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "circles/{circleId}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("GET", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"circleId": c.circleId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "plusDomains.circles.get" call.
-// Exactly one of *Circle or error will be non-nil. Any non-2xx status
-// code is an error. Response headers are in either
-// *Circle.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 *CirclesGetCall) Do(opts ...googleapi.CallOption) (*Circle, 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 := &Circle{
-		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": "Get a circle.",
-	//   "httpMethod": "GET",
-	//   "id": "plusDomains.circles.get",
-	//   "parameterOrder": [
-	//     "circleId"
-	//   ],
-	//   "parameters": {
-	//     "circleId": {
-	//       "description": "The ID of the circle to get.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "circles/{circleId}",
-	//   "response": {
-	//     "$ref": "Circle"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.circles.read",
-	//     "https://www.googleapis.com/auth/plus.login"
-	//   ]
-	// }
-
-}
-
-// method id "plusDomains.circles.insert":
-
-type CirclesInsertCall struct {
-	s          *Service
-	userId     string
-	circle     *Circle
-	urlParams_ gensupport.URLParams
-	ctx_       context.Context
-	header_    http.Header
-}
-
-// Insert: Create a new circle for the authenticated user.
-func (r *CirclesService) Insert(userId string, circle *Circle) *CirclesInsertCall {
-	c := &CirclesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.userId = userId
-	c.circle = circle
-	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 *CirclesInsertCall) Fields(s ...googleapi.Field) *CirclesInsertCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *CirclesInsertCall) Context(ctx context.Context) *CirclesInsertCall {
-	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 *CirclesInsertCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *CirclesInsertCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.circle)
-	if err != nil {
-		return nil, err
-	}
-	reqHeaders.Set("Content-Type", "application/json")
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "people/{userId}/circles")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("POST", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"userId": c.userId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "plusDomains.circles.insert" call.
-// Exactly one of *Circle or error will be non-nil. Any non-2xx status
-// code is an error. Response headers are in either
-// *Circle.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 *CirclesInsertCall) Do(opts ...googleapi.CallOption) (*Circle, 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 := &Circle{
-		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": "Create a new circle for the authenticated user.",
-	//   "httpMethod": "POST",
-	//   "id": "plusDomains.circles.insert",
-	//   "parameterOrder": [
-	//     "userId"
-	//   ],
-	//   "parameters": {
-	//     "userId": {
-	//       "description": "The ID of the user to create the circle on behalf of. The value \"me\" can be used to indicate the authenticated user.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "people/{userId}/circles",
-	//   "request": {
-	//     "$ref": "Circle"
-	//   },
-	//   "response": {
-	//     "$ref": "Circle"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.circles.write",
-	//     "https://www.googleapis.com/auth/plus.login",
-	//     "https://www.googleapis.com/auth/plus.me"
-	//   ]
-	// }
-
-}
-
 // method id "plusDomains.circles.list":
 
 type CirclesListCall struct {
@@ -4170,509 +3571,6 @@
 	}
 }
 
-// method id "plusDomains.circles.patch":
-
-type CirclesPatchCall struct {
-	s          *Service
-	circleId   string
-	circle     *Circle
-	urlParams_ gensupport.URLParams
-	ctx_       context.Context
-	header_    http.Header
-}
-
-// Patch: Update a circle's description. This method supports patch
-// semantics.
-func (r *CirclesService) Patch(circleId string, circle *Circle) *CirclesPatchCall {
-	c := &CirclesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.circleId = circleId
-	c.circle = circle
-	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 *CirclesPatchCall) Fields(s ...googleapi.Field) *CirclesPatchCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *CirclesPatchCall) Context(ctx context.Context) *CirclesPatchCall {
-	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 *CirclesPatchCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *CirclesPatchCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.circle)
-	if err != nil {
-		return nil, err
-	}
-	reqHeaders.Set("Content-Type", "application/json")
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "circles/{circleId}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("PATCH", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"circleId": c.circleId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "plusDomains.circles.patch" call.
-// Exactly one of *Circle or error will be non-nil. Any non-2xx status
-// code is an error. Response headers are in either
-// *Circle.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 *CirclesPatchCall) Do(opts ...googleapi.CallOption) (*Circle, 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 := &Circle{
-		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": "Update a circle's description. This method supports patch semantics.",
-	//   "httpMethod": "PATCH",
-	//   "id": "plusDomains.circles.patch",
-	//   "parameterOrder": [
-	//     "circleId"
-	//   ],
-	//   "parameters": {
-	//     "circleId": {
-	//       "description": "The ID of the circle to update.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "circles/{circleId}",
-	//   "request": {
-	//     "$ref": "Circle"
-	//   },
-	//   "response": {
-	//     "$ref": "Circle"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.circles.write",
-	//     "https://www.googleapis.com/auth/plus.login"
-	//   ]
-	// }
-
-}
-
-// method id "plusDomains.circles.remove":
-
-type CirclesRemoveCall struct {
-	s          *Service
-	circleId   string
-	urlParams_ gensupport.URLParams
-	ctx_       context.Context
-	header_    http.Header
-}
-
-// Remove: Delete a circle.
-func (r *CirclesService) Remove(circleId string) *CirclesRemoveCall {
-	c := &CirclesRemoveCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.circleId = circleId
-	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 *CirclesRemoveCall) Fields(s ...googleapi.Field) *CirclesRemoveCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *CirclesRemoveCall) Context(ctx context.Context) *CirclesRemoveCall {
-	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 *CirclesRemoveCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *CirclesRemoveCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "circles/{circleId}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("DELETE", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"circleId": c.circleId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "plusDomains.circles.remove" call.
-func (c *CirclesRemoveCall) Do(opts ...googleapi.CallOption) error {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if err != nil {
-		return err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return err
-	}
-	return nil
-	// {
-	//   "description": "Delete a circle.",
-	//   "httpMethod": "DELETE",
-	//   "id": "plusDomains.circles.remove",
-	//   "parameterOrder": [
-	//     "circleId"
-	//   ],
-	//   "parameters": {
-	//     "circleId": {
-	//       "description": "The ID of the circle to delete.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "circles/{circleId}",
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.circles.write",
-	//     "https://www.googleapis.com/auth/plus.login"
-	//   ]
-	// }
-
-}
-
-// method id "plusDomains.circles.removePeople":
-
-type CirclesRemovePeopleCall struct {
-	s          *Service
-	circleId   string
-	urlParams_ gensupport.URLParams
-	ctx_       context.Context
-	header_    http.Header
-}
-
-// RemovePeople: Remove a person from a circle.
-func (r *CirclesService) RemovePeople(circleId string) *CirclesRemovePeopleCall {
-	c := &CirclesRemovePeopleCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.circleId = circleId
-	return c
-}
-
-// Email sets the optional parameter "email": Email of the people to add
-// to the circle. Optional, can be repeated.
-func (c *CirclesRemovePeopleCall) Email(email ...string) *CirclesRemovePeopleCall {
-	c.urlParams_.SetMulti("email", append([]string{}, email...))
-	return c
-}
-
-// UserId sets the optional parameter "userId": IDs of the people to
-// remove from the circle. Optional, can be repeated.
-func (c *CirclesRemovePeopleCall) UserId(userId ...string) *CirclesRemovePeopleCall {
-	c.urlParams_.SetMulti("userId", append([]string{}, userId...))
-	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 *CirclesRemovePeopleCall) Fields(s ...googleapi.Field) *CirclesRemovePeopleCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *CirclesRemovePeopleCall) Context(ctx context.Context) *CirclesRemovePeopleCall {
-	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 *CirclesRemovePeopleCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *CirclesRemovePeopleCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "circles/{circleId}/people")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("DELETE", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"circleId": c.circleId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "plusDomains.circles.removePeople" call.
-func (c *CirclesRemovePeopleCall) Do(opts ...googleapi.CallOption) error {
-	gensupport.SetOptions(c.urlParams_, opts...)
-	res, err := c.doRequest("json")
-	if err != nil {
-		return err
-	}
-	defer googleapi.CloseBody(res)
-	if err := googleapi.CheckResponse(res); err != nil {
-		return err
-	}
-	return nil
-	// {
-	//   "description": "Remove a person from a circle.",
-	//   "httpMethod": "DELETE",
-	//   "id": "plusDomains.circles.removePeople",
-	//   "parameterOrder": [
-	//     "circleId"
-	//   ],
-	//   "parameters": {
-	//     "circleId": {
-	//       "description": "The ID of the circle to remove the person from.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "email": {
-	//       "description": "Email of the people to add to the circle. Optional, can be repeated.",
-	//       "location": "query",
-	//       "repeated": true,
-	//       "type": "string"
-	//     },
-	//     "userId": {
-	//       "description": "IDs of the people to remove from the circle. Optional, can be repeated.",
-	//       "location": "query",
-	//       "repeated": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "circles/{circleId}/people",
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.circles.write",
-	//     "https://www.googleapis.com/auth/plus.login"
-	//   ]
-	// }
-
-}
-
-// method id "plusDomains.circles.update":
-
-type CirclesUpdateCall struct {
-	s          *Service
-	circleId   string
-	circle     *Circle
-	urlParams_ gensupport.URLParams
-	ctx_       context.Context
-	header_    http.Header
-}
-
-// Update: Update a circle's description.
-func (r *CirclesService) Update(circleId string, circle *Circle) *CirclesUpdateCall {
-	c := &CirclesUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.circleId = circleId
-	c.circle = circle
-	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 *CirclesUpdateCall) Fields(s ...googleapi.Field) *CirclesUpdateCall {
-	c.urlParams_.Set("fields", googleapi.CombineFields(s))
-	return c
-}
-
-// Context sets the context to be used in this call's Do method. Any
-// pending HTTP request will be aborted if the provided context is
-// canceled.
-func (c *CirclesUpdateCall) Context(ctx context.Context) *CirclesUpdateCall {
-	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 *CirclesUpdateCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *CirclesUpdateCall) doRequest(alt string) (*http.Response, error) {
-	reqHeaders := make(http.Header)
-	for k, v := range c.header_ {
-		reqHeaders[k] = v
-	}
-	reqHeaders.Set("User-Agent", c.s.userAgent())
-	var body io.Reader = nil
-	body, err := googleapi.WithoutDataWrapper.JSONReader(c.circle)
-	if err != nil {
-		return nil, err
-	}
-	reqHeaders.Set("Content-Type", "application/json")
-	c.urlParams_.Set("alt", alt)
-	c.urlParams_.Set("prettyPrint", "false")
-	urls := googleapi.ResolveRelative(c.s.BasePath, "circles/{circleId}")
-	urls += "?" + c.urlParams_.Encode()
-	req, err := http.NewRequest("PUT", urls, body)
-	if err != nil {
-		return nil, err
-	}
-	req.Header = reqHeaders
-	googleapi.Expand(req.URL, map[string]string{
-		"circleId": c.circleId,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "plusDomains.circles.update" call.
-// Exactly one of *Circle or error will be non-nil. Any non-2xx status
-// code is an error. Response headers are in either
-// *Circle.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 *CirclesUpdateCall) Do(opts ...googleapi.CallOption) (*Circle, 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 := &Circle{
-		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": "Update a circle's description.",
-	//   "httpMethod": "PUT",
-	//   "id": "plusDomains.circles.update",
-	//   "parameterOrder": [
-	//     "circleId"
-	//   ],
-	//   "parameters": {
-	//     "circleId": {
-	//       "description": "The ID of the circle to update.",
-	//       "location": "path",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "circles/{circleId}",
-	//   "request": {
-	//     "$ref": "Circle"
-	//   },
-	//   "response": {
-	//     "$ref": "Circle"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/plus.circles.write",
-	//     "https://www.googleapis.com/auth/plus.login"
-	//   ]
-	// }
-
-}
-
 // method id "plusDomains.comments.get":
 
 type CommentsGetCall struct {
diff --git a/runtimeconfig/v1beta1/runtimeconfig-api.json b/runtimeconfig/v1beta1/runtimeconfig-api.json
index f91df7c..dbd38b6 100644
--- a/runtimeconfig/v1beta1/runtimeconfig-api.json
+++ b/runtimeconfig/v1beta1/runtimeconfig-api.json
@@ -798,7 +798,7 @@
       }
     }
   },
-  "revision": "20190311",
+  "revision": "20190325",
   "rootUrl": "https://runtimeconfig.googleapis.com/",
   "schemas": {
     "Binding": {
@@ -807,7 +807,7 @@
       "properties": {
         "condition": {
           "$ref": "Expr",
-          "description": "Unimplemented. The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
+          "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently."
         },
         "members": {
           "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n   on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n   who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n   account. For example, `alice@gmail.com` .\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n   account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n   For example, `admins@example.com`.\n\n\n* `domain:{domain}`: The G Suite domain (primary) that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
diff --git a/runtimeconfig/v1beta1/runtimeconfig-gen.go b/runtimeconfig/v1beta1/runtimeconfig-gen.go
index a213ec9..2cc261e 100644
--- a/runtimeconfig/v1beta1/runtimeconfig-gen.go
+++ b/runtimeconfig/v1beta1/runtimeconfig-gen.go
@@ -197,8 +197,7 @@
 
 // Binding: Associates `members` with a `role`.
 type Binding struct {
-	// Condition: Unimplemented. The condition that is associated with this
-	// binding.
+	// Condition: The condition that is associated with this binding.
 	// NOTE: an unsatisfied condition will not allow user access via
 	// current
 	// binding. Different bindings, including their conditions, are
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
index bba1c09..2ec8b26 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
@@ -331,7 +331,7 @@
               ]
             },
             "attachProject": {
-              "description": "Attach an existing project to the tenancy unit as a new tenant\nresource. The project could either be the tenant project reserved by\ncalling `AddTenantProject` under a tenancy unit of a service producer's\nproject of a managed service, or from a separate project.\nThe caller is checked against a set of permissions as if calling\n`AddTenantProject` on the same service consumer.\nTo trigger the attachement, the targeted tenant project must be in a\nfolder. Make sure the ServiceConsumerManagement service account is\nthe owner of that project. These two requirements are already met\nif the project is reserved by calling `AddTenantProject`.\nOperation\u003cresponse: Empty\u003e.",
+              "description": "Attach an existing project to the tenancy unit as a new tenant\nresource. The project could either be the tenant project reserved by\ncalling `AddTenantProject` under a tenancy unit of a service producer's\nproject of a managed service, or from a separate project.\nThe caller is checked against a set of permissions as if calling\n`AddTenantProject` on the same service consumer.\nTo trigger the attachment, the targeted tenant project must be in a\nfolder. Make sure the ServiceConsumerManagement service account is\nthe owner of that project. These two requirements are already met\nif the project is reserved by calling `AddTenantProject`.\nOperation\u003cresponse: Empty\u003e.",
               "flatPath": "v1/services/{servicesId}/{servicesId1}/{servicesId2}/tenancyUnits/{tenancyUnitsId}:attachProject",
               "httpMethod": "POST",
               "id": "serviceconsumermanagement.services.tenancyUnits.attachProject",
@@ -485,7 +485,7 @@
       }
     }
   },
-  "revision": "20190320",
+  "revision": "20190325",
   "rootUrl": "https://serviceconsumermanagement.googleapis.com/",
   "schemas": {
     "AddTenantProjectRequest": {
@@ -575,7 +575,7 @@
       "id": "AttachTenantProjectRequest",
       "properties": {
         "externalResource": {
-          "description": "When attaching an external project, this is in the format of\n`projects/{project_number}’.",
+          "description": "When attaching an external project, this is in the format of\n`projects/{project_number}`.",
           "type": "string"
         },
         "reservedResource": {
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
index 5735d9a..5c7697c 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
@@ -336,7 +336,7 @@
 type AttachTenantProjectRequest struct {
 	// ExternalResource: When attaching an external project, this is in the
 	// format of
-	// `projects/{project_number}’.
+	// `projects/{project_number}`.
 	ExternalResource string `json:"externalResource,omitempty"`
 
 	// ReservedResource: When attaching a reserved project already in
@@ -5908,7 +5908,7 @@
 // The caller is checked against a set of permissions as if
 // calling
 // `AddTenantProject` on the same service consumer.
-// To trigger the attachement, the targeted tenant project must be in
+// To trigger the attachment, the targeted tenant project must be in
 // a
 // folder. Make sure the ServiceConsumerManagement service account
 // is
@@ -6013,7 +6013,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Attach an existing project to the tenancy unit as a new tenant\nresource. The project could either be the tenant project reserved by\ncalling `AddTenantProject` under a tenancy unit of a service producer's\nproject of a managed service, or from a separate project.\nThe caller is checked against a set of permissions as if calling\n`AddTenantProject` on the same service consumer.\nTo trigger the attachement, the targeted tenant project must be in a\nfolder. Make sure the ServiceConsumerManagement service account is\nthe owner of that project. These two requirements are already met\nif the project is reserved by calling `AddTenantProject`.\nOperation\u003cresponse: Empty\u003e.",
+	//   "description": "Attach an existing project to the tenancy unit as a new tenant\nresource. The project could either be the tenant project reserved by\ncalling `AddTenantProject` under a tenancy unit of a service producer's\nproject of a managed service, or from a separate project.\nThe caller is checked against a set of permissions as if calling\n`AddTenantProject` on the same service consumer.\nTo trigger the attachment, the targeted tenant project must be in a\nfolder. Make sure the ServiceConsumerManagement service account is\nthe owner of that project. These two requirements are already met\nif the project is reserved by calling `AddTenantProject`.\nOperation\u003cresponse: Empty\u003e.",
 	//   "flatPath": "v1/services/{servicesId}/{servicesId1}/{servicesId2}/tenancyUnits/{tenancyUnitsId}:attachProject",
 	//   "httpMethod": "POST",
 	//   "id": "serviceconsumermanagement.services.tenancyUnits.attachProject",
diff --git a/speech/v1/speech-api.json b/speech/v1/speech-api.json
index c0501c2..ef8fbe8 100644
--- a/speech/v1/speech-api.json
+++ b/speech/v1/speech-api.json
@@ -284,7 +284,7 @@
     "speech": {
       "methods": {
         "longrunningrecognize": {
-          "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.",
+          "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.\nFor more information on asynchronous speech recognition, see the\n[how-to](https://cloud.google.com/speech-to-text/docs/async-recognize).",
           "flatPath": "v1/speech:longrunningrecognize",
           "httpMethod": "POST",
           "id": "speech.speech.longrunningrecognize",
@@ -322,7 +322,7 @@
       }
     }
   },
-  "revision": "20190309",
+  "revision": "20190321",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
     "ListOperationsResponse": {
@@ -512,7 +512,7 @@
           "type": "boolean"
         },
         "sampleRateHertz": {
-          "description": "Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling).\nThis field is optional for `FLAC`,  `WAV`. and 'MP3' audio files, and is\nrequired for all other audio formats. For details, see AudioEncoding.",
+          "description": "Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling).\nThis field is optional for FLAC and WAV audio files, but is\nrequired for all other audio formats. For details, see AudioEncoding.",
           "format": "int32",
           "type": "integer"
         },
diff --git a/speech/v1/speech-gen.go b/speech/v1/speech-gen.go
index 37912c4..762a39d 100644
--- a/speech/v1/speech-gen.go
+++ b/speech/v1/speech-gen.go
@@ -678,8 +678,7 @@
 	// source to 16000 Hz. If that's not possible, use the native sample
 	// rate of
 	// the audio source (instead of re-sampling).
-	// This field is optional for `FLAC`,  `WAV`. and 'MP3' audio files, and
-	// is
+	// This field is optional for FLAC and WAV audio files, but is
 	// required for all other audio formats. For details, see AudioEncoding.
 	SampleRateHertz int64 `json:"sampleRateHertz,omitempty"`
 
@@ -2137,6 +2136,10 @@
 // an
 // `Operation.error` or an `Operation.response` which contains
 // a `LongRunningRecognizeResponse` message.
+// For more information on asynchronous speech recognition, see
+// the
+// [how-to](https://cloud.google.com/speech-to-text/docs/async-recogn
+// ize).
 func (r *SpeechService) Longrunningrecognize(longrunningrecognizerequest *LongRunningRecognizeRequest) *SpeechLongrunningrecognizeCall {
 	c := &SpeechLongrunningrecognizeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.longrunningrecognizerequest = longrunningrecognizerequest
@@ -2230,7 +2233,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.",
+	//   "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.\nFor more information on asynchronous speech recognition, see the\n[how-to](https://cloud.google.com/speech-to-text/docs/async-recognize).",
 	//   "flatPath": "v1/speech:longrunningrecognize",
 	//   "httpMethod": "POST",
 	//   "id": "speech.speech.longrunningrecognize",
diff --git a/speech/v1p1beta1/speech-api.json b/speech/v1p1beta1/speech-api.json
index a517609..2b30607 100644
--- a/speech/v1p1beta1/speech-api.json
+++ b/speech/v1p1beta1/speech-api.json
@@ -284,7 +284,7 @@
     "speech": {
       "methods": {
         "longrunningrecognize": {
-          "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.",
+          "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.\nFor more information on asynchronous speech recognition, see the\n[how-to](https://cloud.google.com/speech-to-text/docs/async-recognize).",
           "flatPath": "v1p1beta1/speech:longrunningrecognize",
           "httpMethod": "POST",
           "id": "speech.speech.longrunningrecognize",
@@ -322,7 +322,7 @@
       }
     }
   },
-  "revision": "20190309",
+  "revision": "20190321",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
     "ListOperationsResponse": {
@@ -536,7 +536,7 @@
           "type": "boolean"
         },
         "sampleRateHertz": {
-          "description": "Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling).\nThis field is optional for `FLAC`,  `WAV`. and 'MP3' audio files, and is\nrequired for all other audio formats. For details, see AudioEncoding.",
+          "description": "Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling).\nThis field is optional for FLAC and WAV audio files, but is\nrequired for all other audio formats. For details, see AudioEncoding.",
           "format": "int32",
           "type": "integer"
         },
diff --git a/speech/v1p1beta1/speech-gen.go b/speech/v1p1beta1/speech-gen.go
index 410f838..5325149 100644
--- a/speech/v1p1beta1/speech-gen.go
+++ b/speech/v1p1beta1/speech-gen.go
@@ -740,8 +740,7 @@
 	// source to 16000 Hz. If that's not possible, use the native sample
 	// rate of
 	// the audio source (instead of re-sampling).
-	// This field is optional for `FLAC`,  `WAV`. and 'MP3' audio files, and
-	// is
+	// This field is optional for FLAC and WAV audio files, but is
 	// required for all other audio formats. For details, see AudioEncoding.
 	SampleRateHertz int64 `json:"sampleRateHertz,omitempty"`
 
@@ -2302,6 +2301,10 @@
 // an
 // `Operation.error` or an `Operation.response` which contains
 // a `LongRunningRecognizeResponse` message.
+// For more information on asynchronous speech recognition, see
+// the
+// [how-to](https://cloud.google.com/speech-to-text/docs/async-recogn
+// ize).
 func (r *SpeechService) Longrunningrecognize(longrunningrecognizerequest *LongRunningRecognizeRequest) *SpeechLongrunningrecognizeCall {
 	c := &SpeechLongrunningrecognizeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.longrunningrecognizerequest = longrunningrecognizerequest
@@ -2395,7 +2398,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.",
+	//   "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.\nFor more information on asynchronous speech recognition, see the\n[how-to](https://cloud.google.com/speech-to-text/docs/async-recognize).",
 	//   "flatPath": "v1p1beta1/speech:longrunningrecognize",
 	//   "httpMethod": "POST",
 	//   "id": "speech.speech.longrunningrecognize",
diff --git a/sqladmin/v1beta4/sqladmin-api.json b/sqladmin/v1beta4/sqladmin-api.json
index 987afbf..a10f444 100644
--- a/sqladmin/v1beta4/sqladmin-api.json
+++ b/sqladmin/v1beta4/sqladmin-api.json
@@ -18,7 +18,7 @@
   "description": "Creates and manages Cloud SQL instances, which provide fully managed MySQL or PostgreSQL databases.",
   "discoveryVersion": "v1",
   "documentationLink": "https://cloud.google.com/sql/docs/reference/latest",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/2iqty9BfrMwLkciRepiZNQ6hSSI\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/wGBhTkuWyZ0oYP0mBe20xu7sCu8\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -1617,7 +1617,7 @@
       }
     }
   },
-  "revision": "20190213",
+  "revision": "20190313",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AclEntry": {
@@ -1909,6 +1909,14 @@
           "description": "The database engine type and version. The databaseVersion field can not be changed after instance creation. MySQL Second Generation instances: MYSQL_5_7 (default) or MYSQL_5_6. PostgreSQL instances: POSTGRES_9_6 MySQL First Generation instances: MYSQL_5_6 (default) or MYSQL_5_5",
           "type": "string"
         },
+        "diskEncryptionConfiguration": {
+          "$ref": "DiskEncryptionConfiguration",
+          "description": "Disk encryption configuration specific to an instance. Applies only to Second Generation instances."
+        },
+        "diskEncryptionStatus": {
+          "$ref": "DiskEncryptionStatus",
+          "description": "Disk encryption status specific to an instance. Applies only to Second Generation instances."
+        },
         "etag": {
           "description": "This field is deprecated and will be removed from a future version of the API. Use the settings.settingsVersion field instead.",
           "type": "string"
@@ -2119,6 +2127,38 @@
       },
       "type": "object"
     },
+    "DiskEncryptionConfiguration": {
+      "description": "Disk encryption configuration.",
+      "id": "DiskEncryptionConfiguration",
+      "properties": {
+        "kind": {
+          "default": "sql#diskEncryptionConfiguration",
+          "description": "This is always sql#diskEncryptionConfiguration.",
+          "type": "string"
+        },
+        "kmsKeyName": {
+          "description": "KMS key resource name",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "DiskEncryptionStatus": {
+      "description": "Disk encryption status.",
+      "id": "DiskEncryptionStatus",
+      "properties": {
+        "kind": {
+          "default": "sql#diskEncryptionStatus",
+          "description": "This is always sql#diskEncryptionStatus.",
+          "type": "string"
+        },
+        "kmsKeyVersionName": {
+          "description": "KMS key version used to encrypt the Cloud SQL instance disk",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "ExportContext": {
       "description": "Database instance export context.",
       "id": "ExportContext",
diff --git a/sqladmin/v1beta4/sqladmin-gen.go b/sqladmin/v1beta4/sqladmin-gen.go
index e8aec1a..dde9fbf 100644
--- a/sqladmin/v1beta4/sqladmin-gen.go
+++ b/sqladmin/v1beta4/sqladmin-gen.go
@@ -657,6 +657,14 @@
 	// MYSQL_5_6 (default) or MYSQL_5_5
 	DatabaseVersion string `json:"databaseVersion,omitempty"`
 
+	// DiskEncryptionConfiguration: Disk encryption configuration specific
+	// to an instance. Applies only to Second Generation instances.
+	DiskEncryptionConfiguration *DiskEncryptionConfiguration `json:"diskEncryptionConfiguration,omitempty"`
+
+	// DiskEncryptionStatus: Disk encryption status specific to an instance.
+	// Applies only to Second Generation instances.
+	DiskEncryptionStatus *DiskEncryptionStatus `json:"diskEncryptionStatus,omitempty"`
+
 	// Etag: This field is deprecated and will be removed from a future
 	// version of the API. Use the settings.settingsVersion field instead.
 	Etag string `json:"etag,omitempty"`
@@ -986,6 +994,69 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// DiskEncryptionConfiguration: Disk encryption configuration.
+type DiskEncryptionConfiguration struct {
+	// Kind: This is always sql#diskEncryptionConfiguration.
+	Kind string `json:"kind,omitempty"`
+
+	// KmsKeyName: KMS key resource name
+	KmsKeyName string `json:"kmsKeyName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") 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. "Kind") 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 *DiskEncryptionConfiguration) MarshalJSON() ([]byte, error) {
+	type NoMethod DiskEncryptionConfiguration
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// DiskEncryptionStatus: Disk encryption status.
+type DiskEncryptionStatus struct {
+	// Kind: This is always sql#diskEncryptionStatus.
+	Kind string `json:"kind,omitempty"`
+
+	// KmsKeyVersionName: KMS key version used to encrypt the Cloud SQL
+	// instance disk
+	KmsKeyVersionName string `json:"kmsKeyVersionName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Kind") 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. "Kind") 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 *DiskEncryptionStatus) MarshalJSON() ([]byte, error) {
+	type NoMethod DiskEncryptionStatus
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // ExportContext: Database instance export context.
 type ExportContext struct {
 	// CsvExportOptions: Options for exporting data as CSV.
diff --git a/testing/v1/testing-api.json b/testing/v1/testing-api.json
index 88a6a8b..52d2d72 100644
--- a/testing/v1/testing-api.json
+++ b/testing/v1/testing-api.json
@@ -272,7 +272,7 @@
       }
     }
   },
-  "revision": "20190301",
+  "revision": "20190325",
   "rootUrl": "https://testing.googleapis.com/",
   "schemas": {
     "Account": {
@@ -1729,10 +1729,6 @@
           "$ref": "AndroidTestLoop",
           "description": "An Android Application with a Test Loop."
         },
-        "autoGoogleLogin": {
-          "description": "Enables automatic Google account login.\nIf set, the service will automatically generate a Google test account and\nadd it to the device, before executing the test. Note that test accounts\nmight be reused.\nMany applications show their full set of functionalities when an account is\npresent on the device. Logging into the device with these generated\naccounts allows testing more functionalities.\nDefault is false.",
-          "type": "boolean"
-        },
         "disablePerformanceMetrics": {
           "description": "Disables performance metrics recording; may reduce test latency.",
           "type": "boolean"
diff --git a/testing/v1/testing-gen.go b/testing/v1/testing-gen.go
index dc3145b..ffc3bc0 100644
--- a/testing/v1/testing-gen.go
+++ b/testing/v1/testing-gen.go
@@ -2759,20 +2759,6 @@
 	// AndroidTestLoop: An Android Application with a Test Loop.
 	AndroidTestLoop *AndroidTestLoop `json:"androidTestLoop,omitempty"`
 
-	// AutoGoogleLogin: Enables automatic Google account login.
-	// If set, the service will automatically generate a Google test account
-	// and
-	// add it to the device, before executing the test. Note that test
-	// accounts
-	// might be reused.
-	// Many applications show their full set of functionalities when an
-	// account is
-	// present on the device. Logging into the device with these
-	// generated
-	// accounts allows testing more functionalities.
-	// Default is false.
-	AutoGoogleLogin bool `json:"autoGoogleLogin,omitempty"`
-
 	// DisablePerformanceMetrics: Disables performance metrics recording;
 	// may reduce test latency.
 	DisablePerformanceMetrics bool `json:"disablePerformanceMetrics,omitempty"`
diff --git a/websecurityscanner/v1beta/websecurityscanner-api.json b/websecurityscanner/v1beta/websecurityscanner-api.json
new file mode 100644
index 0000000..f6f9cb6
--- /dev/null
+++ b/websecurityscanner/v1beta/websecurityscanner-api.json
@@ -0,0 +1,1279 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://websecurityscanner.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "WebSecurityScanner",
+  "description": "Scans your Compute and App Engine apps for common web vulnerabilities.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/security-scanner/",
+  "fullyEncodeReservedExpansion": true,
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "id": "websecurityscanner:v1beta",
+  "kind": "discovery#restDescription",
+  "name": "websecurityscanner",
+  "ownerDomain": "google.com",
+  "ownerName": "Google",
+  "parameters": {
+    "$.xgafv": {
+      "description": "V1 error format.",
+      "enum": [
+        "1",
+        "2"
+      ],
+      "enumDescriptions": [
+        "v1 error format",
+        "v2 error format"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "access_token": {
+      "description": "OAuth access token.",
+      "location": "query",
+      "type": "string"
+    },
+    "alt": {
+      "default": "json",
+      "description": "Data format for response.",
+      "enum": [
+        "json",
+        "media",
+        "proto"
+      ],
+      "enumDescriptions": [
+        "Responses with Content-Type of application/json",
+        "Media download with context-dependent Content-Type",
+        "Responses with Content-Type of application/x-protobuf"
+      ],
+      "location": "query",
+      "type": "string"
+    },
+    "callback": {
+      "description": "JSONP",
+      "location": "query",
+      "type": "string"
+    },
+    "fields": {
+      "description": "Selector specifying which fields to include in a partial response.",
+      "location": "query",
+      "type": "string"
+    },
+    "key": {
+      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+      "location": "query",
+      "type": "string"
+    },
+    "oauth_token": {
+      "description": "OAuth 2.0 token for the current user.",
+      "location": "query",
+      "type": "string"
+    },
+    "prettyPrint": {
+      "default": "true",
+      "description": "Returns response with indentations and line breaks.",
+      "location": "query",
+      "type": "boolean"
+    },
+    "quotaUser": {
+      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+      "location": "query",
+      "type": "string"
+    },
+    "uploadType": {
+      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    },
+    "upload_protocol": {
+      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+      "location": "query",
+      "type": "string"
+    }
+  },
+  "protocol": "rest",
+  "resources": {
+    "projects": {
+      "resources": {
+        "scanConfigs": {
+          "methods": {
+            "create": {
+              "description": "Creates a new ScanConfig.",
+              "flatPath": "v1beta/projects/{projectsId}/scanConfigs",
+              "httpMethod": "POST",
+              "id": "websecurityscanner.projects.scanConfigs.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "Required.\nThe parent resource name where the scan is created, which should be a\nproject resource name in the format 'projects/{projectId}'.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta/{+parent}/scanConfigs",
+              "request": {
+                "$ref": "ScanConfig"
+              },
+              "response": {
+                "$ref": "ScanConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "delete": {
+              "description": "Deletes an existing ScanConfig and its child resources.",
+              "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+              "httpMethod": "DELETE",
+              "id": "websecurityscanner.projects.scanConfigs.delete",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "Required.\nThe resource name of the ScanConfig to be deleted. The name follows the\nformat of 'projects/{projectId}/scanConfigs/{scanConfigId}'.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta/{+name}",
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "get": {
+              "description": "Gets a ScanConfig.",
+              "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+              "httpMethod": "GET",
+              "id": "websecurityscanner.projects.scanConfigs.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "Required.\nThe resource name of the ScanConfig to be returned. The name follows the\nformat of 'projects/{projectId}/scanConfigs/{scanConfigId}'.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta/{+name}",
+              "response": {
+                "$ref": "ScanConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists ScanConfigs under a given project.",
+              "flatPath": "v1beta/projects/{projectsId}/scanConfigs",
+              "httpMethod": "GET",
+              "id": "websecurityscanner.projects.scanConfigs.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "pageSize": {
+                  "description": "The maximum number of ScanConfigs to return, can be limited by server.\nIf not specified or not positive, the implementation will select a\nreasonable value.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "A token identifying a page of results to be returned. This should be a\n`next_page_token` value returned from a previous List request.\nIf unspecified, the first page of results is returned.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "Required.\nThe parent resource name, which should be a project resource name in the\nformat 'projects/{projectId}'.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta/{+parent}/scanConfigs",
+              "response": {
+                "$ref": "ListScanConfigsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "patch": {
+              "description": "Updates a ScanConfig. This method support partial update of a ScanConfig.",
+              "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+              "httpMethod": "PATCH",
+              "id": "websecurityscanner.projects.scanConfigs.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The resource name of the ScanConfig. The name follows the format of\n'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are\ngenerated by the system.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "Required.\nThe update mask applies to the resource. For the `FieldMask` definition,\nsee\nhttps://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1beta/{+name}",
+              "request": {
+                "$ref": "ScanConfig"
+              },
+              "response": {
+                "$ref": "ScanConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "start": {
+              "description": "Start a ScanRun according to the given ScanConfig.",
+              "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}:start",
+              "httpMethod": "POST",
+              "id": "websecurityscanner.projects.scanConfigs.start",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "Required.\nThe resource name of the ScanConfig to be used. The name follows the\nformat of 'projects/{projectId}/scanConfigs/{scanConfigId}'.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta/{+name}:start",
+              "request": {
+                "$ref": "StartScanRunRequest"
+              },
+              "response": {
+                "$ref": "ScanRun"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          },
+          "resources": {
+            "scanRuns": {
+              "methods": {
+                "get": {
+                  "description": "Gets a ScanRun.",
+                  "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}",
+                  "httpMethod": "GET",
+                  "id": "websecurityscanner.projects.scanConfigs.scanRuns.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required.\nThe resource name of the ScanRun to be returned. The name follows the\nformat of\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta/{+name}",
+                  "response": {
+                    "$ref": "ScanRun"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists ScanRuns under a given ScanConfig, in descending order of ScanRun\nstop time.",
+                  "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns",
+                  "httpMethod": "GET",
+                  "id": "websecurityscanner.projects.scanConfigs.scanRuns.list",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "pageSize": {
+                      "description": "The maximum number of ScanRuns to return, can be limited by server.\nIf not specified or not positive, the implementation will select a\nreasonable value.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "A token identifying a page of results to be returned. This should be a\n`next_page_token` value returned from a previous List request.\nIf unspecified, the first page of results is returned.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "parent": {
+                      "description": "Required.\nThe parent resource name, which should be a scan resource name in the\nformat 'projects/{projectId}/scanConfigs/{scanConfigId}'.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta/{+parent}/scanRuns",
+                  "response": {
+                    "$ref": "ListScanRunsResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "stop": {
+                  "description": "Stops a ScanRun. The stopped ScanRun is returned.",
+                  "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}:stop",
+                  "httpMethod": "POST",
+                  "id": "websecurityscanner.projects.scanConfigs.scanRuns.stop",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Required.\nThe resource name of the ScanRun to be stopped. The name follows the\nformat of\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta/{+name}:stop",
+                  "request": {
+                    "$ref": "StopScanRunRequest"
+                  },
+                  "response": {
+                    "$ref": "ScanRun"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              },
+              "resources": {
+                "crawledUrls": {
+                  "methods": {
+                    "list": {
+                      "description": "List CrawledUrls under a given ScanRun.",
+                      "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}/crawledUrls",
+                      "httpMethod": "GET",
+                      "id": "websecurityscanner.projects.scanConfigs.scanRuns.crawledUrls.list",
+                      "parameterOrder": [
+                        "parent"
+                      ],
+                      "parameters": {
+                        "pageSize": {
+                          "description": "The maximum number of CrawledUrls to return, can be limited by server.\nIf not specified or not positive, the implementation will select a\nreasonable value.",
+                          "format": "int32",
+                          "location": "query",
+                          "type": "integer"
+                        },
+                        "pageToken": {
+                          "description": "A token identifying a page of results to be returned. This should be a\n`next_page_token` value returned from a previous List request.\nIf unspecified, the first page of results is returned.",
+                          "location": "query",
+                          "type": "string"
+                        },
+                        "parent": {
+                          "description": "Required.\nThe parent resource name, which should be a scan run resource name in the\nformat\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "v1beta/{+parent}/crawledUrls",
+                      "response": {
+                        "$ref": "ListCrawledUrlsResponse"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    }
+                  }
+                },
+                "findingTypeStats": {
+                  "methods": {
+                    "list": {
+                      "description": "List all FindingTypeStats under a given ScanRun.",
+                      "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}/findingTypeStats",
+                      "httpMethod": "GET",
+                      "id": "websecurityscanner.projects.scanConfigs.scanRuns.findingTypeStats.list",
+                      "parameterOrder": [
+                        "parent"
+                      ],
+                      "parameters": {
+                        "parent": {
+                          "description": "Required.\nThe parent resource name, which should be a scan run resource name in the\nformat\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "v1beta/{+parent}/findingTypeStats",
+                      "response": {
+                        "$ref": "ListFindingTypeStatsResponse"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    }
+                  }
+                },
+                "findings": {
+                  "methods": {
+                    "get": {
+                      "description": "Gets a Finding.",
+                      "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}/findings/{findingsId}",
+                      "httpMethod": "GET",
+                      "id": "websecurityscanner.projects.scanConfigs.scanRuns.findings.get",
+                      "parameterOrder": [
+                        "name"
+                      ],
+                      "parameters": {
+                        "name": {
+                          "description": "Required.\nThe resource name of the Finding to be returned. The name follows the\nformat of\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}/findings/{findingId}'.",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+/findings/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "v1beta/{+name}",
+                      "response": {
+                        "$ref": "Finding"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    },
+                    "list": {
+                      "description": "List Findings under a given ScanRun.",
+                      "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}/findings",
+                      "httpMethod": "GET",
+                      "id": "websecurityscanner.projects.scanConfigs.scanRuns.findings.list",
+                      "parameterOrder": [
+                        "parent"
+                      ],
+                      "parameters": {
+                        "filter": {
+                          "description": "The filter expression. The expression must be in the format: \u003cfield\u003e\n\u003coperator\u003e \u003cvalue\u003e.\nSupported field: 'finding_type'.\nSupported operator: '='.",
+                          "location": "query",
+                          "type": "string"
+                        },
+                        "pageSize": {
+                          "description": "The maximum number of Findings to return, can be limited by server.\nIf not specified or not positive, the implementation will select a\nreasonable value.",
+                          "format": "int32",
+                          "location": "query",
+                          "type": "integer"
+                        },
+                        "pageToken": {
+                          "description": "A token identifying a page of results to be returned. This should be a\n`next_page_token` value returned from a previous List request.\nIf unspecified, the first page of results is returned.",
+                          "location": "query",
+                          "type": "string"
+                        },
+                        "parent": {
+                          "description": "Required.\nThe parent resource name, which should be a scan run resource name in the\nformat\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "v1beta/{+parent}/findings",
+                      "response": {
+                        "$ref": "ListFindingsResponse"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20190323",
+  "rootUrl": "https://websecurityscanner.googleapis.com/",
+  "schemas": {
+    "Authentication": {
+      "description": "Scan authentication configuration.",
+      "id": "Authentication",
+      "properties": {
+        "customAccount": {
+          "$ref": "CustomAccount",
+          "description": "Authentication using a custom account."
+        },
+        "googleAccount": {
+          "$ref": "GoogleAccount",
+          "description": "Authentication using a Google account."
+        }
+      },
+      "type": "object"
+    },
+    "CrawledUrl": {
+      "description": "A CrawledUrl resource represents a URL that was crawled during a ScanRun. Web\nSecurity Scanner Service crawls the web applications, following all links\nwithin the scope of sites, to find the URLs to test against.",
+      "id": "CrawledUrl",
+      "properties": {
+        "body": {
+          "description": "Output only.\nThe body of the request that was used to visit the URL.",
+          "type": "string"
+        },
+        "httpMethod": {
+          "description": "Output only.\nThe http method of the request that was used to visit the URL, in\nuppercase.",
+          "type": "string"
+        },
+        "url": {
+          "description": "Output only.\nThe URL that was crawled.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "CustomAccount": {
+      "description": "Describes authentication configuration that uses a custom account.",
+      "id": "CustomAccount",
+      "properties": {
+        "loginUrl": {
+          "description": "Required.\nThe login form URL of the website.",
+          "type": "string"
+        },
+        "password": {
+          "description": "Input only.\nRequired.\nThe password of the custom account. The credential is stored encrypted\nand not returned in any response nor included in audit logs.",
+          "type": "string"
+        },
+        "username": {
+          "description": "Required.\nThe user name of the custom account.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Empty": {
+      "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+      "id": "Empty",
+      "properties": {},
+      "type": "object"
+    },
+    "Finding": {
+      "description": "A Finding resource represents a vulnerability instance identified during a\nScanRun.",
+      "id": "Finding",
+      "properties": {
+        "body": {
+          "description": "Output only.\nThe body of the request that triggered the vulnerability.",
+          "type": "string"
+        },
+        "description": {
+          "description": "Output only.\nThe description of the vulnerability.",
+          "type": "string"
+        },
+        "finalUrl": {
+          "description": "Output only.\nThe URL where the browser lands when the vulnerability is detected.",
+          "type": "string"
+        },
+        "findingType": {
+          "description": "Output only.\nThe type of the Finding.\nDetailed and up-to-date information on findings can be found here:\nhttps://cloud.google.com/security-scanner/docs/scan-result-details",
+          "type": "string"
+        },
+        "form": {
+          "$ref": "Form",
+          "description": "Output only.\nAn addon containing information reported for a vulnerability with an HTML\nform, if any."
+        },
+        "frameUrl": {
+          "description": "Output only.\nIf the vulnerability was originated from nested IFrame, the immediate\nparent IFrame is reported.",
+          "type": "string"
+        },
+        "fuzzedUrl": {
+          "description": "Output only.\nThe URL produced by the server-side fuzzer and used in the request that\ntriggered the vulnerability.",
+          "type": "string"
+        },
+        "httpMethod": {
+          "description": "Output only.\nThe http method of the request that triggered the vulnerability, in\nuppercase.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only.\nThe resource name of the Finding. The name follows the format of\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanruns/{scanRunId}/findings/{findingId}'.\nThe finding IDs are generated by the system.",
+          "type": "string"
+        },
+        "outdatedLibrary": {
+          "$ref": "OutdatedLibrary",
+          "description": "Output only.\nAn addon containing information about outdated libraries."
+        },
+        "reproductionUrl": {
+          "description": "Output only.\nThe URL containing human-readable payload that user can leverage to\nreproduce the vulnerability.",
+          "type": "string"
+        },
+        "trackingId": {
+          "description": "Output only.\nThe tracking ID uniquely identifies a vulnerability instance across\nmultiple ScanRuns.",
+          "type": "string"
+        },
+        "violatingResource": {
+          "$ref": "ViolatingResource",
+          "description": "Output only.\nAn addon containing detailed information regarding any resource causing the\nvulnerability such as JavaScript sources, image, audio files, etc."
+        },
+        "vulnerableHeaders": {
+          "$ref": "VulnerableHeaders",
+          "description": "Output only.\nAn addon containing information about vulnerable or missing HTTP headers."
+        },
+        "vulnerableParameters": {
+          "$ref": "VulnerableParameters",
+          "description": "Output only.\nAn addon containing information about request parameters which were found\nto be vulnerable."
+        },
+        "xss": {
+          "$ref": "Xss",
+          "description": "Output only.\nAn addon containing information reported for an XSS, if any."
+        }
+      },
+      "type": "object"
+    },
+    "FindingTypeStats": {
+      "description": "A FindingTypeStats resource represents stats regarding a specific FindingType\nof Findings under a given ScanRun.",
+      "id": "FindingTypeStats",
+      "properties": {
+        "findingCount": {
+          "description": "Output only.\nThe count of findings belonging to this finding type.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "findingType": {
+          "description": "Output only.\nThe finding type associated with the stats.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Form": {
+      "description": "! Information about a vulnerability with an HTML.",
+      "id": "Form",
+      "properties": {
+        "actionUri": {
+          "description": "! The URI where to send the form when it's submitted.",
+          "type": "string"
+        },
+        "fields": {
+          "description": "! The names of form fields related to the vulnerability.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleAccount": {
+      "description": "Describes authentication configuration that uses a Google account.",
+      "id": "GoogleAccount",
+      "properties": {
+        "password": {
+          "description": "Input only.\nRequired.\nThe password of the Google account. The credential is stored encrypted\nand not returned in any response nor included in audit logs.",
+          "type": "string"
+        },
+        "username": {
+          "description": "Required.\nThe user name of the Google account.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Header": {
+      "description": "Describes a HTTP Header.",
+      "id": "Header",
+      "properties": {
+        "name": {
+          "description": "Header name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "Header value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListCrawledUrlsResponse": {
+      "description": "Response for the `ListCrawledUrls` method.",
+      "id": "ListCrawledUrlsResponse",
+      "properties": {
+        "crawledUrls": {
+          "description": "The list of CrawledUrls returned.",
+          "items": {
+            "$ref": "CrawledUrl"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListFindingTypeStatsResponse": {
+      "description": "Response for the `ListFindingTypeStats` method.",
+      "id": "ListFindingTypeStatsResponse",
+      "properties": {
+        "findingTypeStats": {
+          "description": "The list of FindingTypeStats returned.",
+          "items": {
+            "$ref": "FindingTypeStats"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListFindingsResponse": {
+      "description": "Response for the `ListFindings` method.",
+      "id": "ListFindingsResponse",
+      "properties": {
+        "findings": {
+          "description": "The list of Findings returned.",
+          "items": {
+            "$ref": "Finding"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListScanConfigsResponse": {
+      "description": "Response for the `ListScanConfigs` method.",
+      "id": "ListScanConfigsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list.",
+          "type": "string"
+        },
+        "scanConfigs": {
+          "description": "The list of ScanConfigs returned.",
+          "items": {
+            "$ref": "ScanConfig"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListScanRunsResponse": {
+      "description": "Response for the `ListScanRuns` method.",
+      "id": "ListScanRunsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list.",
+          "type": "string"
+        },
+        "scanRuns": {
+          "description": "The list of ScanRuns returned.",
+          "items": {
+            "$ref": "ScanRun"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "OutdatedLibrary": {
+      "description": "Information reported for an outdated library.",
+      "id": "OutdatedLibrary",
+      "properties": {
+        "learnMoreUrls": {
+          "description": "URLs to learn more information about the vulnerabilities in the library.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "libraryName": {
+          "description": "The name of the outdated library.",
+          "type": "string"
+        },
+        "version": {
+          "description": "The version number.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ScanConfig": {
+      "description": "A ScanConfig resource contains the configurations to launch a scan.\nnext id: 12",
+      "id": "ScanConfig",
+      "properties": {
+        "authentication": {
+          "$ref": "Authentication",
+          "description": "The authentication configuration. If specified, service will use the\nauthentication configuration during scanning."
+        },
+        "blacklistPatterns": {
+          "description": "The blacklist URL patterns as described in\nhttps://cloud.google.com/security-scanner/docs/excluded-urls",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "displayName": {
+          "description": "Required.\nThe user provided display name of the ScanConfig.",
+          "type": "string"
+        },
+        "exportToSecurityCommandCenter": {
+          "description": "Controls export of scan configurations and results to Cloud Security\nCommand Center.",
+          "enum": [
+            "EXPORT_TO_SECURITY_COMMAND_CENTER_UNSPECIFIED",
+            "ENABLED",
+            "DISABLED"
+          ],
+          "enumDescriptions": [
+            "Use default, which is ENABLED.",
+            "Export results of this scan to Cloud Security Command Center.",
+            "Do not export results of this scan to Cloud Security Command Center."
+          ],
+          "type": "string"
+        },
+        "latestRun": {
+          "$ref": "ScanRun",
+          "description": "Latest ScanRun if available."
+        },
+        "maxQps": {
+          "description": "The maximum QPS during scanning. A valid value ranges from 5 to 20\ninclusively. If the field is unspecified or its value is set 0, server will\ndefault to 15. Other values outside of [5, 20] range will be rejected with\nINVALID_ARGUMENT error.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "name": {
+          "description": "The resource name of the ScanConfig. The name follows the format of\n'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are\ngenerated by the system.",
+          "type": "string"
+        },
+        "schedule": {
+          "$ref": "Schedule",
+          "description": "The schedule of the ScanConfig."
+        },
+        "startingUrls": {
+          "description": "Required.\nThe starting URLs from which the scanner finds site pages.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "targetPlatforms": {
+          "description": "Set of Cloud Platforms targeted by the scan. If empty, APP_ENGINE will be\nused as a default.",
+          "enumDescriptions": [
+            "The target platform is unknown. Requests with this enum value will be\nrejected with INVALID_ARGUMENT error.",
+            "Google App Engine service.",
+            "Google Compute Engine service."
+          ],
+          "items": {
+            "enum": [
+              "TARGET_PLATFORM_UNSPECIFIED",
+              "APP_ENGINE",
+              "COMPUTE"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "userAgent": {
+          "description": "The user agent used during scanning.",
+          "enum": [
+            "USER_AGENT_UNSPECIFIED",
+            "CHROME_LINUX",
+            "CHROME_ANDROID",
+            "SAFARI_IPHONE"
+          ],
+          "enumDescriptions": [
+            "The user agent is unknown. Service will default to CHROME_LINUX.",
+            "Chrome on Linux. This is the service default if unspecified.",
+            "Chrome on Android.",
+            "Safari on IPhone."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ScanConfigError": {
+      "description": "Defines a custom error message used by CreateScanConfig and UpdateScanConfig\nAPIs when scan configuration validation fails. It is also reported as part of\na ScanRunErrorTrace message if scan validation fails due to a scan\nconfiguration error.",
+      "id": "ScanConfigError",
+      "properties": {
+        "code": {
+          "description": "Output only.\nIndicates the reason code for a configuration failure.",
+          "enum": [
+            "CODE_UNSPECIFIED",
+            "OK",
+            "INTERNAL_ERROR",
+            "APPENGINE_API_BACKEND_ERROR",
+            "APPENGINE_API_NOT_ACCESSIBLE",
+            "APPENGINE_DEFAULT_HOST_MISSING",
+            "APPENGINE_SEED_URL_NOT_ALLOWED",
+            "CANNOT_USE_GOOGLE_COM_ACCOUNT",
+            "CANNOT_USE_OWNER_ACCOUNT",
+            "COMPUTE_API_BACKEND_ERROR",
+            "COMPUTE_API_NOT_ACCESSIBLE",
+            "CUSTOM_LOGIN_URL_DOES_NOT_BELONG_TO_CURRENT_PROJECT",
+            "CUSTOM_LOGIN_URL_MALFORMED",
+            "CUSTOM_LOGIN_URL_MAPPED_TO_NON_ROUTABLE_ADDRESS",
+            "CUSTOM_LOGIN_URL_MAPPED_TO_UNRESERVED_ADDRESS",
+            "CUSTOM_LOGIN_URL_HAS_NON_ROUTABLE_IP_ADDRESS",
+            "CUSTOM_LOGIN_URL_HAS_UNRESERVED_IP_ADDRESS",
+            "DUPLICATE_SCAN_NAME",
+            "INVALID_FIELD_VALUE",
+            "FAILED_TO_AUTHENTICATE_TO_TARGET",
+            "FINDING_TYPE_UNSPECIFIED",
+            "FORBIDDEN_TO_SCAN_COMPUTE",
+            "MALFORMED_FILTER",
+            "MALFORMED_RESOURCE_NAME",
+            "PROJECT_INACTIVE",
+            "REQUIRED_FIELD",
+            "RESOURCE_NAME_INCONSISTENT",
+            "SCAN_ALREADY_RUNNING",
+            "SCAN_NOT_RUNNING",
+            "SEED_URL_DOES_NOT_BELONG_TO_CURRENT_PROJECT",
+            "SEED_URL_MALFORMED",
+            "SEED_URL_MAPPED_TO_NON_ROUTABLE_ADDRESS",
+            "SEED_URL_MAPPED_TO_UNRESERVED_ADDRESS",
+            "SEED_URL_HAS_NON_ROUTABLE_IP_ADDRESS",
+            "SEED_URL_IP_ADDRESS_NOT_SUPPORTED_FOR_APPENGINE",
+            "SEED_URL_HAS_UNRESERVED_IP_ADDRESS",
+            "SERVICE_ACCOUNT_NOT_CONFIGURED",
+            "TOO_MANY_SCANS",
+            "UNABLE_TO_RESOLVE_PROJECT_INFO",
+            "UNSUPPORTED_BLACKLIST_PATTERN_FORMAT",
+            "UNSUPPORTED_FILTER",
+            "UNSUPPORTED_FINDING_TYPE",
+            "UNSUPPORTED_URL_SCHEME"
+          ],
+          "enumDescriptions": [
+            "There is no error.",
+            "There is no error.",
+            "Indicates an internal server error.\nPlease DO NOT USE THIS ERROR CODE unless the root cause is truly unknown.",
+            "One of the seed URLs is an App Engine URL but we cannot validate the scan\nsettings due to an App Engine API backend error.",
+            "One of the seed URLs is an App Engine URL but we cannot access the\nApp Engine API to validate scan settings.",
+            "One of the seed URLs is an App Engine URL but the Default Host of the\nApp Engine is not set.",
+            "One of the seed URLs is an App Engine URL and the scan targets\nCompute Engine only.",
+            "Google corporate accounts can not be used for scanning.",
+            "The account of the scan creator can not be used for scanning.",
+            "This scan targets Compute Engine, but we cannot validate scan settings\ndue to a Compute Engine API backend error.",
+            "This scan targets Compute Engine, but we cannot access the Compute Engine\nAPI to validate the scan settings.",
+            "The Custom Login URL does not belong to the current project.",
+            "The Custom Login URL is malformed (can not be parsed).",
+            "The Custom Login URL is mapped to a non-routable IP address in DNS.",
+            "The Custom Login URL is mapped to an IP address which is not reserved for\nthe current project.",
+            "The Custom Login URL has a non-routable IP address.",
+            "The Custom Login URL has an IP address which is not reserved for the\ncurrent project.",
+            "Another scan with the same name (case-sensitive) already exists.",
+            "A field is set to an invalid value.",
+            "There was an error trying to authenticate to the scan target.",
+            "Finding type value is not specified in the list findings request.",
+            "Scan targets Compute Engine, yet current project was not whitelisted for\nGoogle Compute Engine Scanning Alpha access.",
+            "The supplied filter is malformed. For example, it can not be parsed, does\nnot have a filter type in expression, or the same filter type appears\nmore than once.",
+            "The supplied resource name is malformed (can not be parsed).",
+            "The current project is not in an active state.",
+            "A required field is not set.",
+            "Project id, scanconfig id, scanrun id, or finding id are not consistent\nwith each other in resource name.",
+            "The scan being requested to start is already running.",
+            "The scan that was requested to be stopped is not running.",
+            "One of the seed URLs does not belong to the current project.",
+            "One of the seed URLs is malformed (can not be parsed).",
+            "One of the seed URLs is mapped to a non-routable IP address in DNS.",
+            "One of the seed URLs is mapped to an IP address which is not reserved\nfor the current project.",
+            "One of the seed URLs has on-routable IP address.",
+            "One of the supplied seed URLs has an IP address, and this is not\nsupported in App Engine-only targeted scan.",
+            "One of the seed URLs has an IP address that is not reserved\nfor the current project.",
+            "The Cloud Security Scanner service account is not configured under the\nproject.",
+            "A project has reached the maximum number of scans.",
+            "Resolving the details of the current project fails.",
+            "One or more blacklist patterns were in the wrong format.",
+            "The supplied filter is not supported.",
+            "The supplied finding type is not supported. For example, we do not\nprovide findings of the given finding type.",
+            "The URL scheme of one or more of the supplied URLs is not supported."
+          ],
+          "type": "string"
+        },
+        "fieldName": {
+          "description": "Output only.\nIndicates the full name of the ScanConfig field that triggers this error,\nfor example \"scan_config.max_qps\". This field is provided for\ntroubleshooting purposes only and its actual value can change in the\nfuture.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ScanRun": {
+      "description": "A ScanRun is a output-only resource representing an actual run of the scan.\nNext id: 12",
+      "id": "ScanRun",
+      "properties": {
+        "endTime": {
+          "description": "Output only.\nThe time at which the ScanRun reached termination state - that the ScanRun\nis either finished or stopped by user.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "errorTrace": {
+          "$ref": "ScanRunErrorTrace",
+          "description": "Output only.\nIf result_state is an ERROR, this field provides the primary reason for\nscan's termination and more details, if such are available."
+        },
+        "executionState": {
+          "description": "Output only.\nThe execution state of the ScanRun.",
+          "enum": [
+            "EXECUTION_STATE_UNSPECIFIED",
+            "QUEUED",
+            "SCANNING",
+            "FINISHED"
+          ],
+          "enumDescriptions": [
+            "Represents an invalid state caused by internal server error. This value\nshould never be returned.",
+            "The scan is waiting in the queue.",
+            "The scan is in progress.",
+            "The scan is either finished or stopped by user."
+          ],
+          "type": "string"
+        },
+        "hasVulnerabilities": {
+          "description": "Output only.\nWhether the scan run has found any vulnerabilities.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "Output only.\nThe resource name of the ScanRun. The name follows the format of\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.\nThe ScanRun IDs are generated by the system.",
+          "type": "string"
+        },
+        "progressPercent": {
+          "description": "Output only.\nThe percentage of total completion ranging from 0 to 100.\nIf the scan is in queue, the value is 0.\nIf the scan is running, the value ranges from 0 to 100.\nIf the scan is finished, the value is 100.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "resultState": {
+          "description": "Output only.\nThe result state of the ScanRun. This field is only available after the\nexecution state reaches \"FINISHED\".",
+          "enum": [
+            "RESULT_STATE_UNSPECIFIED",
+            "SUCCESS",
+            "ERROR",
+            "KILLED"
+          ],
+          "enumDescriptions": [
+            "Default value. This value is returned when the ScanRun is not yet\nfinished.",
+            "The scan finished without errors.",
+            "The scan finished with errors.",
+            "The scan was terminated by user."
+          ],
+          "type": "string"
+        },
+        "startTime": {
+          "description": "Output only.\nThe time at which the ScanRun started.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "urlsCrawledCount": {
+          "description": "Output only.\nThe number of URLs crawled during this ScanRun. If the scan is in progress,\nthe value represents the number of URLs crawled up to now.",
+          "format": "int64",
+          "type": "string"
+        },
+        "urlsTestedCount": {
+          "description": "Output only.\nThe number of URLs tested during this ScanRun. If the scan is in progress,\nthe value represents the number of URLs tested up to now. The number of\nURLs tested is usually larger than the number URLS crawled because\ntypically a crawled URL is tested with multiple test payloads.",
+          "format": "int64",
+          "type": "string"
+        },
+        "warningTraces": {
+          "description": "Output only.\nA list of warnings, if such are encountered during this scan run.",
+          "items": {
+            "$ref": "ScanRunWarningTrace"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ScanRunErrorTrace": {
+      "description": "Output only.\nDefines an error trace message for a ScanRun.",
+      "id": "ScanRunErrorTrace",
+      "properties": {
+        "code": {
+          "description": "Output only.\nIndicates the error reason code.",
+          "enum": [
+            "CODE_UNSPECIFIED",
+            "INTERNAL_ERROR",
+            "SCAN_CONFIG_ISSUE",
+            "AUTHENTICATION_CONFIG_ISSUE",
+            "TIMED_OUT_WHILE_SCANNING",
+            "TOO_MANY_REDIRECTS",
+            "TOO_MANY_HTTP_ERRORS"
+          ],
+          "enumDescriptions": [
+            "Default value is never used.",
+            "Indicates that the scan run failed due to an internal server error.",
+            "Indicates a scan configuration error, usually due to outdated ScanConfig\nsettings, such as starting_urls or the DNS configuration.",
+            "Indicates an authentication error, usually due to outdated ScanConfig\nauthentication settings.",
+            "Indicates a scan operation timeout, usually caused by a very large site.",
+            "Indicates that a scan encountered excessive redirects, either to\nauthentication or some other page outside of the scan scope.",
+            "Indicates that a scan encountered numerous errors from the web site\npages. When available, most_common_http_error_code field indicates the\nthe most common HTTP error code encountered during the scan."
+          ],
+          "type": "string"
+        },
+        "mostCommonHttpErrorCode": {
+          "description": "Output only.\nIf the scan encounters TOO_MANY_HTTP_ERRORS, this field indicates the most\ncommon HTTP error code, if such is available. For example, if this code is\n404, the scan has encountered too many NOT_FOUND responses.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "scanConfigError": {
+          "$ref": "ScanConfigError",
+          "description": "Output only.\nIf the scan encounters SCAN_CONFIG_ISSUE error, this field has the error\nmessage encountered during scan configuration validation that is performed\nbefore each scan run."
+        }
+      },
+      "type": "object"
+    },
+    "ScanRunWarningTrace": {
+      "description": "Output only.\nDefines a warning trace message for ScanRun. Warning traces provide customers\nwith useful information that helps make the scanning process more effective.",
+      "id": "ScanRunWarningTrace",
+      "properties": {
+        "code": {
+          "description": "Output only.\nIndicates the warning code.",
+          "enum": [
+            "CODE_UNSPECIFIED",
+            "INSUFFICIENT_CRAWL_RESULTS",
+            "TOO_MANY_CRAWL_RESULTS",
+            "TOO_MANY_FUZZ_TASKS",
+            "BLOCKED_BY_IAP"
+          ],
+          "enumDescriptions": [
+            "Default value is never used.",
+            "Indicates that a scan discovered an unexpectedly low number of URLs. This\nis sometimes caused by complex navigation features or by using a single\nURL for numerous pages.",
+            "Indicates that a scan discovered too many URLs to test, or excessive\nredundant URLs.",
+            "Indicates that too many tests have been generated for the scan. Customer\nshould try reducing the number of starting URLs, increasing the QPS rate,\nor narrowing down the scope of the scan using the excluded patterns.",
+            "Indicates that a scan is blocked by IAP."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Schedule": {
+      "description": "Scan schedule configuration.",
+      "id": "Schedule",
+      "properties": {
+        "intervalDurationDays": {
+          "description": "Required.\nThe duration of time between executions in days.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "scheduleTime": {
+          "description": "A timestamp indicates when the next run will be scheduled. The value is\nrefreshed by the server after each run. If unspecified, it will default\nto current server time, which means the scan will be scheduled to start\nimmediately.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "StartScanRunRequest": {
+      "description": "Request for the `StartScanRun` method.",
+      "id": "StartScanRunRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "StopScanRunRequest": {
+      "description": "Request for the `StopScanRun` method.",
+      "id": "StopScanRunRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "ViolatingResource": {
+      "description": "Information regarding any resource causing the vulnerability such\nas JavaScript sources, image, audio files, etc.",
+      "id": "ViolatingResource",
+      "properties": {
+        "contentType": {
+          "description": "The MIME type of this resource.",
+          "type": "string"
+        },
+        "resourceUrl": {
+          "description": "URL of this violating resource.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "VulnerableHeaders": {
+      "description": "Information about vulnerable or missing HTTP Headers.",
+      "id": "VulnerableHeaders",
+      "properties": {
+        "headers": {
+          "description": "List of vulnerable headers.",
+          "items": {
+            "$ref": "Header"
+          },
+          "type": "array"
+        },
+        "missingHeaders": {
+          "description": "List of missing headers.",
+          "items": {
+            "$ref": "Header"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "VulnerableParameters": {
+      "description": "Information about vulnerable request parameters.",
+      "id": "VulnerableParameters",
+      "properties": {
+        "parameterNames": {
+          "description": "The vulnerable parameter names.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Xss": {
+      "description": "Information reported for an XSS.",
+      "id": "Xss",
+      "properties": {
+        "errorMessage": {
+          "description": "An error message generated by a javascript breakage.",
+          "type": "string"
+        },
+        "stackTraces": {
+          "description": "Stack traces leading to the point where the XSS occurred.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Web Security Scanner API",
+  "version": "v1beta",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/websecurityscanner/v1beta/websecurityscanner-gen.go b/websecurityscanner/v1beta/websecurityscanner-gen.go
new file mode 100644
index 0000000..e263c43
--- /dev/null
+++ b/websecurityscanner/v1beta/websecurityscanner-gen.go
@@ -0,0 +1,3534 @@
+// Copyright 2019 Google LLC.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package websecurityscanner provides access to the Web Security Scanner API.
+//
+// For product documentation, see: https://cloud.google.com/security-scanner/
+//
+// Creating a client
+//
+// Usage example:
+//
+//   import "google.golang.org/api/websecurityscanner/v1beta"
+//   ...
+//   ctx := context.Background()
+//   websecurityscannerService, err := websecurityscanner.NewService(ctx)
+//
+// In this example, Google Application Default Credentials are used for authentication.
+//
+// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
+//
+// Other authentication options
+//
+// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
+//
+//   websecurityscannerService, err := websecurityscanner.NewService(ctx, option.WithAPIKey("AIza..."))
+//
+// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
+//
+//   config := &oauth2.Config{...}
+//   // ...
+//   token, err := config.Exchange(ctx, ...)
+//   websecurityscannerService, err := websecurityscanner.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
+//
+// See https://godoc.org/google.golang.org/api/option/ for details on options.
+package websecurityscanner // import "google.golang.org/api/websecurityscanner/v1beta"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+	option "google.golang.org/api/option"
+	htransport "google.golang.org/api/transport/http"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "websecurityscanner:v1beta"
+const apiName = "websecurityscanner"
+const apiVersion = "v1beta"
+const basePath = "https://websecurityscanner.googleapis.com/"
+
+// OAuth2 scopes used by this API.
+const (
+	// View and manage your data across Google Cloud Platform services
+	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+)
+
+// NewService creates a new Service.
+func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
+	scopesOption := option.WithScopes(
+		"https://www.googleapis.com/auth/cloud-platform",
+	)
+	// NOTE: prepend, so we don't override user-specified scopes.
+	opts = append([]option.ClientOption{scopesOption}, opts...)
+	client, endpoint, err := htransport.NewClient(ctx, opts...)
+	if err != nil {
+		return nil, err
+	}
+	s, err := New(client)
+	if err != nil {
+		return nil, err
+	}
+	if endpoint != "" {
+		s.BasePath = endpoint
+	}
+	return s, nil
+}
+
+// New creates a new Service. It uses the provided http.Client for requests.
+//
+// Deprecated: please use NewService instead.
+// To provide a custom HTTP client, use option.WithHTTPClient.
+// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Projects = NewProjectsService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Projects *ProjectsService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.ScanConfigs = NewProjectsScanConfigsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	ScanConfigs *ProjectsScanConfigsService
+}
+
+func NewProjectsScanConfigsService(s *Service) *ProjectsScanConfigsService {
+	rs := &ProjectsScanConfigsService{s: s}
+	rs.ScanRuns = NewProjectsScanConfigsScanRunsService(s)
+	return rs
+}
+
+type ProjectsScanConfigsService struct {
+	s *Service
+
+	ScanRuns *ProjectsScanConfigsScanRunsService
+}
+
+func NewProjectsScanConfigsScanRunsService(s *Service) *ProjectsScanConfigsScanRunsService {
+	rs := &ProjectsScanConfigsScanRunsService{s: s}
+	rs.CrawledUrls = NewProjectsScanConfigsScanRunsCrawledUrlsService(s)
+	rs.FindingTypeStats = NewProjectsScanConfigsScanRunsFindingTypeStatsService(s)
+	rs.Findings = NewProjectsScanConfigsScanRunsFindingsService(s)
+	return rs
+}
+
+type ProjectsScanConfigsScanRunsService struct {
+	s *Service
+
+	CrawledUrls *ProjectsScanConfigsScanRunsCrawledUrlsService
+
+	FindingTypeStats *ProjectsScanConfigsScanRunsFindingTypeStatsService
+
+	Findings *ProjectsScanConfigsScanRunsFindingsService
+}
+
+func NewProjectsScanConfigsScanRunsCrawledUrlsService(s *Service) *ProjectsScanConfigsScanRunsCrawledUrlsService {
+	rs := &ProjectsScanConfigsScanRunsCrawledUrlsService{s: s}
+	return rs
+}
+
+type ProjectsScanConfigsScanRunsCrawledUrlsService struct {
+	s *Service
+}
+
+func NewProjectsScanConfigsScanRunsFindingTypeStatsService(s *Service) *ProjectsScanConfigsScanRunsFindingTypeStatsService {
+	rs := &ProjectsScanConfigsScanRunsFindingTypeStatsService{s: s}
+	return rs
+}
+
+type ProjectsScanConfigsScanRunsFindingTypeStatsService struct {
+	s *Service
+}
+
+func NewProjectsScanConfigsScanRunsFindingsService(s *Service) *ProjectsScanConfigsScanRunsFindingsService {
+	rs := &ProjectsScanConfigsScanRunsFindingsService{s: s}
+	return rs
+}
+
+type ProjectsScanConfigsScanRunsFindingsService struct {
+	s *Service
+}
+
+// Authentication: Scan authentication configuration.
+type Authentication struct {
+	// CustomAccount: Authentication using a custom account.
+	CustomAccount *CustomAccount `json:"customAccount,omitempty"`
+
+	// GoogleAccount: Authentication using a Google account.
+	GoogleAccount *GoogleAccount `json:"googleAccount,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CustomAccount") 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. "CustomAccount") 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 *Authentication) MarshalJSON() ([]byte, error) {
+	type NoMethod Authentication
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CrawledUrl: A CrawledUrl resource represents a URL that was crawled
+// during a ScanRun. Web
+// Security Scanner Service crawls the web applications, following all
+// links
+// within the scope of sites, to find the URLs to test against.
+type CrawledUrl struct {
+	// Body: Output only.
+	// The body of the request that was used to visit the URL.
+	Body string `json:"body,omitempty"`
+
+	// HttpMethod: Output only.
+	// The http method of the request that was used to visit the URL,
+	// in
+	// uppercase.
+	HttpMethod string `json:"httpMethod,omitempty"`
+
+	// Url: Output only.
+	// The URL that was crawled.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Body") 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. "Body") 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 *CrawledUrl) MarshalJSON() ([]byte, error) {
+	type NoMethod CrawledUrl
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CustomAccount: Describes authentication configuration that uses a
+// custom account.
+type CustomAccount struct {
+	// LoginUrl: Required.
+	// The login form URL of the website.
+	LoginUrl string `json:"loginUrl,omitempty"`
+
+	// Password: Input only.
+	// Required.
+	// The password of the custom account. The credential is stored
+	// encrypted
+	// and not returned in any response nor included in audit logs.
+	Password string `json:"password,omitempty"`
+
+	// Username: Required.
+	// The user name of the custom account.
+	Username string `json:"username,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "LoginUrl") 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. "LoginUrl") 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 *CustomAccount) MarshalJSON() ([]byte, error) {
+	type NoMethod CustomAccount
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Empty: A generic empty message that you can re-use to avoid defining
+// duplicated
+// empty messages in your APIs. A typical example is to use it as the
+// request
+// or the response type of an API method. For instance:
+//
+//     service Foo {
+//       rpc Bar(google.protobuf.Empty) returns
+// (google.protobuf.Empty);
+//     }
+//
+// The JSON representation for `Empty` is empty JSON object `{}`.
+type Empty struct {
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+}
+
+// Finding: A Finding resource represents a vulnerability instance
+// identified during a
+// ScanRun.
+type Finding struct {
+	// Body: Output only.
+	// The body of the request that triggered the vulnerability.
+	Body string `json:"body,omitempty"`
+
+	// Description: Output only.
+	// The description of the vulnerability.
+	Description string `json:"description,omitempty"`
+
+	// FinalUrl: Output only.
+	// The URL where the browser lands when the vulnerability is detected.
+	FinalUrl string `json:"finalUrl,omitempty"`
+
+	// FindingType: Output only.
+	// The type of the Finding.
+	// Detailed and up-to-date information on findings can be found
+	// here:
+	// https://cloud.google.com/security-scanner/docs/scan-result-detai
+	// ls
+	FindingType string `json:"findingType,omitempty"`
+
+	// Form: Output only.
+	// An addon containing information reported for a vulnerability with an
+	// HTML
+	// form, if any.
+	Form *Form `json:"form,omitempty"`
+
+	// FrameUrl: Output only.
+	// If the vulnerability was originated from nested IFrame, the
+	// immediate
+	// parent IFrame is reported.
+	FrameUrl string `json:"frameUrl,omitempty"`
+
+	// FuzzedUrl: Output only.
+	// The URL produced by the server-side fuzzer and used in the request
+	// that
+	// triggered the vulnerability.
+	FuzzedUrl string `json:"fuzzedUrl,omitempty"`
+
+	// HttpMethod: Output only.
+	// The http method of the request that triggered the vulnerability,
+	// in
+	// uppercase.
+	HttpMethod string `json:"httpMethod,omitempty"`
+
+	// Name: Output only.
+	// The resource name of the Finding. The name follows the format
+	// of
+	// 'projects/{projectId}/scanConfigs/{scanConfigId}/scanruns/{scanRunI
+	// d}/findings/{findingId}'.
+	// The finding IDs are generated by the system.
+	Name string `json:"name,omitempty"`
+
+	// OutdatedLibrary: Output only.
+	// An addon containing information about outdated libraries.
+	OutdatedLibrary *OutdatedLibrary `json:"outdatedLibrary,omitempty"`
+
+	// ReproductionUrl: Output only.
+	// The URL containing human-readable payload that user can leverage
+	// to
+	// reproduce the vulnerability.
+	ReproductionUrl string `json:"reproductionUrl,omitempty"`
+
+	// TrackingId: Output only.
+	// The tracking ID uniquely identifies a vulnerability instance
+	// across
+	// multiple ScanRuns.
+	TrackingId string `json:"trackingId,omitempty"`
+
+	// ViolatingResource: Output only.
+	// An addon containing detailed information regarding any resource
+	// causing the
+	// vulnerability such as JavaScript sources, image, audio files, etc.
+	ViolatingResource *ViolatingResource `json:"violatingResource,omitempty"`
+
+	// VulnerableHeaders: Output only.
+	// An addon containing information about vulnerable or missing HTTP
+	// headers.
+	VulnerableHeaders *VulnerableHeaders `json:"vulnerableHeaders,omitempty"`
+
+	// VulnerableParameters: Output only.
+	// An addon containing information about request parameters which were
+	// found
+	// to be vulnerable.
+	VulnerableParameters *VulnerableParameters `json:"vulnerableParameters,omitempty"`
+
+	// Xss: Output only.
+	// An addon containing information reported for an XSS, if any.
+	Xss *Xss `json:"xss,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Body") 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. "Body") 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 *Finding) MarshalJSON() ([]byte, error) {
+	type NoMethod Finding
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// FindingTypeStats: A FindingTypeStats resource represents stats
+// regarding a specific FindingType
+// of Findings under a given ScanRun.
+type FindingTypeStats struct {
+	// FindingCount: Output only.
+	// The count of findings belonging to this finding type.
+	FindingCount int64 `json:"findingCount,omitempty"`
+
+	// FindingType: Output only.
+	// The finding type associated with the stats.
+	FindingType string `json:"findingType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FindingCount") 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. "FindingCount") 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 *FindingTypeStats) MarshalJSON() ([]byte, error) {
+	type NoMethod FindingTypeStats
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Form: ! Information about a vulnerability with an HTML.
+type Form struct {
+	// ActionUri: ! The URI where to send the form when it's submitted.
+	ActionUri string `json:"actionUri,omitempty"`
+
+	// Fields: ! The names of form fields related to the vulnerability.
+	Fields []string `json:"fields,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionUri") 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. "ActionUri") 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 *Form) MarshalJSON() ([]byte, error) {
+	type NoMethod Form
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleAccount: Describes authentication configuration that uses a
+// Google account.
+type GoogleAccount struct {
+	// Password: Input only.
+	// Required.
+	// The password of the Google account. The credential is stored
+	// encrypted
+	// and not returned in any response nor included in audit logs.
+	Password string `json:"password,omitempty"`
+
+	// Username: Required.
+	// The user name of the Google account.
+	Username string `json:"username,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Password") 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. "Password") 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 *GoogleAccount) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleAccount
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Header: Describes a HTTP Header.
+type Header struct {
+	// Name: Header name.
+	Name string `json:"name,omitempty"`
+
+	// Value: Header value.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") 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. "Name") 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 *Header) MarshalJSON() ([]byte, error) {
+	type NoMethod Header
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListCrawledUrlsResponse: Response for the `ListCrawledUrls` method.
+type ListCrawledUrlsResponse struct {
+	// CrawledUrls: The list of CrawledUrls returned.
+	CrawledUrls []*CrawledUrl `json:"crawledUrls,omitempty"`
+
+	// NextPageToken: Token to retrieve the next page of results, or empty
+	// if there are no
+	// more results in the list.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CrawledUrls") 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. "CrawledUrls") 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 *ListCrawledUrlsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListCrawledUrlsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListFindingTypeStatsResponse: Response for the `ListFindingTypeStats`
+// method.
+type ListFindingTypeStatsResponse struct {
+	// FindingTypeStats: The list of FindingTypeStats returned.
+	FindingTypeStats []*FindingTypeStats `json:"findingTypeStats,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "FindingTypeStats") 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. "FindingTypeStats") 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 *ListFindingTypeStatsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListFindingTypeStatsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListFindingsResponse: Response for the `ListFindings` method.
+type ListFindingsResponse struct {
+	// Findings: The list of Findings returned.
+	Findings []*Finding `json:"findings,omitempty"`
+
+	// NextPageToken: Token to retrieve the next page of results, or empty
+	// if there are no
+	// more results in the list.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Findings") 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. "Findings") 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 *ListFindingsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListFindingsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListScanConfigsResponse: Response for the `ListScanConfigs` method.
+type ListScanConfigsResponse struct {
+	// NextPageToken: Token to retrieve the next page of results, or empty
+	// if there are no
+	// more results in the list.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ScanConfigs: The list of ScanConfigs returned.
+	ScanConfigs []*ScanConfig `json:"scanConfigs,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListScanConfigsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListScanConfigsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListScanRunsResponse: Response for the `ListScanRuns` method.
+type ListScanRunsResponse struct {
+	// NextPageToken: Token to retrieve the next page of results, or empty
+	// if there are no
+	// more results in the list.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ScanRuns: The list of ScanRuns returned.
+	ScanRuns []*ScanRun `json:"scanRuns,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NextPageToken") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ListScanRunsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListScanRunsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// OutdatedLibrary: Information reported for an outdated library.
+type OutdatedLibrary struct {
+	// LearnMoreUrls: URLs to learn more information about the
+	// vulnerabilities in the library.
+	LearnMoreUrls []string `json:"learnMoreUrls,omitempty"`
+
+	// LibraryName: The name of the outdated library.
+	LibraryName string `json:"libraryName,omitempty"`
+
+	// Version: The version number.
+	Version string `json:"version,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "LearnMoreUrls") 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. "LearnMoreUrls") 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 *OutdatedLibrary) MarshalJSON() ([]byte, error) {
+	type NoMethod OutdatedLibrary
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ScanConfig: A ScanConfig resource contains the configurations to
+// launch a scan.
+// next id: 12
+type ScanConfig struct {
+	// Authentication: The authentication configuration. If specified,
+	// service will use the
+	// authentication configuration during scanning.
+	Authentication *Authentication `json:"authentication,omitempty"`
+
+	// BlacklistPatterns: The blacklist URL patterns as described
+	// in
+	// https://cloud.google.com/security-scanner/docs/excluded-urls
+	BlacklistPatterns []string `json:"blacklistPatterns,omitempty"`
+
+	// DisplayName: Required.
+	// The user provided display name of the ScanConfig.
+	DisplayName string `json:"displayName,omitempty"`
+
+	// ExportToSecurityCommandCenter: Controls export of scan configurations
+	// and results to Cloud Security
+	// Command Center.
+	//
+	// Possible values:
+	//   "EXPORT_TO_SECURITY_COMMAND_CENTER_UNSPECIFIED" - Use default,
+	// which is ENABLED.
+	//   "ENABLED" - Export results of this scan to Cloud Security Command
+	// Center.
+	//   "DISABLED" - Do not export results of this scan to Cloud Security
+	// Command Center.
+	ExportToSecurityCommandCenter string `json:"exportToSecurityCommandCenter,omitempty"`
+
+	// LatestRun: Latest ScanRun if available.
+	LatestRun *ScanRun `json:"latestRun,omitempty"`
+
+	// MaxQps: The maximum QPS during scanning. A valid value ranges from 5
+	// to 20
+	// inclusively. If the field is unspecified or its value is set 0,
+	// server will
+	// default to 15. Other values outside of [5, 20] range will be rejected
+	// with
+	// INVALID_ARGUMENT error.
+	MaxQps int64 `json:"maxQps,omitempty"`
+
+	// Name: The resource name of the ScanConfig. The name follows the
+	// format of
+	// 'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs
+	// are
+	// generated by the system.
+	Name string `json:"name,omitempty"`
+
+	// Schedule: The schedule of the ScanConfig.
+	Schedule *Schedule `json:"schedule,omitempty"`
+
+	// StartingUrls: Required.
+	// The starting URLs from which the scanner finds site pages.
+	StartingUrls []string `json:"startingUrls,omitempty"`
+
+	// TargetPlatforms: Set of Cloud Platforms targeted by the scan. If
+	// empty, APP_ENGINE will be
+	// used as a default.
+	//
+	// Possible values:
+	//   "TARGET_PLATFORM_UNSPECIFIED" - The target platform is unknown.
+	// Requests with this enum value will be
+	// rejected with INVALID_ARGUMENT error.
+	//   "APP_ENGINE" - Google App Engine service.
+	//   "COMPUTE" - Google Compute Engine service.
+	TargetPlatforms []string `json:"targetPlatforms,omitempty"`
+
+	// UserAgent: The user agent used during scanning.
+	//
+	// Possible values:
+	//   "USER_AGENT_UNSPECIFIED" - The user agent is unknown. Service will
+	// default to CHROME_LINUX.
+	//   "CHROME_LINUX" - Chrome on Linux. This is the service default if
+	// unspecified.
+	//   "CHROME_ANDROID" - Chrome on Android.
+	//   "SAFARI_IPHONE" - Safari on IPhone.
+	UserAgent string `json:"userAgent,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Authentication") 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. "Authentication") 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 *ScanConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod ScanConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ScanConfigError: Defines a custom error message used by
+// CreateScanConfig and UpdateScanConfig
+// APIs when scan configuration validation fails. It is also reported as
+// part of
+// a ScanRunErrorTrace message if scan validation fails due to a
+// scan
+// configuration error.
+type ScanConfigError struct {
+	// Code: Output only.
+	// Indicates the reason code for a configuration failure.
+	//
+	// Possible values:
+	//   "CODE_UNSPECIFIED" - There is no error.
+	//   "OK" - There is no error.
+	//   "INTERNAL_ERROR" - Indicates an internal server error.
+	// Please DO NOT USE THIS ERROR CODE unless the root cause is truly
+	// unknown.
+	//   "APPENGINE_API_BACKEND_ERROR" - One of the seed URLs is an App
+	// Engine URL but we cannot validate the scan
+	// settings due to an App Engine API backend error.
+	//   "APPENGINE_API_NOT_ACCESSIBLE" - One of the seed URLs is an App
+	// Engine URL but we cannot access the
+	// App Engine API to validate scan settings.
+	//   "APPENGINE_DEFAULT_HOST_MISSING" - One of the seed URLs is an App
+	// Engine URL but the Default Host of the
+	// App Engine is not set.
+	//   "APPENGINE_SEED_URL_NOT_ALLOWED" - One of the seed URLs is an App
+	// Engine URL and the scan targets
+	// Compute Engine only.
+	//   "CANNOT_USE_GOOGLE_COM_ACCOUNT" - Google corporate accounts can not
+	// be used for scanning.
+	//   "CANNOT_USE_OWNER_ACCOUNT" - The account of the scan creator can
+	// not be used for scanning.
+	//   "COMPUTE_API_BACKEND_ERROR" - This scan targets Compute Engine, but
+	// we cannot validate scan settings
+	// due to a Compute Engine API backend error.
+	//   "COMPUTE_API_NOT_ACCESSIBLE" - This scan targets Compute Engine,
+	// but we cannot access the Compute Engine
+	// API to validate the scan settings.
+	//   "CUSTOM_LOGIN_URL_DOES_NOT_BELONG_TO_CURRENT_PROJECT" - The Custom
+	// Login URL does not belong to the current project.
+	//   "CUSTOM_LOGIN_URL_MALFORMED" - The Custom Login URL is malformed
+	// (can not be parsed).
+	//   "CUSTOM_LOGIN_URL_MAPPED_TO_NON_ROUTABLE_ADDRESS" - The Custom
+	// Login URL is mapped to a non-routable IP address in DNS.
+	//   "CUSTOM_LOGIN_URL_MAPPED_TO_UNRESERVED_ADDRESS" - The Custom Login
+	// URL is mapped to an IP address which is not reserved for
+	// the current project.
+	//   "CUSTOM_LOGIN_URL_HAS_NON_ROUTABLE_IP_ADDRESS" - The Custom Login
+	// URL has a non-routable IP address.
+	//   "CUSTOM_LOGIN_URL_HAS_UNRESERVED_IP_ADDRESS" - The Custom Login URL
+	// has an IP address which is not reserved for the
+	// current project.
+	//   "DUPLICATE_SCAN_NAME" - Another scan with the same name
+	// (case-sensitive) already exists.
+	//   "INVALID_FIELD_VALUE" - A field is set to an invalid value.
+	//   "FAILED_TO_AUTHENTICATE_TO_TARGET" - There was an error trying to
+	// authenticate to the scan target.
+	//   "FINDING_TYPE_UNSPECIFIED" - Finding type value is not specified in
+	// the list findings request.
+	//   "FORBIDDEN_TO_SCAN_COMPUTE" - Scan targets Compute Engine, yet
+	// current project was not whitelisted for
+	// Google Compute Engine Scanning Alpha access.
+	//   "MALFORMED_FILTER" - The supplied filter is malformed. For example,
+	// it can not be parsed, does
+	// not have a filter type in expression, or the same filter type
+	// appears
+	// more than once.
+	//   "MALFORMED_RESOURCE_NAME" - The supplied resource name is malformed
+	// (can not be parsed).
+	//   "PROJECT_INACTIVE" - The current project is not in an active state.
+	//   "REQUIRED_FIELD" - A required field is not set.
+	//   "RESOURCE_NAME_INCONSISTENT" - Project id, scanconfig id, scanrun
+	// id, or finding id are not consistent
+	// with each other in resource name.
+	//   "SCAN_ALREADY_RUNNING" - The scan being requested to start is
+	// already running.
+	//   "SCAN_NOT_RUNNING" - The scan that was requested to be stopped is
+	// not running.
+	//   "SEED_URL_DOES_NOT_BELONG_TO_CURRENT_PROJECT" - One of the seed
+	// URLs does not belong to the current project.
+	//   "SEED_URL_MALFORMED" - One of the seed URLs is malformed (can not
+	// be parsed).
+	//   "SEED_URL_MAPPED_TO_NON_ROUTABLE_ADDRESS" - One of the seed URLs is
+	// mapped to a non-routable IP address in DNS.
+	//   "SEED_URL_MAPPED_TO_UNRESERVED_ADDRESS" - One of the seed URLs is
+	// mapped to an IP address which is not reserved
+	// for the current project.
+	//   "SEED_URL_HAS_NON_ROUTABLE_IP_ADDRESS" - One of the seed URLs has
+	// on-routable IP address.
+	//   "SEED_URL_IP_ADDRESS_NOT_SUPPORTED_FOR_APPENGINE" - One of the
+	// supplied seed URLs has an IP address, and this is not
+	// supported in App Engine-only targeted scan.
+	//   "SEED_URL_HAS_UNRESERVED_IP_ADDRESS" - One of the seed URLs has an
+	// IP address that is not reserved
+	// for the current project.
+	//   "SERVICE_ACCOUNT_NOT_CONFIGURED" - The Cloud Security Scanner
+	// service account is not configured under the
+	// project.
+	//   "TOO_MANY_SCANS" - A project has reached the maximum number of
+	// scans.
+	//   "UNABLE_TO_RESOLVE_PROJECT_INFO" - Resolving the details of the
+	// current project fails.
+	//   "UNSUPPORTED_BLACKLIST_PATTERN_FORMAT" - One or more blacklist
+	// patterns were in the wrong format.
+	//   "UNSUPPORTED_FILTER" - The supplied filter is not supported.
+	//   "UNSUPPORTED_FINDING_TYPE" - The supplied finding type is not
+	// supported. For example, we do not
+	// provide findings of the given finding type.
+	//   "UNSUPPORTED_URL_SCHEME" - The URL scheme of one or more of the
+	// supplied URLs is not supported.
+	Code string `json:"code,omitempty"`
+
+	// FieldName: Output only.
+	// Indicates the full name of the ScanConfig field that triggers this
+	// error,
+	// for example "scan_config.max_qps". This field is provided
+	// for
+	// troubleshooting purposes only and its actual value can change in
+	// the
+	// future.
+	FieldName string `json:"fieldName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") 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. "Code") 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 *ScanConfigError) MarshalJSON() ([]byte, error) {
+	type NoMethod ScanConfigError
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ScanRun: A ScanRun is a output-only resource representing an actual
+// run of the scan.
+// Next id: 12
+type ScanRun struct {
+	// EndTime: Output only.
+	// The time at which the ScanRun reached termination state - that the
+	// ScanRun
+	// is either finished or stopped by user.
+	EndTime string `json:"endTime,omitempty"`
+
+	// ErrorTrace: Output only.
+	// If result_state is an ERROR, this field provides the primary reason
+	// for
+	// scan's termination and more details, if such are available.
+	ErrorTrace *ScanRunErrorTrace `json:"errorTrace,omitempty"`
+
+	// ExecutionState: Output only.
+	// The execution state of the ScanRun.
+	//
+	// Possible values:
+	//   "EXECUTION_STATE_UNSPECIFIED" - Represents an invalid state caused
+	// by internal server error. This value
+	// should never be returned.
+	//   "QUEUED" - The scan is waiting in the queue.
+	//   "SCANNING" - The scan is in progress.
+	//   "FINISHED" - The scan is either finished or stopped by user.
+	ExecutionState string `json:"executionState,omitempty"`
+
+	// HasVulnerabilities: Output only.
+	// Whether the scan run has found any vulnerabilities.
+	HasVulnerabilities bool `json:"hasVulnerabilities,omitempty"`
+
+	// Name: Output only.
+	// The resource name of the ScanRun. The name follows the format
+	// of
+	// 'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunI
+	// d}'.
+	// The ScanRun IDs are generated by the system.
+	Name string `json:"name,omitempty"`
+
+	// ProgressPercent: Output only.
+	// The percentage of total completion ranging from 0 to 100.
+	// If the scan is in queue, the value is 0.
+	// If the scan is running, the value ranges from 0 to 100.
+	// If the scan is finished, the value is 100.
+	ProgressPercent int64 `json:"progressPercent,omitempty"`
+
+	// ResultState: Output only.
+	// The result state of the ScanRun. This field is only available after
+	// the
+	// execution state reaches "FINISHED".
+	//
+	// Possible values:
+	//   "RESULT_STATE_UNSPECIFIED" - Default value. This value is returned
+	// when the ScanRun is not yet
+	// finished.
+	//   "SUCCESS" - The scan finished without errors.
+	//   "ERROR" - The scan finished with errors.
+	//   "KILLED" - The scan was terminated by user.
+	ResultState string `json:"resultState,omitempty"`
+
+	// StartTime: Output only.
+	// The time at which the ScanRun started.
+	StartTime string `json:"startTime,omitempty"`
+
+	// UrlsCrawledCount: Output only.
+	// The number of URLs crawled during this ScanRun. If the scan is in
+	// progress,
+	// the value represents the number of URLs crawled up to now.
+	UrlsCrawledCount int64 `json:"urlsCrawledCount,omitempty,string"`
+
+	// UrlsTestedCount: Output only.
+	// The number of URLs tested during this ScanRun. If the scan is in
+	// progress,
+	// the value represents the number of URLs tested up to now. The number
+	// of
+	// URLs tested is usually larger than the number URLS crawled
+	// because
+	// typically a crawled URL is tested with multiple test payloads.
+	UrlsTestedCount int64 `json:"urlsTestedCount,omitempty,string"`
+
+	// WarningTraces: Output only.
+	// A list of warnings, if such are encountered during this scan run.
+	WarningTraces []*ScanRunWarningTrace `json:"warningTraces,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "EndTime") 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. "EndTime") 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 *ScanRun) MarshalJSON() ([]byte, error) {
+	type NoMethod ScanRun
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ScanRunErrorTrace: Output only.
+// Defines an error trace message for a ScanRun.
+type ScanRunErrorTrace struct {
+	// Code: Output only.
+	// Indicates the error reason code.
+	//
+	// Possible values:
+	//   "CODE_UNSPECIFIED" - Default value is never used.
+	//   "INTERNAL_ERROR" - Indicates that the scan run failed due to an
+	// internal server error.
+	//   "SCAN_CONFIG_ISSUE" - Indicates a scan configuration error, usually
+	// due to outdated ScanConfig
+	// settings, such as starting_urls or the DNS configuration.
+	//   "AUTHENTICATION_CONFIG_ISSUE" - Indicates an authentication error,
+	// usually due to outdated ScanConfig
+	// authentication settings.
+	//   "TIMED_OUT_WHILE_SCANNING" - Indicates a scan operation timeout,
+	// usually caused by a very large site.
+	//   "TOO_MANY_REDIRECTS" - Indicates that a scan encountered excessive
+	// redirects, either to
+	// authentication or some other page outside of the scan scope.
+	//   "TOO_MANY_HTTP_ERRORS" - Indicates that a scan encountered numerous
+	// errors from the web site
+	// pages. When available, most_common_http_error_code field indicates
+	// the
+	// the most common HTTP error code encountered during the scan.
+	Code string `json:"code,omitempty"`
+
+	// MostCommonHttpErrorCode: Output only.
+	// If the scan encounters TOO_MANY_HTTP_ERRORS, this field indicates the
+	// most
+	// common HTTP error code, if such is available. For example, if this
+	// code is
+	// 404, the scan has encountered too many NOT_FOUND responses.
+	MostCommonHttpErrorCode int64 `json:"mostCommonHttpErrorCode,omitempty"`
+
+	// ScanConfigError: Output only.
+	// If the scan encounters SCAN_CONFIG_ISSUE error, this field has the
+	// error
+	// message encountered during scan configuration validation that is
+	// performed
+	// before each scan run.
+	ScanConfigError *ScanConfigError `json:"scanConfigError,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") 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. "Code") 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 *ScanRunErrorTrace) MarshalJSON() ([]byte, error) {
+	type NoMethod ScanRunErrorTrace
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ScanRunWarningTrace: Output only.
+// Defines a warning trace message for ScanRun. Warning traces provide
+// customers
+// with useful information that helps make the scanning process more
+// effective.
+type ScanRunWarningTrace struct {
+	// Code: Output only.
+	// Indicates the warning code.
+	//
+	// Possible values:
+	//   "CODE_UNSPECIFIED" - Default value is never used.
+	//   "INSUFFICIENT_CRAWL_RESULTS" - Indicates that a scan discovered an
+	// unexpectedly low number of URLs. This
+	// is sometimes caused by complex navigation features or by using a
+	// single
+	// URL for numerous pages.
+	//   "TOO_MANY_CRAWL_RESULTS" - Indicates that a scan discovered too
+	// many URLs to test, or excessive
+	// redundant URLs.
+	//   "TOO_MANY_FUZZ_TASKS" - Indicates that too many tests have been
+	// generated for the scan. Customer
+	// should try reducing the number of starting URLs, increasing the QPS
+	// rate,
+	// or narrowing down the scope of the scan using the excluded patterns.
+	//   "BLOCKED_BY_IAP" - Indicates that a scan is blocked by IAP.
+	Code string `json:"code,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") 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. "Code") 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 *ScanRunWarningTrace) MarshalJSON() ([]byte, error) {
+	type NoMethod ScanRunWarningTrace
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Schedule: Scan schedule configuration.
+type Schedule struct {
+	// IntervalDurationDays: Required.
+	// The duration of time between executions in days.
+	IntervalDurationDays int64 `json:"intervalDurationDays,omitempty"`
+
+	// ScheduleTime: A timestamp indicates when the next run will be
+	// scheduled. The value is
+	// refreshed by the server after each run. If unspecified, it will
+	// default
+	// to current server time, which means the scan will be scheduled to
+	// start
+	// immediately.
+	ScheduleTime string `json:"scheduleTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "IntervalDurationDays") 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. "IntervalDurationDays") 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 *Schedule) MarshalJSON() ([]byte, error) {
+	type NoMethod Schedule
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// StartScanRunRequest: Request for the `StartScanRun` method.
+type StartScanRunRequest struct {
+}
+
+// StopScanRunRequest: Request for the `StopScanRun` method.
+type StopScanRunRequest struct {
+}
+
+// ViolatingResource: Information regarding any resource causing the
+// vulnerability such
+// as JavaScript sources, image, audio files, etc.
+type ViolatingResource struct {
+	// ContentType: The MIME type of this resource.
+	ContentType string `json:"contentType,omitempty"`
+
+	// ResourceUrl: URL of this violating resource.
+	ResourceUrl string `json:"resourceUrl,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ContentType") 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. "ContentType") 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 *ViolatingResource) MarshalJSON() ([]byte, error) {
+	type NoMethod ViolatingResource
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// VulnerableHeaders: Information about vulnerable or missing HTTP
+// Headers.
+type VulnerableHeaders struct {
+	// Headers: List of vulnerable headers.
+	Headers []*Header `json:"headers,omitempty"`
+
+	// MissingHeaders: List of missing headers.
+	MissingHeaders []*Header `json:"missingHeaders,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Headers") 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. "Headers") 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 *VulnerableHeaders) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerableHeaders
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// VulnerableParameters: Information about vulnerable request
+// parameters.
+type VulnerableParameters struct {
+	// ParameterNames: The vulnerable parameter names.
+	ParameterNames []string `json:"parameterNames,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ParameterNames") 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. "ParameterNames") 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 *VulnerableParameters) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerableParameters
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Xss: Information reported for an XSS.
+type Xss struct {
+	// ErrorMessage: An error message generated by a javascript breakage.
+	ErrorMessage string `json:"errorMessage,omitempty"`
+
+	// StackTraces: Stack traces leading to the point where the XSS
+	// occurred.
+	StackTraces []string `json:"stackTraces,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ErrorMessage") 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. "ErrorMessage") 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 *Xss) MarshalJSON() ([]byte, error) {
+	type NoMethod Xss
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "websecurityscanner.projects.scanConfigs.create":
+
+type ProjectsScanConfigsCreateCall struct {
+	s          *Service
+	parent     string
+	scanconfig *ScanConfig
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates a new ScanConfig.
+func (r *ProjectsScanConfigsService) Create(parent string, scanconfig *ScanConfig) *ProjectsScanConfigsCreateCall {
+	c := &ProjectsScanConfigsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.scanconfig = scanconfig
+	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 *ProjectsScanConfigsCreateCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsCreateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsScanConfigsCreateCall) Context(ctx context.Context) *ProjectsScanConfigsCreateCall {
+	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 *ProjectsScanConfigsCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.scanconfig)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}/scanConfigs")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.create" call.
+// Exactly one of *ScanConfig or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ScanConfig.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 *ProjectsScanConfigsCreateCall) Do(opts ...googleapi.CallOption) (*ScanConfig, 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 := &ScanConfig{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a new ScanConfig.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs",
+	//   "httpMethod": "POST",
+	//   "id": "websecurityscanner.projects.scanConfigs.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Required.\nThe parent resource name where the scan is created, which should be a\nproject resource name in the format 'projects/{projectId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+parent}/scanConfigs",
+	//   "request": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "response": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.delete":
+
+type ProjectsScanConfigsDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes an existing ScanConfig and its child resources.
+func (r *ProjectsScanConfigsService) Delete(name string) *ProjectsScanConfigsDeleteCall {
+	c := &ProjectsScanConfigsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsScanConfigsDeleteCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsScanConfigsDeleteCall) Context(ctx context.Context) *ProjectsScanConfigsDeleteCall {
+	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 *ProjectsScanConfigsDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.delete" call.
+// Exactly one of *Empty or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Empty.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 *ProjectsScanConfigsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, 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 := &Empty{
+		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": "Deletes an existing ScanConfig and its child resources.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "websecurityscanner.projects.scanConfigs.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\nThe resource name of the ScanConfig to be deleted. The name follows the\nformat of 'projects/{projectId}/scanConfigs/{scanConfigId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.get":
+
+type ProjectsScanConfigsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a ScanConfig.
+func (r *ProjectsScanConfigsService) Get(name string) *ProjectsScanConfigsGetCall {
+	c := &ProjectsScanConfigsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsScanConfigsGetCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsGetCall {
+	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 *ProjectsScanConfigsGetCall) IfNoneMatch(entityTag string) *ProjectsScanConfigsGetCall {
+	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 *ProjectsScanConfigsGetCall) Context(ctx context.Context) *ProjectsScanConfigsGetCall {
+	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 *ProjectsScanConfigsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.get" call.
+// Exactly one of *ScanConfig or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ScanConfig.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 *ProjectsScanConfigsGetCall) Do(opts ...googleapi.CallOption) (*ScanConfig, 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 := &ScanConfig{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a ScanConfig.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+	//   "httpMethod": "GET",
+	//   "id": "websecurityscanner.projects.scanConfigs.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\nThe resource name of the ScanConfig to be returned. The name follows the\nformat of 'projects/{projectId}/scanConfigs/{scanConfigId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+name}",
+	//   "response": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.list":
+
+type ProjectsScanConfigsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists ScanConfigs under a given project.
+func (r *ProjectsScanConfigsService) List(parent string) *ProjectsScanConfigsListCall {
+	c := &ProjectsScanConfigsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of ScanConfigs to return, can be limited by server.
+// If not specified or not positive, the implementation will select
+// a
+// reasonable value.
+func (c *ProjectsScanConfigsListCall) PageSize(pageSize int64) *ProjectsScanConfigsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A token
+// identifying a page of results to be returned. This should be
+// a
+// `next_page_token` value returned from a previous List request.
+// If unspecified, the first page of results is returned.
+func (c *ProjectsScanConfigsListCall) PageToken(pageToken string) *ProjectsScanConfigsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsScanConfigsListCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsListCall {
+	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 *ProjectsScanConfigsListCall) IfNoneMatch(entityTag string) *ProjectsScanConfigsListCall {
+	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 *ProjectsScanConfigsListCall) Context(ctx context.Context) *ProjectsScanConfigsListCall {
+	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 *ProjectsScanConfigsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}/scanConfigs")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.list" call.
+// Exactly one of *ListScanConfigsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListScanConfigsResponse.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 *ProjectsScanConfigsListCall) Do(opts ...googleapi.CallOption) (*ListScanConfigsResponse, 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 := &ListScanConfigsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists ScanConfigs under a given project.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs",
+	//   "httpMethod": "GET",
+	//   "id": "websecurityscanner.projects.scanConfigs.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of ScanConfigs to return, can be limited by server.\nIf not specified or not positive, the implementation will select a\nreasonable value.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A token identifying a page of results to be returned. This should be a\n`next_page_token` value returned from a previous List request.\nIf unspecified, the first page of results is returned.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "Required.\nThe parent resource name, which should be a project resource name in the\nformat 'projects/{projectId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+parent}/scanConfigs",
+	//   "response": {
+	//     "$ref": "ListScanConfigsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsScanConfigsListCall) Pages(ctx context.Context, f func(*ListScanConfigsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "websecurityscanner.projects.scanConfigs.patch":
+
+type ProjectsScanConfigsPatchCall struct {
+	s          *Service
+	name       string
+	scanconfig *ScanConfig
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates a ScanConfig. This method support partial update of a
+// ScanConfig.
+func (r *ProjectsScanConfigsService) Patch(name string, scanconfig *ScanConfig) *ProjectsScanConfigsPatchCall {
+	c := &ProjectsScanConfigsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.scanconfig = scanconfig
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": Required.
+// The update mask applies to the resource. For the `FieldMask`
+// definition,
+// see
+// https://developers.google.com/protocol-buffers/docs/re
+// ference/google.protobuf#fieldmask
+func (c *ProjectsScanConfigsPatchCall) UpdateMask(updateMask string) *ProjectsScanConfigsPatchCall {
+	c.urlParams_.Set("updateMask", updateMask)
+	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 *ProjectsScanConfigsPatchCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsScanConfigsPatchCall) Context(ctx context.Context) *ProjectsScanConfigsPatchCall {
+	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 *ProjectsScanConfigsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.scanconfig)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.patch" call.
+// Exactly one of *ScanConfig or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *ScanConfig.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 *ProjectsScanConfigsPatchCall) Do(opts ...googleapi.CallOption) (*ScanConfig, 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 := &ScanConfig{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates a ScanConfig. This method support partial update of a ScanConfig.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "websecurityscanner.projects.scanConfigs.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The resource name of the ScanConfig. The name follows the format of\n'projects/{projectId}/scanConfigs/{scanConfigId}'. The ScanConfig IDs are\ngenerated by the system.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "Required.\nThe update mask applies to the resource. For the `FieldMask` definition,\nsee\nhttps://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+name}",
+	//   "request": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "response": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.start":
+
+type ProjectsScanConfigsStartCall struct {
+	s                   *Service
+	name                string
+	startscanrunrequest *StartScanRunRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// Start: Start a ScanRun according to the given ScanConfig.
+func (r *ProjectsScanConfigsService) Start(name string, startscanrunrequest *StartScanRunRequest) *ProjectsScanConfigsStartCall {
+	c := &ProjectsScanConfigsStartCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.startscanrunrequest = startscanrunrequest
+	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 *ProjectsScanConfigsStartCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsStartCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsScanConfigsStartCall) Context(ctx context.Context) *ProjectsScanConfigsStartCall {
+	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 *ProjectsScanConfigsStartCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsStartCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.startscanrunrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}:start")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.start" call.
+// Exactly one of *ScanRun or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *ScanRun.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 *ProjectsScanConfigsStartCall) Do(opts ...googleapi.CallOption) (*ScanRun, 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 := &ScanRun{
+		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": "Start a ScanRun according to the given ScanConfig.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}:start",
+	//   "httpMethod": "POST",
+	//   "id": "websecurityscanner.projects.scanConfigs.start",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\nThe resource name of the ScanConfig to be used. The name follows the\nformat of 'projects/{projectId}/scanConfigs/{scanConfigId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+name}:start",
+	//   "request": {
+	//     "$ref": "StartScanRunRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "ScanRun"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.scanRuns.get":
+
+type ProjectsScanConfigsScanRunsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a ScanRun.
+func (r *ProjectsScanConfigsScanRunsService) Get(name string) *ProjectsScanConfigsScanRunsGetCall {
+	c := &ProjectsScanConfigsScanRunsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsScanConfigsScanRunsGetCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsScanRunsGetCall {
+	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 *ProjectsScanConfigsScanRunsGetCall) IfNoneMatch(entityTag string) *ProjectsScanConfigsScanRunsGetCall {
+	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 *ProjectsScanConfigsScanRunsGetCall) Context(ctx context.Context) *ProjectsScanConfigsScanRunsGetCall {
+	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 *ProjectsScanConfigsScanRunsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsScanRunsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.scanRuns.get" call.
+// Exactly one of *ScanRun or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *ScanRun.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 *ProjectsScanConfigsScanRunsGetCall) Do(opts ...googleapi.CallOption) (*ScanRun, 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 := &ScanRun{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a ScanRun.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}",
+	//   "httpMethod": "GET",
+	//   "id": "websecurityscanner.projects.scanConfigs.scanRuns.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\nThe resource name of the ScanRun to be returned. The name follows the\nformat of\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+name}",
+	//   "response": {
+	//     "$ref": "ScanRun"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.scanRuns.list":
+
+type ProjectsScanConfigsScanRunsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists ScanRuns under a given ScanConfig, in descending order of
+// ScanRun
+// stop time.
+func (r *ProjectsScanConfigsScanRunsService) List(parent string) *ProjectsScanConfigsScanRunsListCall {
+	c := &ProjectsScanConfigsScanRunsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of ScanRuns to return, can be limited by server.
+// If not specified or not positive, the implementation will select
+// a
+// reasonable value.
+func (c *ProjectsScanConfigsScanRunsListCall) PageSize(pageSize int64) *ProjectsScanConfigsScanRunsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A token
+// identifying a page of results to be returned. This should be
+// a
+// `next_page_token` value returned from a previous List request.
+// If unspecified, the first page of results is returned.
+func (c *ProjectsScanConfigsScanRunsListCall) PageToken(pageToken string) *ProjectsScanConfigsScanRunsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsScanConfigsScanRunsListCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsScanRunsListCall {
+	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 *ProjectsScanConfigsScanRunsListCall) IfNoneMatch(entityTag string) *ProjectsScanConfigsScanRunsListCall {
+	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 *ProjectsScanConfigsScanRunsListCall) Context(ctx context.Context) *ProjectsScanConfigsScanRunsListCall {
+	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 *ProjectsScanConfigsScanRunsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsScanRunsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}/scanRuns")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.scanRuns.list" call.
+// Exactly one of *ListScanRunsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListScanRunsResponse.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 *ProjectsScanConfigsScanRunsListCall) Do(opts ...googleapi.CallOption) (*ListScanRunsResponse, 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 := &ListScanRunsResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists ScanRuns under a given ScanConfig, in descending order of ScanRun\nstop time.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns",
+	//   "httpMethod": "GET",
+	//   "id": "websecurityscanner.projects.scanConfigs.scanRuns.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of ScanRuns to return, can be limited by server.\nIf not specified or not positive, the implementation will select a\nreasonable value.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A token identifying a page of results to be returned. This should be a\n`next_page_token` value returned from a previous List request.\nIf unspecified, the first page of results is returned.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "Required.\nThe parent resource name, which should be a scan resource name in the\nformat 'projects/{projectId}/scanConfigs/{scanConfigId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+parent}/scanRuns",
+	//   "response": {
+	//     "$ref": "ListScanRunsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsScanConfigsScanRunsListCall) Pages(ctx context.Context, f func(*ListScanRunsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "websecurityscanner.projects.scanConfigs.scanRuns.stop":
+
+type ProjectsScanConfigsScanRunsStopCall struct {
+	s                  *Service
+	name               string
+	stopscanrunrequest *StopScanRunRequest
+	urlParams_         gensupport.URLParams
+	ctx_               context.Context
+	header_            http.Header
+}
+
+// Stop: Stops a ScanRun. The stopped ScanRun is returned.
+func (r *ProjectsScanConfigsScanRunsService) Stop(name string, stopscanrunrequest *StopScanRunRequest) *ProjectsScanConfigsScanRunsStopCall {
+	c := &ProjectsScanConfigsScanRunsStopCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.stopscanrunrequest = stopscanrunrequest
+	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 *ProjectsScanConfigsScanRunsStopCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsScanRunsStopCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsScanConfigsScanRunsStopCall) Context(ctx context.Context) *ProjectsScanConfigsScanRunsStopCall {
+	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 *ProjectsScanConfigsScanRunsStopCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsScanRunsStopCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.stopscanrunrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}:stop")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.scanRuns.stop" call.
+// Exactly one of *ScanRun or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *ScanRun.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 *ProjectsScanConfigsScanRunsStopCall) Do(opts ...googleapi.CallOption) (*ScanRun, 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 := &ScanRun{
+		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": "Stops a ScanRun. The stopped ScanRun is returned.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}:stop",
+	//   "httpMethod": "POST",
+	//   "id": "websecurityscanner.projects.scanConfigs.scanRuns.stop",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\nThe resource name of the ScanRun to be stopped. The name follows the\nformat of\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+name}:stop",
+	//   "request": {
+	//     "$ref": "StopScanRunRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "ScanRun"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.scanRuns.crawledUrls.list":
+
+type ProjectsScanConfigsScanRunsCrawledUrlsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List CrawledUrls under a given ScanRun.
+func (r *ProjectsScanConfigsScanRunsCrawledUrlsService) List(parent string) *ProjectsScanConfigsScanRunsCrawledUrlsListCall {
+	c := &ProjectsScanConfigsScanRunsCrawledUrlsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of CrawledUrls to return, can be limited by server.
+// If not specified or not positive, the implementation will select
+// a
+// reasonable value.
+func (c *ProjectsScanConfigsScanRunsCrawledUrlsListCall) PageSize(pageSize int64) *ProjectsScanConfigsScanRunsCrawledUrlsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A token
+// identifying a page of results to be returned. This should be
+// a
+// `next_page_token` value returned from a previous List request.
+// If unspecified, the first page of results is returned.
+func (c *ProjectsScanConfigsScanRunsCrawledUrlsListCall) PageToken(pageToken string) *ProjectsScanConfigsScanRunsCrawledUrlsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsScanConfigsScanRunsCrawledUrlsListCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsScanRunsCrawledUrlsListCall {
+	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 *ProjectsScanConfigsScanRunsCrawledUrlsListCall) IfNoneMatch(entityTag string) *ProjectsScanConfigsScanRunsCrawledUrlsListCall {
+	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 *ProjectsScanConfigsScanRunsCrawledUrlsListCall) Context(ctx context.Context) *ProjectsScanConfigsScanRunsCrawledUrlsListCall {
+	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 *ProjectsScanConfigsScanRunsCrawledUrlsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsScanRunsCrawledUrlsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}/crawledUrls")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.scanRuns.crawledUrls.list" call.
+// Exactly one of *ListCrawledUrlsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListCrawledUrlsResponse.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 *ProjectsScanConfigsScanRunsCrawledUrlsListCall) Do(opts ...googleapi.CallOption) (*ListCrawledUrlsResponse, 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 := &ListCrawledUrlsResponse{
+		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": "List CrawledUrls under a given ScanRun.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}/crawledUrls",
+	//   "httpMethod": "GET",
+	//   "id": "websecurityscanner.projects.scanConfigs.scanRuns.crawledUrls.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "The maximum number of CrawledUrls to return, can be limited by server.\nIf not specified or not positive, the implementation will select a\nreasonable value.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A token identifying a page of results to be returned. This should be a\n`next_page_token` value returned from a previous List request.\nIf unspecified, the first page of results is returned.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "Required.\nThe parent resource name, which should be a scan run resource name in the\nformat\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+parent}/crawledUrls",
+	//   "response": {
+	//     "$ref": "ListCrawledUrlsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsScanConfigsScanRunsCrawledUrlsListCall) Pages(ctx context.Context, f func(*ListCrawledUrlsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "websecurityscanner.projects.scanConfigs.scanRuns.findingTypeStats.list":
+
+type ProjectsScanConfigsScanRunsFindingTypeStatsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List all FindingTypeStats under a given ScanRun.
+func (r *ProjectsScanConfigsScanRunsFindingTypeStatsService) List(parent string) *ProjectsScanConfigsScanRunsFindingTypeStatsListCall {
+	c := &ProjectsScanConfigsScanRunsFindingTypeStatsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	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 *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsScanRunsFindingTypeStatsListCall {
+	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 *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) IfNoneMatch(entityTag string) *ProjectsScanConfigsScanRunsFindingTypeStatsListCall {
+	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 *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) Context(ctx context.Context) *ProjectsScanConfigsScanRunsFindingTypeStatsListCall {
+	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 *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}/findingTypeStats")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.scanRuns.findingTypeStats.list" call.
+// Exactly one of *ListFindingTypeStatsResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *ListFindingTypeStatsResponse.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 *ProjectsScanConfigsScanRunsFindingTypeStatsListCall) Do(opts ...googleapi.CallOption) (*ListFindingTypeStatsResponse, 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 := &ListFindingTypeStatsResponse{
+		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": "List all FindingTypeStats under a given ScanRun.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}/findingTypeStats",
+	//   "httpMethod": "GET",
+	//   "id": "websecurityscanner.projects.scanConfigs.scanRuns.findingTypeStats.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Required.\nThe parent resource name, which should be a scan run resource name in the\nformat\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+parent}/findingTypeStats",
+	//   "response": {
+	//     "$ref": "ListFindingTypeStatsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.scanRuns.findings.get":
+
+type ProjectsScanConfigsScanRunsFindingsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a Finding.
+func (r *ProjectsScanConfigsScanRunsFindingsService) Get(name string) *ProjectsScanConfigsScanRunsFindingsGetCall {
+	c := &ProjectsScanConfigsScanRunsFindingsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsScanConfigsScanRunsFindingsGetCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsScanRunsFindingsGetCall {
+	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 *ProjectsScanConfigsScanRunsFindingsGetCall) IfNoneMatch(entityTag string) *ProjectsScanConfigsScanRunsFindingsGetCall {
+	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 *ProjectsScanConfigsScanRunsFindingsGetCall) Context(ctx context.Context) *ProjectsScanConfigsScanRunsFindingsGetCall {
+	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 *ProjectsScanConfigsScanRunsFindingsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsScanRunsFindingsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.scanRuns.findings.get" call.
+// Exactly one of *Finding or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Finding.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 *ProjectsScanConfigsScanRunsFindingsGetCall) Do(opts ...googleapi.CallOption) (*Finding, 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 := &Finding{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Gets a Finding.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}/findings/{findingsId}",
+	//   "httpMethod": "GET",
+	//   "id": "websecurityscanner.projects.scanConfigs.scanRuns.findings.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Required.\nThe resource name of the Finding to be returned. The name follows the\nformat of\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}/findings/{findingId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+/findings/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+name}",
+	//   "response": {
+	//     "$ref": "Finding"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "websecurityscanner.projects.scanConfigs.scanRuns.findings.list":
+
+type ProjectsScanConfigsScanRunsFindingsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: List Findings under a given ScanRun.
+func (r *ProjectsScanConfigsScanRunsFindingsService) List(parent string) *ProjectsScanConfigsScanRunsFindingsListCall {
+	c := &ProjectsScanConfigsScanRunsFindingsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+// The expression must be in the format: <field>
+// <operator> <value>.
+// Supported field: 'finding_type'.
+// Supported operator: '='.
+func (c *ProjectsScanConfigsScanRunsFindingsListCall) Filter(filter string) *ProjectsScanConfigsScanRunsFindingsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The maximum number
+// of Findings to return, can be limited by server.
+// If not specified or not positive, the implementation will select
+// a
+// reasonable value.
+func (c *ProjectsScanConfigsScanRunsFindingsListCall) PageSize(pageSize int64) *ProjectsScanConfigsScanRunsFindingsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A token
+// identifying a page of results to be returned. This should be
+// a
+// `next_page_token` value returned from a previous List request.
+// If unspecified, the first page of results is returned.
+func (c *ProjectsScanConfigsScanRunsFindingsListCall) PageToken(pageToken string) *ProjectsScanConfigsScanRunsFindingsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsScanConfigsScanRunsFindingsListCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsScanRunsFindingsListCall {
+	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 *ProjectsScanConfigsScanRunsFindingsListCall) IfNoneMatch(entityTag string) *ProjectsScanConfigsScanRunsFindingsListCall {
+	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 *ProjectsScanConfigsScanRunsFindingsListCall) Context(ctx context.Context) *ProjectsScanConfigsScanRunsFindingsListCall {
+	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 *ProjectsScanConfigsScanRunsFindingsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsScanRunsFindingsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}/findings")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "websecurityscanner.projects.scanConfigs.scanRuns.findings.list" call.
+// Exactly one of *ListFindingsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListFindingsResponse.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 *ProjectsScanConfigsScanRunsFindingsListCall) Do(opts ...googleapi.CallOption) (*ListFindingsResponse, 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 := &ListFindingsResponse{
+		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": "List Findings under a given ScanRun.",
+	//   "flatPath": "v1beta/projects/{projectsId}/scanConfigs/{scanConfigsId}/scanRuns/{scanRunsId}/findings",
+	//   "httpMethod": "GET",
+	//   "id": "websecurityscanner.projects.scanConfigs.scanRuns.findings.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression. The expression must be in the format: \u003cfield\u003e\n\u003coperator\u003e \u003cvalue\u003e.\nSupported field: 'finding_type'.\nSupported operator: '='.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The maximum number of Findings to return, can be limited by server.\nIf not specified or not positive, the implementation will select a\nreasonable value.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A token identifying a page of results to be returned. This should be a\n`next_page_token` value returned from a previous List request.\nIf unspecified, the first page of results is returned.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "Required.\nThe parent resource name, which should be a scan run resource name in the\nformat\n'projects/{projectId}/scanConfigs/{scanConfigId}/scanRuns/{scanRunId}'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+/scanRuns/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta/{+parent}/findings",
+	//   "response": {
+	//     "$ref": "ListFindingsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *ProjectsScanConfigsScanRunsFindingsListCall) Pages(ctx context.Context, f func(*ListFindingsResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}