all: autogenerated update (2019-01-09)

Add:
- containeranalysis/v1alpha1
- containeranalysis/v1beta1
- libraryagent/v1
- remotebuildexecution/v1
- remotebuildexecution/v1alpha
- remotebuildexecution/v2

Update:
- abusiveexperiencereport/v1
- acceleratedmobilepageurl/v1
- accesscontextmanager/v1beta
- adexchangebuyer/v1.2
- adexchangebuyer/v1.3
- adexchangebuyer/v1.4
- adexchangebuyer2/v2beta1
- adexperiencereport/v1
- admin/datatransfer/v1
- admin/directory/v1
- admin/reports/v1
- adsense/v1.4
- adsensehost/v4.1
- alertcenter/v1beta1
- analytics/v2.4
- analytics/v3
- analyticsreporting/v4
- androiddeviceprovisioning/v1
- androidenterprise/v1
- androidmanagement/v1
- androidpublisher/v1
- androidpublisher/v1.1
- androidpublisher/v2
- androidpublisher/v3
- appengine/v1
- appengine/v1alpha
- appengine/v1beta
- appengine/v1beta4
- appengine/v1beta5
- appsactivity/v1
- appstate/v1
- bigquery/v2
- bigquerydatatransfer/v1
- bigtableadmin/v2
- binaryauthorization/v1beta1
- blogger/v2
- blogger/v3
- books/v1
- calendar/v3
- chat/v1
- civicinfo/v2
- classroom/v1
- cloudasset/v1beta1
- cloudbilling/v1
- cloudbuild/v1
- cloudbuild/v1alpha1
- clouddebugger/v2
- clouderrorreporting/v1beta1
- cloudfunctions/v1
- cloudfunctions/v1beta2
- cloudidentity/v1
- cloudidentity/v1beta1
- cloudiot/v1
- cloudkms/v1
- cloudprofiler/v2
- cloudresourcemanager/v1
- cloudresourcemanager/v1beta1
- cloudresourcemanager/v2
- cloudresourcemanager/v2beta1
- cloudscheduler/v1beta1
- cloudsearch/v1
- cloudshell/v1
- cloudshell/v1alpha1
- cloudtasks/v2beta2
- cloudtasks/v2beta3
- cloudtrace/v1
- cloudtrace/v2
- composer/v1
- composer/v1beta1
- compute/v0.alpha
- compute/v0.beta
- compute/v1
- container/v1
- container/v1beta1
- content/v2
- content/v2.1
- customsearch/v1
- dataflow/v1b3
- dataproc/v1
- dataproc/v1beta2
- datastore/v1
- datastore/v1beta1
- datastore/v1beta3
- deploymentmanager/v0.alpha
- deploymentmanager/v2
- deploymentmanager/v2beta
- dfareporting/v3.1
- dfareporting/v3.2
- dialogflow/v2
- dialogflow/v2beta1
- digitalassetlinks/v1
- discovery/v1
- dlp/v2
- dns/v1
- dns/v1beta2
- dns/v2beta1
- doubleclickbidmanager/v1
- doubleclicksearch/v2
- drive/v2
- drive/v3
- driveactivity/v2
- file/v1beta1
- firebasedynamiclinks/v1
- firebasehosting/v1beta1
- firebaserules/v1
- firestore/v1
- firestore/v1beta1
- firestore/v1beta2
- fitness/v1
- fusiontables/v1
- fusiontables/v2
- games/v1
- gamesconfiguration/v1configuration
- gamesmanagement/v1management
- genomics/v1
- genomics/v1alpha2
- genomics/v2alpha1
- gmail/v1
- groupsmigration/v1
- groupssettings/v1
- iam/v1
- iamcredentials/v1
- iap/v1
- iap/v1beta1
- identitytoolkit/v3
- indexing/v3
- jobs/v2
- jobs/v3
- jobs/v3p1beta1
- kgsearch/v1
- language/v1
- language/v1beta1
- language/v1beta2
- licensing/v1
- logging/v2
- logging/v2beta1
- manufacturers/v1
- mirror/v1
- ml/v1
- monitoring/v1
- monitoring/v3
- oauth2/v1
- oauth2/v2
- oslogin/v1
- oslogin/v1alpha
- oslogin/v1beta
- pagespeedonline/v1
- pagespeedonline/v2
- pagespeedonline/v4
- pagespeedonline/v5
- people/v1
- playcustomapp/v1
- plus/v1
- plusdomains/v1
- poly/v1
- proximitybeacon/v1beta1
- pubsub/v1
- pubsub/v1beta1a
- pubsub/v1beta2
- redis/v1
- redis/v1beta1
- replicapool/v1beta1
- reseller/v1
- runtimeconfig/v1
- runtimeconfig/v1beta1
- safebrowsing/v4
- script/v1
- searchconsole/v1
- servicebroker/v1
- servicebroker/v1alpha1
- servicebroker/v1beta1
- serviceconsumermanagement/v1
- servicecontrol/v1
- servicemanagement/v1
- servicenetworking/v1beta
- serviceusage/v1
- serviceusage/v1beta1
- sheets/v4
- siteverification/v1
- slides/v1
- sourcerepo/v1
- spanner/v1
- speech/v1
- speech/v1p1beta1
- sqladmin/v1beta4
- storage/v1
- storage/v1beta1
- storage/v1beta2
- storagetransfer/v1
- streetviewpublish/v1
- surveys/v2
- tagmanager/v1
- tagmanager/v2
- tasks/v1
- testing/v1
- texttospeech/v1
- texttospeech/v1beta1
- toolresults/v1beta3
- tpu/v1
- tpu/v1alpha1
- translate/v2
- urlshortener/v1
- vault/v1
- videointelligence/v1
- videointelligence/v1beta2
- videointelligence/v1p1beta1
- vision/v1
- vision/v1p1beta1
- vision/v1p2beta1
- webfonts/v1
- webmasters/v3
- websecurityscanner/v1alpha
- youtube/v3
- youtubeanalytics/v1
- youtubeanalytics/v1beta1
- youtubeanalytics/v2
- youtubereporting/v1
diff --git a/abusiveexperiencereport/v1/abusiveexperiencereport-gen.go b/abusiveexperiencereport/v1/abusiveexperiencereport-gen.go
index 6ab6b23..2bc1154 100644
--- a/abusiveexperiencereport/v1/abusiveexperiencereport-gen.go
+++ b/abusiveexperiencereport/v1/abusiveexperiencereport-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-gen.go b/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-gen.go
index b2b9051..1002c76 100644
--- a/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-gen.go
+++ b/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/accesscontextmanager/v1beta/accesscontextmanager-gen.go b/accesscontextmanager/v1beta/accesscontextmanager-gen.go
index be58951..88ddbcf 100644
--- a/accesscontextmanager/v1beta/accesscontextmanager-gen.go
+++ b/accesscontextmanager/v1beta/accesscontextmanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/adexchangebuyer/v1.2/adexchangebuyer-gen.go b/adexchangebuyer/v1.2/adexchangebuyer-gen.go
index 2b1fba5..9b7fd4b 100644
--- a/adexchangebuyer/v1.2/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.2/adexchangebuyer-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/adexchangebuyer/v1.3/adexchangebuyer-gen.go b/adexchangebuyer/v1.3/adexchangebuyer-gen.go
index 8eb5691..bed5e68 100644
--- a/adexchangebuyer/v1.3/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.3/adexchangebuyer-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/adexchangebuyer/v1.4/adexchangebuyer-gen.go b/adexchangebuyer/v1.4/adexchangebuyer-gen.go
index da635eb..a345521 100644
--- a/adexchangebuyer/v1.4/adexchangebuyer-gen.go
+++ b/adexchangebuyer/v1.4/adexchangebuyer-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
index f553968..447bfe8 100644
--- a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
+++ b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/adexperiencereport/v1/adexperiencereport-gen.go b/adexperiencereport/v1/adexperiencereport-gen.go
index 5ee7ea0..1f17e4d 100644
--- a/adexperiencereport/v1/adexperiencereport-gen.go
+++ b/adexperiencereport/v1/adexperiencereport-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/admin/datatransfer/v1/admin-gen.go b/admin/datatransfer/v1/admin-gen.go
index 0438b51..04e1749 100644
--- a/admin/datatransfer/v1/admin-gen.go
+++ b/admin/datatransfer/v1/admin-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/admin/directory/v1/admin-gen.go b/admin/directory/v1/admin-gen.go
index 74f2989..1b998ee 100644
--- a/admin/directory/v1/admin-gen.go
+++ b/admin/directory/v1/admin-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/admin/reports/v1/admin-gen.go b/admin/reports/v1/admin-gen.go
index da4c5bd..7dc1ece 100644
--- a/admin/reports/v1/admin-gen.go
+++ b/admin/reports/v1/admin-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/adsense/v1.4/adsense-gen.go b/adsense/v1.4/adsense-gen.go
index de24611..ad29c23 100644
--- a/adsense/v1.4/adsense-gen.go
+++ b/adsense/v1.4/adsense-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/adsensehost/v4.1/adsensehost-gen.go b/adsensehost/v4.1/adsensehost-gen.go
index 4ea0bb1..4b63333 100644
--- a/adsensehost/v4.1/adsensehost-gen.go
+++ b/adsensehost/v4.1/adsensehost-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/alertcenter/v1beta1/alertcenter-gen.go b/alertcenter/v1beta1/alertcenter-gen.go
index 82c9d71..fa2660d 100644
--- a/alertcenter/v1beta1/alertcenter-gen.go
+++ b/alertcenter/v1beta1/alertcenter-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/analytics/v2.4/analytics-gen.go b/analytics/v2.4/analytics-gen.go
index e957c54..d5136ed 100644
--- a/analytics/v2.4/analytics-gen.go
+++ b/analytics/v2.4/analytics-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/analytics/v3/analytics-gen.go b/analytics/v3/analytics-gen.go
index c54cc43..9d1fe8b 100644
--- a/analytics/v3/analytics-gen.go
+++ b/analytics/v3/analytics-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/analyticsreporting/v4/analyticsreporting-gen.go b/analyticsreporting/v4/analyticsreporting-gen.go
index be1e0f6..362aeb6 100644
--- a/analyticsreporting/v4/analyticsreporting-gen.go
+++ b/analyticsreporting/v4/analyticsreporting-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go b/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go
index 3088054..282a79a 100644
--- a/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go
+++ b/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/androidenterprise/v1/androidenterprise-gen.go b/androidenterprise/v1/androidenterprise-gen.go
index 3c71efd..140ef05 100644
--- a/androidenterprise/v1/androidenterprise-gen.go
+++ b/androidenterprise/v1/androidenterprise-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/androidmanagement/v1/androidmanagement-gen.go b/androidmanagement/v1/androidmanagement-gen.go
index 34438ae..1b40e26 100644
--- a/androidmanagement/v1/androidmanagement-gen.go
+++ b/androidmanagement/v1/androidmanagement-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/androidpublisher/v1.1/androidpublisher-gen.go b/androidpublisher/v1.1/androidpublisher-gen.go
index df0de3c..05e122a 100644
--- a/androidpublisher/v1.1/androidpublisher-gen.go
+++ b/androidpublisher/v1.1/androidpublisher-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/androidpublisher/v1/androidpublisher-gen.go b/androidpublisher/v1/androidpublisher-gen.go
index 52c8edd..2723492 100644
--- a/androidpublisher/v1/androidpublisher-gen.go
+++ b/androidpublisher/v1/androidpublisher-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/androidpublisher/v2/androidpublisher-gen.go b/androidpublisher/v2/androidpublisher-gen.go
index 3225850..8e9bf73 100644
--- a/androidpublisher/v2/androidpublisher-gen.go
+++ b/androidpublisher/v2/androidpublisher-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/androidpublisher/v3/androidpublisher-gen.go b/androidpublisher/v3/androidpublisher-gen.go
index 1378d5c..19b00d6 100644
--- a/androidpublisher/v3/androidpublisher-gen.go
+++ b/androidpublisher/v3/androidpublisher-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/api-list.json b/api-list.json
index f643fae..71546d0 100644
--- a/api-list.json
+++ b/api-list.json
@@ -1164,6 +1164,36 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "containeranalysis:v1alpha1",
+   "name": "containeranalysis",
+   "version": "v1alpha1",
+   "title": "Container Analysis API",
+   "description": "An implementation of the Grafeas API, which stores, and enables querying and retrieval of critical metadata about all of your software artifacts.",
+   "discoveryRestUrl": "https://containeranalysis.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://cloud.google.com/container-analysis/api/reference/rest/",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "containeranalysis:v1beta1",
+   "name": "containeranalysis",
+   "version": "v1beta1",
+   "title": "Container Analysis API",
+   "description": "An implementation of the Grafeas API, which stores, and enables querying and retrieval of critical metadata about all of your software artifacts.",
+   "discoveryRestUrl": "https://containeranalysis.googleapis.com/$discovery/rest?version=v1beta1",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/container-analysis/api/reference/rest/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "content:v2",
    "name": "content",
    "version": "v2",
@@ -2078,6 +2108,21 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "libraryagent:v1",
+   "name": "libraryagent",
+   "version": "v1",
+   "title": "Library Agent API",
+   "description": "A simple Google Example Library API.",
+   "discoveryRestUrl": "https://libraryagent.googleapis.com/$discovery/rest?version=v1",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/docs/quota",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "licensing:v1",
    "name": "licensing",
    "version": "v1",
@@ -2245,7 +2290,7 @@
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
    },
-   "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
+   "documentationLink": "https://cloud.google.com/compute/docs/oslogin/",
    "preferred": false
   },
   {
@@ -2260,7 +2305,7 @@
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
    },
-   "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
+   "documentationLink": "https://cloud.google.com/compute/docs/oslogin/",
    "preferred": false
   },
   {
@@ -2275,7 +2320,7 @@
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
    },
-   "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
+   "documentationLink": "https://cloud.google.com/compute/docs/oslogin/",
    "preferred": true
   },
   {
@@ -2527,6 +2572,51 @@
   },
   {
    "kind": "discovery#directoryItem",
+   "id": "remotebuildexecution:v1alpha",
+   "name": "remotebuildexecution",
+   "version": "v1alpha",
+   "title": "Remote Build Execution API",
+   "description": "Supplies a Remote Execution API service for tools such as bazel.",
+   "discoveryRestUrl": "https://remotebuildexecution.googleapis.com/$discovery/rest?version=v1alpha",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/remote-build-execution/docs/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "remotebuildexecution:v1",
+   "name": "remotebuildexecution",
+   "version": "v1",
+   "title": "Remote Build Execution API",
+   "description": "Supplies a Remote Execution API service for tools such as bazel.",
+   "discoveryRestUrl": "https://remotebuildexecution.googleapis.com/$discovery/rest?version=v1",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/remote-build-execution/docs/",
+   "preferred": false
+  },
+  {
+   "kind": "discovery#directoryItem",
+   "id": "remotebuildexecution:v2",
+   "name": "remotebuildexecution",
+   "version": "v2",
+   "title": "Remote Build Execution API",
+   "description": "Supplies a Remote Execution API service for tools such as bazel.",
+   "discoveryRestUrl": "https://remotebuildexecution.googleapis.com/$discovery/rest?version=v2",
+   "icons": {
+    "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+    "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+   },
+   "documentationLink": "https://cloud.google.com/remote-build-execution/docs/",
+   "preferred": true
+  },
+  {
+   "kind": "discovery#directoryItem",
    "id": "replicapool:v1beta1",
    "name": "replicapool",
    "version": "v1beta1",
diff --git a/appengine/v1/appengine-gen.go b/appengine/v1/appengine-gen.go
index 9244d8b..eee7296 100644
--- a/appengine/v1/appengine-gen.go
+++ b/appengine/v1/appengine-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/appengine/v1alpha/appengine-gen.go b/appengine/v1alpha/appengine-gen.go
index bbbfb5d..096af2c 100644
--- a/appengine/v1alpha/appengine-gen.go
+++ b/appengine/v1alpha/appengine-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/appengine/v1beta/appengine-gen.go b/appengine/v1beta/appengine-gen.go
index 9d12f32..a38f535 100644
--- a/appengine/v1beta/appengine-gen.go
+++ b/appengine/v1beta/appengine-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/appengine/v1beta4/appengine-gen.go b/appengine/v1beta4/appengine-gen.go
index 0b57653..3a33efe 100644
--- a/appengine/v1beta4/appengine-gen.go
+++ b/appengine/v1beta4/appengine-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/appengine/v1beta5/appengine-gen.go b/appengine/v1beta5/appengine-gen.go
index f1a4631..9ad5c93 100644
--- a/appengine/v1beta5/appengine-gen.go
+++ b/appengine/v1beta5/appengine-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/appsactivity/v1/appsactivity-gen.go b/appsactivity/v1/appsactivity-gen.go
index c9e96b4..fc1435c 100644
--- a/appsactivity/v1/appsactivity-gen.go
+++ b/appsactivity/v1/appsactivity-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/appstate/v1/appstate-gen.go b/appstate/v1/appstate-gen.go
index ec55300..8497fc4 100644
--- a/appstate/v1/appstate-gen.go
+++ b/appstate/v1/appstate-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/bigquery/v2/bigquery-api.json b/bigquery/v2/bigquery-api.json
index 0b991b8..a93e75b 100644
--- a/bigquery/v2/bigquery-api.json
+++ b/bigquery/v2/bigquery-api.json
@@ -32,7 +32,7 @@
   "description": "A data platform for customers to create, manage, share and query data.",
   "discoveryVersion": "v1",
   "documentationLink": "https://cloud.google.com/bigquery/",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/eFeCSA4VWy7K7nrpB2R4OL12KqY\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/JOw8AGQ14WBAuCZq4gmK7QO5KVM\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/search-16.gif",
     "x32": "https://www.google.com/images/icons/product/search-32.gif"
@@ -998,7 +998,7 @@
       }
     }
   },
-  "revision": "20181216",
+  "revision": "20181230",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "BigQueryModelTraining": {
@@ -1151,11 +1151,15 @@
           "items": {
             "properties": {
               "domain": {
-                "description": "[Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: \"example.com\".",
+                "description": "[Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: \"example.com\". Maps to IAM policy member \"domain:DOMAIN\".",
                 "type": "string"
               },
               "groupByEmail": {
-                "description": "[Pick one] An email address of a Google Group to grant access to.",
+                "description": "[Pick one] An email address of a Google Group to grant access to. Maps to IAM policy member \"group:GROUP\".",
+                "type": "string"
+              },
+              "iamMember": {
+                "description": "[Pick one] Some other type of member that appears in the IAM Policy but isn't a user, group, domain, or special group.",
                 "type": "string"
               },
               "role": {
@@ -1163,11 +1167,11 @@
                 "type": "string"
               },
               "specialGroup": {
-                "description": "[Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.",
+                "description": "[Pick one] A special group to grant access to. Possible values include: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users. Maps to similarly-named IAM members.",
                 "type": "string"
               },
               "userByEmail": {
-                "description": "[Pick one] An email address of a user to grant access to. For example: fred@example.com.",
+                "description": "[Pick one] An email address of a user to grant access to. For example: fred@example.com. Maps to IAM policy member \"user:EMAIL\" or \"serviceAccount:EMAIL\".",
                 "type": "string"
               },
               "view": {
@@ -3320,8 +3324,6 @@
           "type": "string"
         },
         "requirePartitionFilter": {
-          "default": "false",
-          "description": "[Beta] [Optional] If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.",
           "type": "boolean"
         },
         "type": {
diff --git a/bigquery/v2/bigquery-gen.go b/bigquery/v2/bigquery-gen.go
index b66a9d7..2d4c557 100644
--- a/bigquery/v2/bigquery-gen.go
+++ b/bigquery/v2/bigquery-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -577,13 +577,17 @@
 type DatasetAccess struct {
 	// Domain: [Pick one] A domain to grant access to. Any users signed in
 	// with the domain specified will be granted the specified access.
-	// Example: "example.com".
+	// Example: "example.com". Maps to IAM policy member "domain:DOMAIN".
 	Domain string `json:"domain,omitempty"`
 
 	// GroupByEmail: [Pick one] An email address of a Google Group to grant
-	// access to.
+	// access to. Maps to IAM policy member "group:GROUP".
 	GroupByEmail string `json:"groupByEmail,omitempty"`
 
+	// IamMember: [Pick one] Some other type of member that appears in the
+	// IAM Policy but isn't a user, group, domain, or special group.
+	IamMember string `json:"iamMember,omitempty"`
+
 	// Role: [Required] Describes the rights granted to the user specified
 	// by the other member of the access object. The following string values
 	// are supported: READER, WRITER, OWNER.
@@ -593,11 +597,12 @@
 	// values include: projectOwners: Owners of the enclosing project.
 	// projectReaders: Readers of the enclosing project. projectWriters:
 	// Writers of the enclosing project. allAuthenticatedUsers: All
-	// authenticated BigQuery users.
+	// authenticated BigQuery users. Maps to similarly-named IAM members.
 	SpecialGroup string `json:"specialGroup,omitempty"`
 
 	// UserByEmail: [Pick one] An email address of a user to grant access
-	// to. For example: fred@example.com.
+	// to. For example: fred@example.com. Maps to IAM policy member
+	// "user:EMAIL" or "serviceAccount:EMAIL".
 	UserByEmail string `json:"userByEmail,omitempty"`
 
 	// View: [Pick one] A view from a different dataset to grant access to.
@@ -3853,9 +3858,6 @@
 	// REQUIRED.
 	Field string `json:"field,omitempty"`
 
-	// RequirePartitionFilter: [Beta] [Optional] If set to true, queries
-	// over this table require a partition filter that can be used for
-	// partition elimination to be specified.
 	RequirePartitionFilter bool `json:"requirePartitionFilter,omitempty"`
 
 	// Type: [Required] The only type supported is DAY, which will generate
diff --git a/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go b/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go
index 54a26af..5174f27 100644
--- a/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go
+++ b/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/bigtableadmin/v2/bigtableadmin-gen.go b/bigtableadmin/v2/bigtableadmin-gen.go
index 292a7fc..bb81cb9 100644
--- a/bigtableadmin/v2/bigtableadmin-gen.go
+++ b/bigtableadmin/v2/bigtableadmin-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/binaryauthorization/v1beta1/binaryauthorization-gen.go b/binaryauthorization/v1beta1/binaryauthorization-gen.go
index bb9f16b..f4ca35b 100644
--- a/binaryauthorization/v1beta1/binaryauthorization-gen.go
+++ b/binaryauthorization/v1beta1/binaryauthorization-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/blogger/v2/blogger-gen.go b/blogger/v2/blogger-gen.go
index e5794fa..c478c59 100644
--- a/blogger/v2/blogger-gen.go
+++ b/blogger/v2/blogger-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/blogger/v3/blogger-gen.go b/blogger/v3/blogger-gen.go
index c8577fc..1ffe70d 100644
--- a/blogger/v3/blogger-gen.go
+++ b/blogger/v3/blogger-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/books/v1/books-gen.go b/books/v1/books-gen.go
index dc24bee..a8e2d77 100644
--- a/books/v1/books-gen.go
+++ b/books/v1/books-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/calendar/v3/calendar-gen.go b/calendar/v3/calendar-gen.go
index 2d343f7..9c01780 100644
--- a/calendar/v3/calendar-gen.go
+++ b/calendar/v3/calendar-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/chat/v1/chat-gen.go b/chat/v1/chat-gen.go
index 2710c98..f4aff89 100644
--- a/chat/v1/chat-gen.go
+++ b/chat/v1/chat-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/civicinfo/v2/civicinfo-gen.go b/civicinfo/v2/civicinfo-gen.go
index 56bf2d0..cf16965 100644
--- a/civicinfo/v2/civicinfo-gen.go
+++ b/civicinfo/v2/civicinfo-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/classroom/v1/classroom-gen.go b/classroom/v1/classroom-gen.go
index 295e946..d239475 100644
--- a/classroom/v1/classroom-gen.go
+++ b/classroom/v1/classroom-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudasset/v1beta1/cloudasset-gen.go b/cloudasset/v1beta1/cloudasset-gen.go
index 6f05478..0b8fcab 100644
--- a/cloudasset/v1beta1/cloudasset-gen.go
+++ b/cloudasset/v1beta1/cloudasset-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudbilling/v1/cloudbilling-gen.go b/cloudbilling/v1/cloudbilling-gen.go
index c2fd3aa..899ae38 100644
--- a/cloudbilling/v1/cloudbilling-gen.go
+++ b/cloudbilling/v1/cloudbilling-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudbuild/v1/cloudbuild-gen.go b/cloudbuild/v1/cloudbuild-gen.go
index 6cd1079..338aba2 100644
--- a/cloudbuild/v1/cloudbuild-gen.go
+++ b/cloudbuild/v1/cloudbuild-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudbuild/v1alpha1/cloudbuild-api.json b/cloudbuild/v1alpha1/cloudbuild-api.json
index 3bb1da6..43788d7 100644
--- a/cloudbuild/v1alpha1/cloudbuild-api.json
+++ b/cloudbuild/v1alpha1/cloudbuild-api.json
@@ -244,7 +244,7 @@
       }
     }
   },
-  "revision": "20181218",
+  "revision": "20190107",
   "rootUrl": "https://cloudbuild.googleapis.com/",
   "schemas": {
     "ArtifactObjects": {
@@ -1001,10 +1001,10 @@
           "items": {
             "enum": [
               "REGION_UNSPECIFIED",
-              "US_CENTRAL1",
-              "US_WEST1",
-              "US_EAST1",
-              "US_EAST4"
+              "us-central1",
+              "us-west1",
+              "us-east1",
+              "us-east4"
             ],
             "type": "string"
           },
diff --git a/cloudbuild/v1alpha1/cloudbuild-gen.go b/cloudbuild/v1alpha1/cloudbuild-gen.go
index ee84656..e7a4383 100644
--- a/cloudbuild/v1alpha1/cloudbuild-gen.go
+++ b/cloudbuild/v1alpha1/cloudbuild-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -1414,10 +1414,10 @@
 	//
 	// Possible values:
 	//   "REGION_UNSPECIFIED" - no region
-	//   "US_CENTRAL1" - us-central1 region
-	//   "US_WEST1" - us-west1 region
-	//   "US_EAST1" - us-east1 region
-	//   "US_EAST4" - us-east4 region
+	//   "us-central1" - us-central1 region
+	//   "us-west1" - us-west1 region
+	//   "us-east1" - us-east1 region
+	//   "us-east4" - us-east4 region
 	Regions []string `json:"regions,omitempty"`
 
 	// ServiceAccountEmail: Output only. The service account used to manage
diff --git a/clouddebugger/v2/clouddebugger-gen.go b/clouddebugger/v2/clouddebugger-gen.go
index ecd7e48..cca03ed 100644
--- a/clouddebugger/v2/clouddebugger-gen.go
+++ b/clouddebugger/v2/clouddebugger-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/clouderrorreporting/v1beta1/clouderrorreporting-gen.go b/clouderrorreporting/v1beta1/clouderrorreporting-gen.go
index b62df29..36dba60 100644
--- a/clouderrorreporting/v1beta1/clouderrorreporting-gen.go
+++ b/clouderrorreporting/v1beta1/clouderrorreporting-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudfunctions/v1/cloudfunctions-api.json b/cloudfunctions/v1/cloudfunctions-api.json
index 963af7e..849fe14 100644
--- a/cloudfunctions/v1/cloudfunctions-api.json
+++ b/cloudfunctions/v1/cloudfunctions-api.json
@@ -139,12 +139,12 @@
           "parameterOrder": [],
           "parameters": {
             "filter": {
-              "description": "The standard list filter.",
+              "description": "Required. A filter for matching the requested operations.\u003cbr\u003e\u003cbr\u003e The supported formats of \u003cb\u003efilter\u003c/b\u003e are:\u003cbr\u003e To query for specific function: \u003ccode\u003eproject:*,location:*,function:*\u003c/code\u003e\u003cbr\u003e To query for all of the latest operations for a project: \u003ccode\u003eproject:*,latest:true\u003c/code\u003e",
               "location": "query",
               "type": "string"
             },
             "name": {
-              "description": "The name of the operation's parent resource.",
+              "description": "Must not be set.",
               "location": "query",
               "type": "string"
             },
@@ -539,7 +539,7 @@
       }
     }
   },
-  "revision": "20181202",
+  "revision": "20181227",
   "rootUrl": "https://cloudfunctions.googleapis.com/",
   "schemas": {
     "AuditConfig": {
diff --git a/cloudfunctions/v1/cloudfunctions-gen.go b/cloudfunctions/v1/cloudfunctions-gen.go
index fc23444..e7835a7 100644
--- a/cloudfunctions/v1/cloudfunctions-gen.go
+++ b/cloudfunctions/v1/cloudfunctions-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -1840,15 +1840,18 @@
 	return c
 }
 
-// Filter sets the optional parameter "filter": The standard list
-// filter.
+// Filter sets the optional parameter "filter": Required. A filter for
+// matching the requested operations.<br><br> The supported formats of
+// <b>filter</b> are:<br> To query for specific function:
+// <code>project:*,location:*,function:*</code><br> To query for all of
+// the latest operations for a project:
+// <code>project:*,latest:true</code>
 func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
 }
 
-// Name sets the optional parameter "name": The name of the operation's
-// parent resource.
+// Name sets the optional parameter "name": Must not be set.
 func (c *OperationsListCall) Name(name string) *OperationsListCall {
 	c.urlParams_.Set("name", name)
 	return c
@@ -1970,12 +1973,12 @@
 	//   "parameterOrder": [],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "The standard list filter.",
+	//       "description": "Required. A filter for matching the requested operations.\u003cbr\u003e\u003cbr\u003e The supported formats of \u003cb\u003efilter\u003c/b\u003e are:\u003cbr\u003e To query for specific function: \u003ccode\u003eproject:*,location:*,function:*\u003c/code\u003e\u003cbr\u003e To query for all of the latest operations for a project: \u003ccode\u003eproject:*,latest:true\u003c/code\u003e",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "name": {
-	//       "description": "The name of the operation's parent resource.",
+	//       "description": "Must not be set.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/cloudfunctions/v1beta2/cloudfunctions-api.json b/cloudfunctions/v1beta2/cloudfunctions-api.json
index d2b6a1a..9bd88e3 100644
--- a/cloudfunctions/v1beta2/cloudfunctions-api.json
+++ b/cloudfunctions/v1beta2/cloudfunctions-api.json
@@ -139,12 +139,12 @@
           "parameterOrder": [],
           "parameters": {
             "filter": {
-              "description": "The standard list filter.",
+              "description": "Required. A filter for matching the requested operations.\u003cbr\u003e\u003cbr\u003e The supported formats of \u003cb\u003efilter\u003c/b\u003e are:\u003cbr\u003e To query for specific function: \u003ccode\u003eproject:*,location:*,function:*\u003c/code\u003e\u003cbr\u003e To query for all of the latest operations for a project: \u003ccode\u003eproject:*,latest:true\u003c/code\u003e",
               "location": "query",
               "type": "string"
             },
             "name": {
-              "description": "The name of the operation's parent resource.",
+              "description": "Must not be set.",
               "location": "query",
               "type": "string"
             },
@@ -452,7 +452,7 @@
       }
     }
   },
-  "revision": "20181202",
+  "revision": "20181227",
   "rootUrl": "https://cloudfunctions.googleapis.com/",
   "schemas": {
     "CallFunctionRequest": {
diff --git a/cloudfunctions/v1beta2/cloudfunctions-gen.go b/cloudfunctions/v1beta2/cloudfunctions-gen.go
index 2d0ad20..9c60c29 100644
--- a/cloudfunctions/v1beta2/cloudfunctions-gen.go
+++ b/cloudfunctions/v1beta2/cloudfunctions-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -1347,15 +1347,18 @@
 	return c
 }
 
-// Filter sets the optional parameter "filter": The standard list
-// filter.
+// Filter sets the optional parameter "filter": Required. A filter for
+// matching the requested operations.<br><br> The supported formats of
+// <b>filter</b> are:<br> To query for specific function:
+// <code>project:*,location:*,function:*</code><br> To query for all of
+// the latest operations for a project:
+// <code>project:*,latest:true</code>
 func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
 }
 
-// Name sets the optional parameter "name": The name of the operation's
-// parent resource.
+// Name sets the optional parameter "name": Must not be set.
 func (c *OperationsListCall) Name(name string) *OperationsListCall {
 	c.urlParams_.Set("name", name)
 	return c
@@ -1477,12 +1480,12 @@
 	//   "parameterOrder": [],
 	//   "parameters": {
 	//     "filter": {
-	//       "description": "The standard list filter.",
+	//       "description": "Required. A filter for matching the requested operations.\u003cbr\u003e\u003cbr\u003e The supported formats of \u003cb\u003efilter\u003c/b\u003e are:\u003cbr\u003e To query for specific function: \u003ccode\u003eproject:*,location:*,function:*\u003c/code\u003e\u003cbr\u003e To query for all of the latest operations for a project: \u003ccode\u003eproject:*,latest:true\u003c/code\u003e",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
 	//     "name": {
-	//       "description": "The name of the operation's parent resource.",
+	//       "description": "Must not be set.",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/cloudidentity/v1/cloudidentity-gen.go b/cloudidentity/v1/cloudidentity-gen.go
index e4c988d..f7281e9 100644
--- a/cloudidentity/v1/cloudidentity-gen.go
+++ b/cloudidentity/v1/cloudidentity-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudidentity/v1beta1/cloudidentity-gen.go b/cloudidentity/v1beta1/cloudidentity-gen.go
index 4b58fd3..9b0e295 100644
--- a/cloudidentity/v1beta1/cloudidentity-gen.go
+++ b/cloudidentity/v1beta1/cloudidentity-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudiot/v1/cloudiot-gen.go b/cloudiot/v1/cloudiot-gen.go
index 50e4306..4ad8198 100644
--- a/cloudiot/v1/cloudiot-gen.go
+++ b/cloudiot/v1/cloudiot-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudkms/v1/cloudkms-gen.go b/cloudkms/v1/cloudkms-gen.go
index 113c59d..ea9bedc 100644
--- a/cloudkms/v1/cloudkms-gen.go
+++ b/cloudkms/v1/cloudkms-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudprofiler/v2/cloudprofiler-gen.go b/cloudprofiler/v2/cloudprofiler-gen.go
index 3599aa3..e335fa5 100644
--- a/cloudprofiler/v2/cloudprofiler-gen.go
+++ b/cloudprofiler/v2/cloudprofiler-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudresourcemanager/v1/cloudresourcemanager-gen.go b/cloudresourcemanager/v1/cloudresourcemanager-gen.go
index 8137626..74070b0 100644
--- a/cloudresourcemanager/v1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v1/cloudresourcemanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go b/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
index c479099..f753aba 100644
--- a/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v1beta1/cloudresourcemanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudresourcemanager/v2/cloudresourcemanager-gen.go b/cloudresourcemanager/v2/cloudresourcemanager-gen.go
index def43a8..22433a1 100644
--- a/cloudresourcemanager/v2/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v2/cloudresourcemanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go b/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
index 8f14740..3ced585 100644
--- a/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
+++ b/cloudresourcemanager/v2beta1/cloudresourcemanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudscheduler/v1beta1/cloudscheduler-api.json b/cloudscheduler/v1beta1/cloudscheduler-api.json
index d8a01b3..455d6f1 100644
--- a/cloudscheduler/v1beta1/cloudscheduler-api.json
+++ b/cloudscheduler/v1beta1/cloudscheduler-api.json
@@ -417,7 +417,7 @@
       }
     }
   },
-  "revision": "20181120",
+  "revision": "20181228",
   "rootUrl": "https://cloudscheduler.googleapis.com/",
   "schemas": {
     "AppEngineHttpTarget": {
@@ -437,7 +437,7 @@
           "additionalProperties": {
             "type": "string"
           },
-          "description": "HTTP request headers.\n\nThis map contains the header field names and values. Headers can be set\nwhen the job is created.\n\nCloud Scheduler sets some headers to default values:\n\n* `User-Agent`: By default, this header is\n  `\"AppEngine-Google; (+http://code.google.com/appengine)\"`.\n  This header can be modified, but Cloud Scheduler will append\n  `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the\n  modified `User-Agent`.\n\nIf the job has an body, Cloud Scheduler sets the\nfollowing headers:\n\n* `Content-Type`: By default, the `Content-Type` header is set to\n  `\"application/octet-stream\"`. The default can be overridden by explictly\n  setting `Content-Type` to a particular media type when the job is\n  created.\n  For example, `Content-Type` can be set to `\"application/json\"`.\n* `Content-Length`: This is computed by Cloud Scheduler. This value is\n  output only. It cannot be changed.\n\nThe headers below are output only. They cannot be set or overridden:\n\n* `X-Google-*`: For Google internal use only.\n* `X-AppEngine-*`: For Google internal use only. See\n  [Reading request headers](https://cloud.google.com/appengine/docs/python/taskqueue/push/creating-handlers#reading_request_headers).\n\nIn addition, some App Engine headers, which contain\njob-specific information, are also be sent to the job handler; see\n[request headers](https://cloud.google.comappengine/docs/standard/python/config/cron#securing_urls_for_cron).",
+          "description": "HTTP request headers.\n\nThis map contains the header field names and values. Headers can be set\nwhen the job is created.\n\nCloud Scheduler sets some headers to default values:\n\n* `User-Agent`: By default, this header is\n  `\"AppEngine-Google; (+http://code.google.com/appengine)\"`.\n  This header can be modified, but Cloud Scheduler will append\n  `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the\n  modified `User-Agent`.\n* `X-CloudScheduler`: This header will be set to true.\n\nIf the job has an body, Cloud Scheduler sets the\nfollowing headers:\n\n* `Content-Type`: By default, the `Content-Type` header is set to\n  `\"application/octet-stream\"`. The default can be overridden by explictly\n  setting `Content-Type` to a particular media type when the job is\n  created.\n  For example, `Content-Type` can be set to `\"application/json\"`.\n* `Content-Length`: This is computed by Cloud Scheduler. This value is\n  output only. It cannot be changed.\n\nThe headers below are output only. They cannot be set or overridden:\n\n* `X-Google-*`: For Google internal use only.\n* `X-AppEngine-*`: For Google internal use only.\n\nIn addition, some App Engine headers, which contain\njob-specific information, are also be sent to the job handler.",
           "type": "object"
         },
         "httpMethod": {
diff --git a/cloudscheduler/v1beta1/cloudscheduler-gen.go b/cloudscheduler/v1beta1/cloudscheduler-gen.go
index 5192ce2..fffa8f5 100644
--- a/cloudscheduler/v1beta1/cloudscheduler-gen.go
+++ b/cloudscheduler/v1beta1/cloudscheduler-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -154,6 +154,7 @@
 	//   This header can be modified, but Cloud Scheduler will append
 	//   "AppEngine-Google; (+http://code.google.com/appengine)" to the
 	//   modified `User-Agent`.
+	// * `X-CloudScheduler`: This header will be set to true.
 	//
 	// If the job has an body, Cloud Scheduler sets the
 	// following headers:
@@ -172,17 +173,10 @@
 	// overridden:
 	//
 	// * `X-Google-*`: For Google internal use only.
-	// * `X-AppEngine-*`: For Google internal use only. See
-	//   [Reading request
-	// headers](https://cloud.google.com/appengine/docs/python/taskqueue/push
-	// /creating-handlers#reading_request_headers).
+	// * `X-AppEngine-*`: For Google internal use only.
 	//
 	// In addition, some App Engine headers, which contain
-	// job-specific information, are also be sent to the job handler;
-	// see
-	// [request
-	// headers](https://cloud.google.comappengine/docs/standard/python/config
-	// /cron#securing_urls_for_cron).
+	// job-specific information, are also be sent to the job handler.
 	Headers map[string]string `json:"headers,omitempty"`
 
 	// HttpMethod: The HTTP method to use for the request. PATCH and OPTIONS
diff --git a/cloudsearch/v1/cloudsearch-gen.go b/cloudsearch/v1/cloudsearch-gen.go
index 6563c1d..1fe220e 100644
--- a/cloudsearch/v1/cloudsearch-gen.go
+++ b/cloudsearch/v1/cloudsearch-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudshell/v1/cloudshell-gen.go b/cloudshell/v1/cloudshell-gen.go
index d79158a..0cceba5 100644
--- a/cloudshell/v1/cloudshell-gen.go
+++ b/cloudshell/v1/cloudshell-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudshell/v1alpha1/cloudshell-gen.go b/cloudshell/v1alpha1/cloudshell-gen.go
index decb54e..c049974 100644
--- a/cloudshell/v1alpha1/cloudshell-gen.go
+++ b/cloudshell/v1alpha1/cloudshell-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudtasks/v2beta2/cloudtasks-gen.go b/cloudtasks/v2beta2/cloudtasks-gen.go
index 591ca06..c5d7a65 100644
--- a/cloudtasks/v2beta2/cloudtasks-gen.go
+++ b/cloudtasks/v2beta2/cloudtasks-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudtasks/v2beta3/cloudtasks-gen.go b/cloudtasks/v2beta3/cloudtasks-gen.go
index f459f9b..5eeb3b7 100644
--- a/cloudtasks/v2beta3/cloudtasks-gen.go
+++ b/cloudtasks/v2beta3/cloudtasks-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudtrace/v1/cloudtrace-gen.go b/cloudtrace/v1/cloudtrace-gen.go
index af9c9ca..2b76f18 100644
--- a/cloudtrace/v1/cloudtrace-gen.go
+++ b/cloudtrace/v1/cloudtrace-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/cloudtrace/v2/cloudtrace-api.json b/cloudtrace/v2/cloudtrace-api.json
index 40f2761..03d8a7e 100644
--- a/cloudtrace/v2/cloudtrace-api.json
+++ b/cloudtrace/v2/cloudtrace-api.json
@@ -180,7 +180,7 @@
       }
     }
   },
-  "revision": "20180820",
+  "revision": "20190102",
   "rootUrl": "https://cloudtrace.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -226,7 +226,7 @@
           "additionalProperties": {
             "$ref": "AttributeValue"
           },
-          "description": "The set of attributes. Each attribute's key can be up to 128 bytes\nlong. The value can be a string up to 256 bytes, an integer, or the\nBoolean values `true` and `false`. For example:\n\n    \"/instance_id\": \"my-instance\"\n    \"/http/user_agent\": \"\"\n    \"/http/request_bytes\": 300\n    \"abc.com/myattribute\": true",
+          "description": "The set of attributes. Each attribute's key can be up to 128 bytes\nlong. The value can be a string up to 256 bytes, a signed 64-bit integer,\nor the Boolean values `true` and `false`. For example:\n\n    \"/instance_id\": \"my-instance\"\n    \"/http/user_agent\": \"\"\n    \"/http/request_bytes\": 300\n    \"abc.com/myattribute\": true",
           "type": "object"
         },
         "droppedAttributesCount": {
diff --git a/cloudtrace/v2/cloudtrace-gen.go b/cloudtrace/v2/cloudtrace-gen.go
index d972b15..9422934 100644
--- a/cloudtrace/v2/cloudtrace-gen.go
+++ b/cloudtrace/v2/cloudtrace-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -190,9 +190,9 @@
 type Attributes struct {
 	// AttributeMap: The set of attributes. Each attribute's key can be up
 	// to 128 bytes
-	// long. The value can be a string up to 256 bytes, an integer, or
-	// the
-	// Boolean values `true` and `false`. For example:
+	// long. The value can be a string up to 256 bytes, a signed 64-bit
+	// integer,
+	// or the Boolean values `true` and `false`. For example:
 	//
 	//     "/instance_id": "my-instance"
 	//     "/http/user_agent": ""
diff --git a/composer/v1/composer-gen.go b/composer/v1/composer-gen.go
index 9cc5965..84dc857 100644
--- a/composer/v1/composer-gen.go
+++ b/composer/v1/composer-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/composer/v1beta1/composer-gen.go b/composer/v1beta1/composer-gen.go
index f0b1117..0981e86 100644
--- a/composer/v1beta1/composer-gen.go
+++ b/composer/v1beta1/composer-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/compute/v0.alpha/compute-gen.go b/compute/v0.alpha/compute-gen.go
index 9a4786b..1b02604 100644
--- a/compute/v0.alpha/compute-gen.go
+++ b/compute/v0.alpha/compute-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/compute/v0.beta/compute-gen.go b/compute/v0.beta/compute-gen.go
index 6f11e2e..a719b3d 100644
--- a/compute/v0.beta/compute-gen.go
+++ b/compute/v0.beta/compute-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/compute/v1/compute-gen.go b/compute/v1/compute-gen.go
index e004722..2788dee 100644
--- a/compute/v1/compute-gen.go
+++ b/compute/v1/compute-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/container/v1/container-gen.go b/container/v1/container-gen.go
index 33719b1..c218da8 100644
--- a/container/v1/container-gen.go
+++ b/container/v1/container-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/container/v1beta1/container-gen.go b/container/v1beta1/container-gen.go
index 44cc85a..c46cffb 100644
--- a/container/v1beta1/container-gen.go
+++ b/container/v1beta1/container-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/containeranalysis/v1alpha1/containeranalysis-api.json b/containeranalysis/v1alpha1/containeranalysis-api.json
new file mode 100644
index 0000000..e619c19
--- /dev/null
+++ b/containeranalysis/v1alpha1/containeranalysis-api.json
@@ -0,0 +1,2946 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://containeranalysis.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Container Analysis",
+  "description": "An implementation of the Grafeas API, which stores, and enables querying and retrieval of critical metadata about all of your software artifacts.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/container-analysis/api/reference/rest/",
+  "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": "containeranalysis:v1alpha1",
+  "kind": "discovery#restDescription",
+  "name": "containeranalysis",
+  "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": {
+        "notes": {
+          "methods": {
+            "create": {
+              "description": "Creates a new `Note`.",
+              "flatPath": "v1alpha1/projects/{projectsId}/notes",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the project.\nShould be of the form \"providers/{provider_id}\".\n@Deprecated",
+                  "location": "query",
+                  "type": "string"
+                },
+                "noteId": {
+                  "description": "The ID to use for this note.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "This field contains the project Id for example:\n\"projects/{project_id}",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+parent}/notes",
+              "request": {
+                "$ref": "Note"
+              },
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "delete": {
+              "description": "Deletes the given `Note` from the system.",
+              "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}",
+              "httpMethod": "DELETE",
+              "id": "containeranalysis.projects.notes.delete",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note in the form of\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "get": {
+              "description": "Returns the requested `Note`.",
+              "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.notes.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note in the form of\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getIamPolicy": {
+              "description": "Gets the access control policy for a note or an `Occurrence` resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\nAttempting to call this method on a resource without the required\npermission will result in a `PERMISSION_DENIED` error. Attempting to call\nthis method on a non-existent resource will result in a `NOT_FOUND` error\nif the user has list permission on the project, or a `PERMISSION_DENIED`\nerror otherwise. The resource takes the following formats:\n`projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and\nprojects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
+              "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}:getIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.getIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:getIamPolicy",
+              "request": {
+                "$ref": "GetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists all `Notes` for a given project.",
+              "flatPath": "v1alpha1/projects/{projectsId}/notes",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.notes.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "name": {
+                  "description": "The name field will contain the project Id for example:\n\"providers/{provider_id}\n@Deprecated",
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Number of notes to return in the list.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token to provide to skip to a particular spot in the list.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "This field contains the project Id for example: \"projects/{PROJECT_ID}\".",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+parent}/notes",
+              "response": {
+                "$ref": "ListNotesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "patch": {
+              "description": "Updates an existing `Note`.",
+              "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}",
+              "httpMethod": "PATCH",
+              "id": "containeranalysis.projects.notes.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note.\nShould be of the form \"projects/{provider_id}/notes/{note_id}\".",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "The fields to update.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "request": {
+                "$ref": "Note"
+              },
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "setIamPolicy": {
+              "description": "Sets the access control policy on the specified `Note` or `Occurrence`.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na `Note` or an `Occurrence`, respectively.\nAttempting to call this method without these permissions will result in a `\n`PERMISSION_DENIED` error.\nAttempting to call this method on a non-existent resource will result in a\n`NOT_FOUND` error if the user has `containeranalysis.notes.list` permission\non a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or\na `PERMISSION_DENIED` error otherwise. The resource takes the following\nformats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences\nand projects/{projectid}/notes/{noteid} for notes",
+              "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}:setIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.setIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:setIamPolicy",
+              "request": {
+                "$ref": "SetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "testIamPermissions": {
+              "description": "Returns the permissions that a caller has on the specified note or\noccurrence resource. Requires list permission on the project (for example,\n\"storage.objects.list\" on the containing bucket for testing permission of\nan object). Attempting to call this method on a non-existent resource will\nresult in a `NOT_FOUND` error if the user has list permission on the\nproject, or a `PERMISSION_DENIED` error otherwise. The resource takes the\nfollowing formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for\n`Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`",
+              "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}:testIamPermissions",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.testIamPermissions",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:testIamPermissions",
+              "request": {
+                "$ref": "TestIamPermissionsRequest"
+              },
+              "response": {
+                "$ref": "TestIamPermissionsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          },
+          "resources": {
+            "occurrences": {
+              "methods": {
+                "list": {
+                  "description": "Lists `Occurrences` referencing the specified `Note`. Use this method to\nget all occurrences referencing your `Note` across all your customer\nprojects.",
+                  "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}/occurrences",
+                  "httpMethod": "GET",
+                  "id": "containeranalysis.projects.notes.occurrences.list",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "filter": {
+                      "description": "The filter expression.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "name": {
+                      "description": "The name field will contain the note name for example:\n  \"provider/{provider_id}/notes/{note_id}\"",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/notes/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "pageSize": {
+                      "description": "Number of notes to return in the list.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "Token to provide to skip to a particular spot in the list.",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1alpha1/{+name}/occurrences",
+                  "response": {
+                    "$ref": "ListNoteOccurrencesResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "occurrences": {
+          "methods": {
+            "create": {
+              "description": "Creates a new `Occurrence`. Use this method to create `Occurrences`\nfor a resource.",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the project.  Should be of the form \"projects/{project_id}\".\n@Deprecated",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "This field contains the project Id for example: \"projects/{project_id}\"",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+parent}/occurrences",
+              "request": {
+                "$ref": "Occurrence"
+              },
+              "response": {
+                "$ref": "Occurrence"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "delete": {
+              "description": "Deletes the given `Occurrence` from the system. Use this when\nan `Occurrence` is no longer applicable for the given resource.",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}",
+              "httpMethod": "DELETE",
+              "id": "containeranalysis.projects.occurrences.delete",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the occurrence in the form of\n\"projects/{project_id}/occurrences/{OCCURRENCE_ID}\"",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "get": {
+              "description": "Returns the requested `Occurrence`.",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.occurrences.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the occurrence of the form\n\"projects/{project_id}/occurrences/{OCCURRENCE_ID}\"",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "response": {
+                "$ref": "Occurrence"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getIamPolicy": {
+              "description": "Gets the access control policy for a note or an `Occurrence` resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\nAttempting to call this method on a resource without the required\npermission will result in a `PERMISSION_DENIED` error. Attempting to call\nthis method on a non-existent resource will result in a `NOT_FOUND` error\nif the user has list permission on the project, or a `PERMISSION_DENIED`\nerror otherwise. The resource takes the following formats:\n`projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and\nprojects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}:getIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.getIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:getIamPolicy",
+              "request": {
+                "$ref": "GetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getNotes": {
+              "description": "Gets the `Note` attached to the given `Occurrence`.",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}/notes",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.occurrences.getNotes",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the occurrence in the form\n\"projects/{project_id}/occurrences/{OCCURRENCE_ID}\"",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}/notes",
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getVulnerabilitySummary": {
+              "description": "Gets a summary of the number and severity of occurrences.",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences:vulnerabilitySummary",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.occurrences.getVulnerabilitySummary",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "This contains the project Id for example: projects/{project_id}",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+parent}/occurrences:vulnerabilitySummary",
+              "response": {
+                "$ref": "GetVulnzOccurrencesSummaryResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists active `Occurrences` for a given project matching the filters.",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.occurrences.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "kind": {
+                  "description": "The kind of occurrences to filter on.",
+                  "enum": [
+                    "KIND_UNSPECIFIED",
+                    "PACKAGE_VULNERABILITY",
+                    "BUILD_DETAILS",
+                    "IMAGE_BASIS",
+                    "PACKAGE_MANAGER",
+                    "DEPLOYABLE",
+                    "DISCOVERY",
+                    "ATTESTATION_AUTHORITY"
+                  ],
+                  "location": "query",
+                  "type": "string"
+                },
+                "name": {
+                  "description": "The name field contains the project Id. For example:\n\"projects/{project_id}\n@Deprecated",
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Number of occurrences to return in the list.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token to provide to skip to a particular spot in the list.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "This contains the project Id for example: projects/{project_id}.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+parent}/occurrences",
+              "response": {
+                "$ref": "ListOccurrencesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "patch": {
+              "description": "Updates an existing occurrence.",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}",
+              "httpMethod": "PATCH",
+              "id": "containeranalysis.projects.occurrences.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the occurrence.\nShould be of the form \"projects/{project_id}/occurrences/{OCCURRENCE_ID}\".",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "The fields to update.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "request": {
+                "$ref": "Occurrence"
+              },
+              "response": {
+                "$ref": "Occurrence"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "setIamPolicy": {
+              "description": "Sets the access control policy on the specified `Note` or `Occurrence`.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na `Note` or an `Occurrence`, respectively.\nAttempting to call this method without these permissions will result in a `\n`PERMISSION_DENIED` error.\nAttempting to call this method on a non-existent resource will result in a\n`NOT_FOUND` error if the user has `containeranalysis.notes.list` permission\non a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or\na `PERMISSION_DENIED` error otherwise. The resource takes the following\nformats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences\nand projects/{projectid}/notes/{noteid} for notes",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}:setIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.setIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:setIamPolicy",
+              "request": {
+                "$ref": "SetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "testIamPermissions": {
+              "description": "Returns the permissions that a caller has on the specified note or\noccurrence resource. Requires list permission on the project (for example,\n\"storage.objects.list\" on the containing bucket for testing permission of\nan object). Attempting to call this method on a non-existent resource will\nresult in a `NOT_FOUND` error if the user has list permission on the\nproject, or a `PERMISSION_DENIED` error otherwise. The resource takes the\nfollowing formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for\n`Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`",
+              "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}:testIamPermissions",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.testIamPermissions",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:testIamPermissions",
+              "request": {
+                "$ref": "TestIamPermissionsRequest"
+              },
+              "response": {
+                "$ref": "TestIamPermissionsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          }
+        },
+        "operations": {
+          "methods": {
+            "create": {
+              "description": "Creates a new `Operation`.",
+              "flatPath": "v1alpha1/projects/{projectsId}/operations",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.operations.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "The project Id that this operation should be created under.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+parent}/operations",
+              "request": {
+                "$ref": "CreateOperationRequest"
+              },
+              "response": {
+                "$ref": "Operation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "patch": {
+              "description": "Updates an existing operation returns an error if operation\n does not exist. The only valid operations are to update mark the done bit\nchange the result.",
+              "flatPath": "v1alpha1/projects/{projectsId}/operations/{operationsId}",
+              "httpMethod": "PATCH",
+              "id": "containeranalysis.projects.operations.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the Operation.\nShould be of the form \"projects/{provider_id}/operations/{operation_id}\".",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/operations/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "request": {
+                "$ref": "UpdateOperationRequest"
+              },
+              "response": {
+                "$ref": "Operation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          }
+        },
+        "scanConfigs": {
+          "methods": {
+            "get": {
+              "description": "Gets a specific scan configuration for a project.",
+              "flatPath": "v1alpha1/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.scanConfigs.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the ScanConfig in the form\nprojects/{project_id}/scanConfigs/{scan_config_id}",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "response": {
+                "$ref": "ScanConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists scan configurations for a project.",
+              "flatPath": "v1alpha1/projects/{projectsId}/scanConfigs",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.scanConfigs.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "The number of items to return.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "The page token to use for the next request.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "This containers the project Id i.e.: projects/{project_id}",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+parent}/scanConfigs",
+              "response": {
+                "$ref": "ListScanConfigsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "patch": {
+              "description": "Updates the scan configuration to a new value.",
+              "flatPath": "v1alpha1/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+              "httpMethod": "PATCH",
+              "id": "containeranalysis.projects.scanConfigs.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The scan config to update of the form\nprojects/{project_id}/scanConfigs/{scan_config_id}.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "The fields to update.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "request": {
+                "$ref": "ScanConfig"
+              },
+              "response": {
+                "$ref": "ScanConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          }
+        }
+      }
+    },
+    "providers": {
+      "resources": {
+        "notes": {
+          "methods": {
+            "create": {
+              "description": "Creates a new `Note`.",
+              "flatPath": "v1alpha1/providers/{providersId}/notes",
+              "httpMethod": "POST",
+              "id": "containeranalysis.providers.notes.create",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the project.\nShould be of the form \"providers/{provider_id}\".\n@Deprecated",
+                  "location": "path",
+                  "pattern": "^providers/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "noteId": {
+                  "description": "The ID to use for this note.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "This field contains the project Id for example:\n\"projects/{project_id}",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}/notes",
+              "request": {
+                "$ref": "Note"
+              },
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "delete": {
+              "description": "Deletes the given `Note` from the system.",
+              "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}",
+              "httpMethod": "DELETE",
+              "id": "containeranalysis.providers.notes.delete",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note in the form of\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+                  "location": "path",
+                  "pattern": "^providers/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "get": {
+              "description": "Returns the requested `Note`.",
+              "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}",
+              "httpMethod": "GET",
+              "id": "containeranalysis.providers.notes.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note in the form of\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+                  "location": "path",
+                  "pattern": "^providers/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getIamPolicy": {
+              "description": "Gets the access control policy for a note or an `Occurrence` resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\nAttempting to call this method on a resource without the required\npermission will result in a `PERMISSION_DENIED` error. Attempting to call\nthis method on a non-existent resource will result in a `NOT_FOUND` error\nif the user has list permission on the project, or a `PERMISSION_DENIED`\nerror otherwise. The resource takes the following formats:\n`projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and\nprojects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
+              "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}:getIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.providers.notes.getIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^providers/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:getIamPolicy",
+              "request": {
+                "$ref": "GetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists all `Notes` for a given project.",
+              "flatPath": "v1alpha1/providers/{providersId}/notes",
+              "httpMethod": "GET",
+              "id": "containeranalysis.providers.notes.list",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "name": {
+                  "description": "The name field will contain the project Id for example:\n\"providers/{provider_id}\n@Deprecated",
+                  "location": "path",
+                  "pattern": "^providers/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Number of notes to return in the list.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token to provide to skip to a particular spot in the list.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "This field contains the project Id for example: \"projects/{PROJECT_ID}\".",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}/notes",
+              "response": {
+                "$ref": "ListNotesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "patch": {
+              "description": "Updates an existing `Note`.",
+              "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}",
+              "httpMethod": "PATCH",
+              "id": "containeranalysis.providers.notes.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note.\nShould be of the form \"projects/{provider_id}/notes/{note_id}\".",
+                  "location": "path",
+                  "pattern": "^providers/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "The fields to update.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+name}",
+              "request": {
+                "$ref": "Note"
+              },
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "setIamPolicy": {
+              "description": "Sets the access control policy on the specified `Note` or `Occurrence`.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na `Note` or an `Occurrence`, respectively.\nAttempting to call this method without these permissions will result in a `\n`PERMISSION_DENIED` error.\nAttempting to call this method on a non-existent resource will result in a\n`NOT_FOUND` error if the user has `containeranalysis.notes.list` permission\non a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or\na `PERMISSION_DENIED` error otherwise. The resource takes the following\nformats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences\nand projects/{projectid}/notes/{noteid} for notes",
+              "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}:setIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.providers.notes.setIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^providers/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:setIamPolicy",
+              "request": {
+                "$ref": "SetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "testIamPermissions": {
+              "description": "Returns the permissions that a caller has on the specified note or\noccurrence resource. Requires list permission on the project (for example,\n\"storage.objects.list\" on the containing bucket for testing permission of\nan object). Attempting to call this method on a non-existent resource will\nresult in a `NOT_FOUND` error if the user has list permission on the\nproject, or a `PERMISSION_DENIED` error otherwise. The resource takes the\nfollowing formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for\n`Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`",
+              "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}:testIamPermissions",
+              "httpMethod": "POST",
+              "id": "containeranalysis.providers.notes.testIamPermissions",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^providers/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha1/{+resource}:testIamPermissions",
+              "request": {
+                "$ref": "TestIamPermissionsRequest"
+              },
+              "response": {
+                "$ref": "TestIamPermissionsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          },
+          "resources": {
+            "occurrences": {
+              "methods": {
+                "list": {
+                  "description": "Lists `Occurrences` referencing the specified `Note`. Use this method to\nget all occurrences referencing your `Note` across all your customer\nprojects.",
+                  "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}/occurrences",
+                  "httpMethod": "GET",
+                  "id": "containeranalysis.providers.notes.occurrences.list",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "filter": {
+                      "description": "The filter expression.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "name": {
+                      "description": "The name field will contain the note name for example:\n  \"provider/{provider_id}/notes/{note_id}\"",
+                      "location": "path",
+                      "pattern": "^providers/[^/]+/notes/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "pageSize": {
+                      "description": "Number of notes to return in the list.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "Token to provide to skip to a particular spot in the list.",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1alpha1/{+name}/occurrences",
+                  "response": {
+                    "$ref": "ListNoteOccurrencesResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20181207",
+  "rootUrl": "https://containeranalysis.googleapis.com/",
+  "schemas": {
+    "Artifact": {
+      "description": "Artifact describes a build product.",
+      "id": "Artifact",
+      "properties": {
+        "checksum": {
+          "description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a\ncontainer.",
+          "type": "string"
+        },
+        "id": {
+          "description": "Artifact ID, if any; for container images, this will be a URL by digest\nlike gcr.io/projectID/imagename@sha256:123456",
+          "type": "string"
+        },
+        "name": {
+          "description": "Name of the artifact. This may be the path to a binary or jar file, or in\nthe case of a container build, the name used to push the container image to\nGoogle Container Registry, as presented to `docker push`.\n\nThis field is deprecated in favor of the plural `names` field; it continues\nto exist here to allow existing BuildProvenance serialized to json in\ngoogle.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to\ndeserialize back into proto.",
+          "type": "string"
+        },
+        "names": {
+          "description": "Related artifact names. This may be the path to a binary or jar file, or in\nthe case of a container build, the name used to push the container image to\nGoogle Container Registry, as presented to `docker push`. Note that a\nsingle Artifact ID can have multiple names, for example if two tags are\napplied to one image.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Attestation": {
+      "description": "Occurrence that represents a single \"attestation\".  The authenticity of an\nAttestation can be verified using the attached signature. If the verifier\ntrusts the public key of the signer, then verifying the signature is\nsufficient to establish trust.  In this circumstance, the\nAttestationAuthority to which this Attestation is attached is primarily\nuseful for look-up (how to find this Attestation if you already know the\nAuthority and artifact to be verified) and intent (which authority was this\nattestation intended to sign for).",
+      "id": "Attestation",
+      "properties": {
+        "pgpSignedAttestation": {
+          "$ref": "PgpSignedAttestation"
+        }
+      },
+      "type": "object"
+    },
+    "AttestationAuthority": {
+      "description": "Note kind that represents a logical attestation \"role\" or \"authority\".  For\nexample, an organization might have one `AttestationAuthority` for \"QA\" and\none for \"build\".  This Note is intended to act strictly as a grouping\nmechanism for the attached Occurrences (Attestations).  This grouping\nmechanism also provides a security boundary, since IAM ACLs gate the ability\nfor a principle to attach an Occurrence to a given Note.  It also provides a\nsingle point of lookup to find all attached Attestation Occurrences, even if\nthey don't all live in the same project.",
+      "id": "AttestationAuthority",
+      "properties": {
+        "hint": {
+          "$ref": "AttestationAuthorityHint"
+        }
+      },
+      "type": "object"
+    },
+    "AttestationAuthorityHint": {
+      "description": "This submessage provides human-readable hints about the purpose of the\nAttestationAuthority.  Because the name of a Note acts as its resource\nreference, it is important to disambiguate the canonical name of the Note\n(which might be a UUID for security purposes) from \"readable\" names more\nsuitable for debug output.  Note that these hints should NOT be used to\nlook up AttestationAuthorities in security sensitive contexts, such as when\nlooking up Attestations to verify.",
+      "id": "AttestationAuthorityHint",
+      "properties": {
+        "humanReadableName": {
+          "description": "The human readable name of this Attestation Authority, for example \"qa\".",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "AuditConfig": {
+      "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditLogConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+      "id": "AuditConfig",
+      "properties": {
+        "auditLogConfigs": {
+          "description": "The configuration for logging of each type of permission.",
+          "items": {
+            "$ref": "AuditLogConfig"
+          },
+          "type": "array"
+        },
+        "service": {
+          "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "AuditLogConfig": {
+      "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
+      "id": "AuditLogConfig",
+      "properties": {
+        "exemptedMembers": {
+          "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "logType": {
+          "description": "The log type that this config enables.",
+          "enum": [
+            "LOG_TYPE_UNSPECIFIED",
+            "ADMIN_READ",
+            "DATA_WRITE",
+            "DATA_READ"
+          ],
+          "enumDescriptions": [
+            "Default case. Should never be this.",
+            "Admin reads. Example: CloudIAM getIamPolicy",
+            "Data writes. Example: CloudSQL Users create",
+            "Data reads. Example: CloudSQL Users list"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Basis": {
+      "description": "Basis describes the base image portion (Note) of the DockerImage\nrelationship.  Linked occurrences are derived from this or an\nequivalent image via:\n  FROM \u003cBasis.resource_url\u003e\nOr an equivalent reference, e.g. a tag of the resource_url.",
+      "id": "Basis",
+      "properties": {
+        "fingerprint": {
+          "$ref": "Fingerprint",
+          "description": "The fingerprint of the base image."
+        },
+        "resourceUrl": {
+          "description": "The resource_url for the resource representing the basis of\nassociated occurrence images.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Binding": {
+      "description": "Associates `members` with a `role`.",
+      "id": "Binding",
+      "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."
+        },
+        "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}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "role": {
+          "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildDetails": {
+      "description": "Message encapsulating build provenance details.",
+      "id": "BuildDetails",
+      "properties": {
+        "provenance": {
+          "$ref": "BuildProvenance",
+          "description": "The actual provenance"
+        },
+        "provenanceBytes": {
+          "description": "Serialized JSON representation of the provenance, used in generating the\n`BuildSignature` in the corresponding Result. After verifying the\nsignature, `provenance_bytes` can be unmarshalled and compared to the\nprovenance to confirm that it is unchanged. A base64-encoded string\nrepresentation of the provenance bytes is used for the signature in order\nto interoperate with openssl which expects this format for signature\nverification.\n\nThe serialized form is captured both to avoid ambiguity in how the\nprovenance is marshalled to json as well to prevent incompatibilities with\nfuture changes.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildProvenance": {
+      "description": "Provenance of a build. Contains all information needed to verify the full\ndetails about the build from source to completion.",
+      "id": "BuildProvenance",
+      "properties": {
+        "buildOptions": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Special options applied to this build. This is a catch-all field where\nbuild providers can enter any desired additional details.",
+          "type": "object"
+        },
+        "builderVersion": {
+          "description": "Version string of the builder at the time this build was executed.",
+          "type": "string"
+        },
+        "builtArtifacts": {
+          "description": "Output of the build.",
+          "items": {
+            "$ref": "Artifact"
+          },
+          "type": "array"
+        },
+        "commands": {
+          "description": "Commands requested by the build.",
+          "items": {
+            "$ref": "Command"
+          },
+          "type": "array"
+        },
+        "createTime": {
+          "description": "Time at which the build was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "creator": {
+          "description": "E-mail address of the user who initiated this build. Note that this was the\nuser's e-mail address at the time the build was initiated; this address may\nnot represent the same end-user for all time.",
+          "type": "string"
+        },
+        "finishTime": {
+          "description": "Time at which execution of the build was finished.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "id": {
+          "description": "Unique identifier of the build.",
+          "type": "string"
+        },
+        "logsBucket": {
+          "description": "Google Cloud Storage bucket where logs were written.",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "ID of the project.",
+          "type": "string"
+        },
+        "sourceProvenance": {
+          "$ref": "Source",
+          "description": "Details of the Source input to the build."
+        },
+        "startTime": {
+          "description": "Time at which execution of the build was started.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "triggerId": {
+          "description": "Trigger identifier if the build was triggered automatically; empty if not.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildSignature": {
+      "description": "Message encapsulating the signature of the verified build.",
+      "id": "BuildSignature",
+      "properties": {
+        "keyId": {
+          "description": "An Id for the key used to sign. This could be either an Id for the key\nstored in `public_key` (such as the Id or fingerprint for a PGP key, or the\nCN for a cert), or a reference to an external key (such as a reference to a\nkey in Cloud Key Management Service).",
+          "type": "string"
+        },
+        "keyType": {
+          "description": "The type of the key, either stored in `public_key` or referenced in\n`key_id`",
+          "enum": [
+            "KEY_TYPE_UNSPECIFIED",
+            "PGP_ASCII_ARMORED",
+            "PKIX_PEM"
+          ],
+          "enumDescriptions": [
+            "`KeyType` is not set.",
+            "`PGP ASCII Armored` public key.",
+            "`PKIX PEM` public key."
+          ],
+          "type": "string"
+        },
+        "publicKey": {
+          "description": "Public key of the builder which can be used to verify that the related\nfindings are valid and unchanged. If `key_type` is empty, this defaults\nto PEM encoded public keys.\n\nThis field may be empty if `key_id` references an external key.\n\nFor Cloud Build based signatures, this is a PEM encoded public\nkey. To verify the Cloud Build signature, place the contents of\nthis field into a file (public.pem). The signature field is base64-decoded\ninto its binary representation in signature.bin, and the provenance bytes\nfrom `BuildDetails` are base64-decoded into a binary representation in\nsigned.bin. OpenSSL can then verify the signature:\n`openssl sha256 -verify public.pem -signature signature.bin signed.bin`",
+          "type": "string"
+        },
+        "signature": {
+          "description": "Signature of the related `BuildProvenance`, encoded in a base64 string.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildType": {
+      "description": "Note holding the version of the provider's builder and the signature of\nthe provenance message in linked BuildDetails.",
+      "id": "BuildType",
+      "properties": {
+        "builderVersion": {
+          "description": "Version of the builder which produced this Note.",
+          "type": "string"
+        },
+        "signature": {
+          "$ref": "BuildSignature",
+          "description": "Signature of the build in Occurrences pointing to the Note containing this\n`BuilderDetails`."
+        }
+      },
+      "type": "object"
+    },
+    "Command": {
+      "description": "Command describes a step performed as part of the build pipeline.",
+      "id": "Command",
+      "properties": {
+        "args": {
+          "description": "Command-line arguments used when executing this Command.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "dir": {
+          "description": "Working directory (relative to project source root) used when running\nthis Command.",
+          "type": "string"
+        },
+        "env": {
+          "description": "Environment variables set before running this Command.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "id": {
+          "description": "Optional unique identifier for this Command, used in wait_for to reference\nthis Command as a dependency.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Name of the command, as presented on the command line, or if the command is\npackaged as a Docker container, as presented to `docker pull`.",
+          "type": "string"
+        },
+        "waitFor": {
+          "description": "The ID(s) of the Command(s) that this Command depends on.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "CreateOperationRequest": {
+      "description": "Request for creating an operation",
+      "id": "CreateOperationRequest",
+      "properties": {
+        "operation": {
+          "$ref": "Operation",
+          "description": "The operation to create."
+        },
+        "operationId": {
+          "description": "The ID to use for this operation.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Deployable": {
+      "description": "An artifact that can be deployed in some runtime.",
+      "id": "Deployable",
+      "properties": {
+        "resourceUri": {
+          "description": "Resource URI for the artifact being deployed.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Deployment": {
+      "description": "The period during which some deployable was active in a runtime.",
+      "id": "Deployment",
+      "properties": {
+        "address": {
+          "description": "Address of the runtime element hosting this deployment.",
+          "type": "string"
+        },
+        "config": {
+          "description": "Configuration used to create this deployment.",
+          "type": "string"
+        },
+        "deployTime": {
+          "description": "Beginning of the lifetime of this deployment.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "platform": {
+          "description": "Platform hosting this deployment.",
+          "enum": [
+            "PLATFORM_UNSPECIFIED",
+            "GKE",
+            "FLEX",
+            "CUSTOM"
+          ],
+          "enumDescriptions": [
+            "Unknown",
+            "Google Container Engine",
+            "Google App Engine: Flexible Environment",
+            "Custom user-defined platform"
+          ],
+          "type": "string"
+        },
+        "resourceUri": {
+          "description": "Output only. Resource URI for the artifact being deployed taken from the\ndeployable field with the same name.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "undeployTime": {
+          "description": "End of the lifetime of this deployment.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "userEmail": {
+          "description": "Identity of the user that triggered this deployment.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Derived": {
+      "description": "Derived describes the derived image portion (Occurrence) of the\nDockerImage relationship.  This image would be produced from a Dockerfile\nwith FROM \u003cDockerImage.Basis in attached Note\u003e.",
+      "id": "Derived",
+      "properties": {
+        "baseResourceUrl": {
+          "description": "Output only. This contains the base image URL for the derived image\noccurrence.",
+          "type": "string"
+        },
+        "distance": {
+          "description": "Output only. The number of layers by which this image differs from the\nassociated image basis.",
+          "format": "uint32",
+          "type": "integer"
+        },
+        "fingerprint": {
+          "$ref": "Fingerprint",
+          "description": "The fingerprint of the derived image."
+        },
+        "layerInfo": {
+          "description": "This contains layer-specific metadata, if populated it has length\n\"distance\" and is ordered with [distance] being the layer immediately\nfollowing the base image and [1] being the final layer.",
+          "items": {
+            "$ref": "Layer"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Detail": {
+      "description": "Identifies all occurrences of this vulnerability in the package for a\nspecific distro/location\nFor example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2",
+      "id": "Detail",
+      "properties": {
+        "cpeUri": {
+          "description": "The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) in\nwhich the vulnerability manifests.  Examples include distro or storage\nlocation for vulnerable jar.\nThis field can be used as a filter in list requests.",
+          "type": "string"
+        },
+        "description": {
+          "description": "A vendor-specific description of this note.",
+          "type": "string"
+        },
+        "fixedLocation": {
+          "$ref": "VulnerabilityLocation",
+          "description": "The fix for this specific package version."
+        },
+        "isObsolete": {
+          "description": "Whether this Detail is obsolete. Occurrences are expected not to point to\nobsolete details.",
+          "type": "boolean"
+        },
+        "maxAffectedVersion": {
+          "$ref": "Version",
+          "description": "The max version of the package in which the vulnerability exists.\nThis field can be used as a filter in list requests."
+        },
+        "minAffectedVersion": {
+          "$ref": "Version",
+          "description": "The min version of the package in which the vulnerability exists."
+        },
+        "package": {
+          "description": "The name of the package where the vulnerability was found.\nThis field can be used as a filter in list requests.",
+          "type": "string"
+        },
+        "packageType": {
+          "description": "The type of package; whether native or non native(ruby gems,\nnode.js packages etc)",
+          "type": "string"
+        },
+        "severityName": {
+          "description": "The severity (eg: distro assigned severity) for this vulnerability.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Discovered": {
+      "description": "Provides information about the scan status of a discovered resource.",
+      "id": "Discovered",
+      "properties": {
+        "analysisStatus": {
+          "description": "The status of discovery for the resource.",
+          "enum": [
+            "ANALYSIS_STATUS_UNSPECIFIED",
+            "PENDING",
+            "SCANNING",
+            "FINISHED_SUCCESS",
+            "FINISHED_FAILED",
+            "FINISHED_UNSUPPORTED"
+          ],
+          "enumDescriptions": [
+            "Unknown",
+            "Resource is known but no action has been taken yet.",
+            "Resource is being analyzed.",
+            "Analysis has finished successfully.",
+            "Analysis has finished unsuccessfully, the analysis itself is in a bad\nstate.",
+            "The resource is known not to be supported."
+          ],
+          "type": "string"
+        },
+        "analysisStatusError": {
+          "$ref": "Status",
+          "description": "When an error is encountered this will contain a LocalizedMessage under\ndetails to show to the user. The LocalizedMessage output only and\npopulated by the API."
+        },
+        "continuousAnalysis": {
+          "description": "Whether the resource is continuously analyzed.",
+          "enum": [
+            "CONTINUOUS_ANALYSIS_UNSPECIFIED",
+            "ACTIVE",
+            "INACTIVE"
+          ],
+          "enumDescriptions": [
+            "Unknown",
+            "The resource is continuously analyzed.",
+            "The resource is ignored for continuous analysis."
+          ],
+          "type": "string"
+        },
+        "operation": {
+          "$ref": "Operation",
+          "description": "Output only. An operation that indicates the status of the current scan.\nThis field is deprecated, do not use."
+        }
+      },
+      "type": "object"
+    },
+    "Discovery": {
+      "description": "A note that indicates a type of analysis a provider would perform. This note\nexists in a provider's project. A `Discovery` occurrence is created in a\nconsumer's project at the start of analysis. The occurrence's operation will\nindicate the status of the analysis. Absence of an occurrence linked to this\nnote for a resource indicates that analysis hasn't started.",
+      "id": "Discovery",
+      "properties": {
+        "analysisKind": {
+          "description": "The kind of analysis that is handled by this discovery.",
+          "enum": [
+            "KIND_UNSPECIFIED",
+            "PACKAGE_VULNERABILITY",
+            "BUILD_DETAILS",
+            "IMAGE_BASIS",
+            "PACKAGE_MANAGER",
+            "DEPLOYABLE",
+            "DISCOVERY",
+            "ATTESTATION_AUTHORITY"
+          ],
+          "enumDescriptions": [
+            "Unknown",
+            "The note and occurrence represent a package vulnerability.",
+            "The note and occurrence assert build provenance.",
+            "This represents an image basis relationship.",
+            "This represents a package installed via a package manager.",
+            "The note and occurrence track deployment events.",
+            "The note and occurrence track the initial discovery status of a resource.",
+            "This represents a logical \"role\" that can attest to artifacts."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Distribution": {
+      "description": "This represents a particular channel of distribution for a given package.\ne.g. Debian's jessie-backports dpkg mirror",
+      "id": "Distribution",
+      "properties": {
+        "architecture": {
+          "description": "The CPU architecture for which packages in this distribution\nchannel were built",
+          "enum": [
+            "ARCHITECTURE_UNSPECIFIED",
+            "X86",
+            "X64"
+          ],
+          "enumDescriptions": [
+            "Unknown architecture",
+            "X86 architecture",
+            "X64 architecture"
+          ],
+          "type": "string"
+        },
+        "cpeUri": {
+          "description": "The cpe_uri in [cpe format](https://cpe.mitre.org/specification/)\ndenoting the package manager version distributing a package.",
+          "type": "string"
+        },
+        "description": {
+          "description": "The distribution channel-specific description of this package.",
+          "type": "string"
+        },
+        "latestVersion": {
+          "$ref": "Version",
+          "description": "The latest available version of this package in\nthis distribution channel."
+        },
+        "maintainer": {
+          "description": "A freeform string denoting the maintainer of this package.",
+          "type": "string"
+        },
+        "url": {
+          "description": "The distribution channel-specific homepage for this package.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Empty": {
+      "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+      "id": "Empty",
+      "properties": {},
+      "type": "object"
+    },
+    "Expr": {
+      "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) \u003e 0\"",
+      "id": "Expr",
+      "properties": {
+        "description": {
+          "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+          "type": "string"
+        },
+        "expression": {
+          "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
+          "type": "string"
+        },
+        "location": {
+          "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+          "type": "string"
+        },
+        "title": {
+          "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "FileHashes": {
+      "description": "Container message for hashes of byte content of files, used in Source\nmessages to verify integrity of source input to the build.",
+      "id": "FileHashes",
+      "properties": {
+        "fileHash": {
+          "description": "Collection of file hashes.",
+          "items": {
+            "$ref": "Hash"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Fingerprint": {
+      "description": "A set of properties that uniquely identify a given Docker image.",
+      "id": "Fingerprint",
+      "properties": {
+        "v1Name": {
+          "description": "The layer-id of the final layer in the Docker image's v1\nrepresentation.\nThis field can be used as a filter in list requests.",
+          "type": "string"
+        },
+        "v2Blob": {
+          "description": "The ordered list of v2 blobs that represent a given image.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "v2Name": {
+          "description": "Output only. The name of the image's v2 blobs computed via:\n  [bottom] := v2_blobbottom := sha256(v2_blob[N] + \" \" + v2_name[N+1])\nOnly the name of the final blob is kept.\nThis field can be used as a filter in list requests.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GetIamPolicyRequest": {
+      "description": "Request message for `GetIamPolicy` method.",
+      "id": "GetIamPolicyRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "GetVulnzOccurrencesSummaryResponse": {
+      "description": "A summary of how many vulnz occurrences there are per severity type.\ncounts by groups, or if we should have different summary messages\nlike this.",
+      "id": "GetVulnzOccurrencesSummaryResponse",
+      "properties": {
+        "counts": {
+          "description": "A map of how many occurrences were found for each severity.",
+          "items": {
+            "$ref": "SeverityCount"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1AliasContext": {
+      "description": "An alias to a repo revision.",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1AliasContext",
+      "properties": {
+        "kind": {
+          "description": "The alias kind.",
+          "enum": [
+            "KIND_UNSPECIFIED",
+            "FIXED",
+            "MOVABLE",
+            "OTHER"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "Git tag.",
+            "Git branch.",
+            "Used to specify non-standard aliases. For example, if a Git repo has a\nref named \"refs/foo/bar\"."
+          ],
+          "type": "string"
+        },
+        "name": {
+          "description": "The alias name.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext": {
+      "description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud\nSource Repo.",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext",
+      "properties": {
+        "aliasContext": {
+          "$ref": "GoogleDevtoolsContaineranalysisV1alpha1AliasContext",
+          "description": "An alias, which may be a branch or tag."
+        },
+        "repoId": {
+          "$ref": "GoogleDevtoolsContaineranalysisV1alpha1RepoId",
+          "description": "The ID of the repo."
+        },
+        "revisionId": {
+          "description": "A revision ID.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext": {
+      "description": "A SourceContext referring to a Gerrit project.",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext",
+      "properties": {
+        "aliasContext": {
+          "$ref": "GoogleDevtoolsContaineranalysisV1alpha1AliasContext",
+          "description": "An alias, which may be a branch or tag."
+        },
+        "gerritProject": {
+          "description": "The full project name within the host. Projects may be nested, so\n\"project/subproject\" is a valid project name. The \"repo name\" is\nthe hostURI/project.",
+          "type": "string"
+        },
+        "hostUri": {
+          "description": "The URI of a running Gerrit instance.",
+          "type": "string"
+        },
+        "revisionId": {
+          "description": "A revision (commit) ID.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext": {
+      "description": "A GitSourceContext denotes a particular revision in a third party Git\nrepository (e.g., GitHub).",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext",
+      "properties": {
+        "revisionId": {
+          "description": "Required.\nGit commit hash.",
+          "type": "string"
+        },
+        "url": {
+          "description": "Git repository URL.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata": {
+      "description": "Metadata for all operations used and required for all operations\nthat created by Container Analysis Providers",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata",
+      "properties": {
+        "createTime": {
+          "description": "Output only. The time this operation was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "endTime": {
+          "description": "Output only. The time that this operation was marked completed or failed.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId": {
+      "description": "Selects a repo using a Google Cloud Platform project ID (e.g.,\nwinged-cargo-31) and a repo name within that project.",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId",
+      "properties": {
+        "projectId": {
+          "description": "The ID of the project.",
+          "type": "string"
+        },
+        "repoName": {
+          "description": "The name of the repo. Leave empty for the default repo.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1RepoId": {
+      "description": "A unique identifier for a Cloud Repo.",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1RepoId",
+      "properties": {
+        "projectRepoId": {
+          "$ref": "GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId",
+          "description": "A combination of a project ID and a repo name."
+        },
+        "uid": {
+          "description": "A server-assigned, globally unique identifier.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1SourceContext": {
+      "description": "A SourceContext is a reference to a tree of files. A SourceContext together\nwith a path point to a unique revision of a single file or directory.",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1SourceContext",
+      "properties": {
+        "cloudRepo": {
+          "$ref": "GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext",
+          "description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
+        },
+        "gerrit": {
+          "$ref": "GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext",
+          "description": "A SourceContext referring to a Gerrit project."
+        },
+        "git": {
+          "$ref": "GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext",
+          "description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Labels with user defined metadata.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "Hash": {
+      "description": "Container message for hash values.",
+      "id": "Hash",
+      "properties": {
+        "type": {
+          "description": "The type of hash that was performed.",
+          "enum": [
+            "NONE",
+            "SHA256"
+          ],
+          "enumDescriptions": [
+            "No hash requested.",
+            "A sha256 hash."
+          ],
+          "type": "string"
+        },
+        "value": {
+          "description": "The hash value.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Installation": {
+      "description": "This represents how a particular software package may be installed on\na system.",
+      "id": "Installation",
+      "properties": {
+        "location": {
+          "description": "All of the places within the filesystem versions of this package\nhave been found.",
+          "items": {
+            "$ref": "Location"
+          },
+          "type": "array"
+        },
+        "name": {
+          "description": "Output only. The name of the installed package.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Layer": {
+      "description": "Layer holds metadata specific to a layer of a Docker image.",
+      "id": "Layer",
+      "properties": {
+        "arguments": {
+          "description": "The recovered arguments to the Dockerfile directive.",
+          "type": "string"
+        },
+        "directive": {
+          "description": "The recovered Dockerfile directive used to construct this layer.",
+          "enum": [
+            "DIRECTIVE_UNSPECIFIED",
+            "MAINTAINER",
+            "RUN",
+            "CMD",
+            "LABEL",
+            "EXPOSE",
+            "ENV",
+            "ADD",
+            "COPY",
+            "ENTRYPOINT",
+            "VOLUME",
+            "USER",
+            "WORKDIR",
+            "ARG",
+            "ONBUILD",
+            "STOPSIGNAL",
+            "HEALTHCHECK",
+            "SHELL"
+          ],
+          "enumDescriptions": [
+            "Default value for unsupported/missing directive",
+            "https://docs.docker.com/reference/builder/#maintainer",
+            "https://docs.docker.com/reference/builder/#run",
+            "https://docs.docker.com/reference/builder/#cmd",
+            "https://docs.docker.com/reference/builder/#label",
+            "https://docs.docker.com/reference/builder/#expose",
+            "https://docs.docker.com/reference/builder/#env",
+            "https://docs.docker.com/reference/builder/#add",
+            "https://docs.docker.com/reference/builder/#copy",
+            "https://docs.docker.com/reference/builder/#entrypoint",
+            "https://docs.docker.com/reference/builder/#volume",
+            "https://docs.docker.com/reference/builder/#user",
+            "https://docs.docker.com/reference/builder/#workdir",
+            "https://docs.docker.com/reference/builder/#arg",
+            "https://docs.docker.com/reference/builder/#onbuild",
+            "https://docs.docker.com/reference/builder/#stopsignal",
+            "https://docs.docker.com/reference/builder/#healthcheck",
+            "https://docs.docker.com/reference/builder/#shell"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListNoteOccurrencesResponse": {
+      "description": "Response including listed occurrences for a note.",
+      "id": "ListNoteOccurrencesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "Token to receive the next page of notes.",
+          "type": "string"
+        },
+        "occurrences": {
+          "description": "The occurrences attached to the specified note.",
+          "items": {
+            "$ref": "Occurrence"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListNotesResponse": {
+      "description": "Response including listed notes.",
+      "id": "ListNotesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The next pagination token in the list response. It should be used as\npage_token for the following request. An empty value means no more result.",
+          "type": "string"
+        },
+        "notes": {
+          "description": "The occurrences requested",
+          "items": {
+            "$ref": "Note"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListOccurrencesResponse": {
+      "description": "Response including listed active occurrences.",
+      "id": "ListOccurrencesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The next pagination token in the list response. It should be used as\n`page_token` for the following request. An empty value means no more\nresults.",
+          "type": "string"
+        },
+        "occurrences": {
+          "description": "The occurrences requested.",
+          "items": {
+            "$ref": "Occurrence"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListScanConfigsResponse": {
+      "description": "A list of scan configs for the project.",
+      "id": "ListScanConfigsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "A page token to pass in order to get more scan configs.",
+          "type": "string"
+        },
+        "scanConfigs": {
+          "description": "The set of scan configs.",
+          "items": {
+            "$ref": "ScanConfig"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Location": {
+      "description": "An occurrence of a particular package installation found within a\nsystem's filesystem.\ne.g. glibc was found in /var/lib/dpkg/status",
+      "id": "Location",
+      "properties": {
+        "cpeUri": {
+          "description": "The cpe_uri in [cpe format](https://cpe.mitre.org/specification/)\ndenoting the package manager version distributing a package.",
+          "type": "string"
+        },
+        "path": {
+          "description": "The path from which we gathered that this package/version is installed.",
+          "type": "string"
+        },
+        "version": {
+          "$ref": "Version",
+          "description": "The version installed at this location."
+        }
+      },
+      "type": "object"
+    },
+    "Note": {
+      "description": "Provides a detailed description of a `Note`.",
+      "id": "Note",
+      "properties": {
+        "attestationAuthority": {
+          "$ref": "AttestationAuthority",
+          "description": "A note describing an attestation role."
+        },
+        "baseImage": {
+          "$ref": "Basis",
+          "description": "A note describing a base image."
+        },
+        "buildType": {
+          "$ref": "BuildType",
+          "description": "Build provenance type for a verifiable build."
+        },
+        "createTime": {
+          "description": "Output only. The time this note was created. This field can be used as a\nfilter in list requests.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "deployable": {
+          "$ref": "Deployable",
+          "description": "A note describing something that can be deployed."
+        },
+        "discovery": {
+          "$ref": "Discovery",
+          "description": "A note describing a provider/analysis type."
+        },
+        "expirationTime": {
+          "description": "Time of expiration for this note, null if note does not expire.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "kind": {
+          "description": "Output only. This explicitly denotes which kind of note is specified. This\nfield can be used as a filter in list requests.",
+          "enum": [
+            "KIND_UNSPECIFIED",
+            "PACKAGE_VULNERABILITY",
+            "BUILD_DETAILS",
+            "IMAGE_BASIS",
+            "PACKAGE_MANAGER",
+            "DEPLOYABLE",
+            "DISCOVERY",
+            "ATTESTATION_AUTHORITY"
+          ],
+          "enumDescriptions": [
+            "Unknown",
+            "The note and occurrence represent a package vulnerability.",
+            "The note and occurrence assert build provenance.",
+            "This represents an image basis relationship.",
+            "This represents a package installed via a package manager.",
+            "The note and occurrence track deployment events.",
+            "The note and occurrence track the initial discovery status of a resource.",
+            "This represents a logical \"role\" that can attest to artifacts."
+          ],
+          "type": "string"
+        },
+        "longDescription": {
+          "description": "A detailed description of this `Note`.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The name of the note in the form\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+          "type": "string"
+        },
+        "package": {
+          "$ref": "Package",
+          "description": "A note describing a package hosted by various package managers."
+        },
+        "relatedUrl": {
+          "description": "URLs associated with this note",
+          "items": {
+            "$ref": "RelatedUrl"
+          },
+          "type": "array"
+        },
+        "shortDescription": {
+          "description": "A one sentence description of this `Note`.",
+          "type": "string"
+        },
+        "updateTime": {
+          "description": "Output only. The time this note was last updated. This field can be used as\na filter in list requests.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "vulnerabilityType": {
+          "$ref": "VulnerabilityType",
+          "description": "A package vulnerability type of note."
+        }
+      },
+      "type": "object"
+    },
+    "Occurrence": {
+      "description": "`Occurrence` includes information about analysis occurrences for an image.",
+      "id": "Occurrence",
+      "properties": {
+        "attestation": {
+          "$ref": "Attestation",
+          "description": "Describes an attestation of an artifact."
+        },
+        "buildDetails": {
+          "$ref": "BuildDetails",
+          "description": "Build details for a verifiable build."
+        },
+        "createTime": {
+          "description": "Output only. The time this `Occurrence` was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "deployment": {
+          "$ref": "Deployment",
+          "description": "Describes the deployment of an artifact on a runtime."
+        },
+        "derivedImage": {
+          "$ref": "Derived",
+          "description": "Describes how this resource derives from the basis\nin the associated note."
+        },
+        "discovered": {
+          "$ref": "Discovered",
+          "description": "Describes the initial scan status for this resource."
+        },
+        "installation": {
+          "$ref": "Installation",
+          "description": "Describes the installation of a package on the linked resource."
+        },
+        "kind": {
+          "description": "Output only. This explicitly denotes which of the `Occurrence` details are\nspecified. This field can be used as a filter in list requests.",
+          "enum": [
+            "KIND_UNSPECIFIED",
+            "PACKAGE_VULNERABILITY",
+            "BUILD_DETAILS",
+            "IMAGE_BASIS",
+            "PACKAGE_MANAGER",
+            "DEPLOYABLE",
+            "DISCOVERY",
+            "ATTESTATION_AUTHORITY"
+          ],
+          "enumDescriptions": [
+            "Unknown",
+            "The note and occurrence represent a package vulnerability.",
+            "The note and occurrence assert build provenance.",
+            "This represents an image basis relationship.",
+            "This represents a package installed via a package manager.",
+            "The note and occurrence track deployment events.",
+            "The note and occurrence track the initial discovery status of a resource.",
+            "This represents a logical \"role\" that can attest to artifacts."
+          ],
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only. The name of the `Occurrence` in the form\n\"projects/{project_id}/occurrences/{OCCURRENCE_ID}\"",
+          "type": "string"
+        },
+        "noteName": {
+          "description": "An analysis note associated with this image, in the form\n\"providers/{provider_id}/notes/{NOTE_ID}\"\nThis field can be used as a filter in list requests.",
+          "type": "string"
+        },
+        "remediation": {
+          "description": "A description of actions that can be taken to remedy the `Note`",
+          "type": "string"
+        },
+        "resource": {
+          "$ref": "Resource",
+          "description": "The resource for which the `Occurrence` applies."
+        },
+        "resourceUrl": {
+          "description": "The unique URL of the image or the container for which the `Occurrence`\napplies. For example, https://gcr.io/project/image@sha256:foo This field\ncan be used as a filter in list requests.",
+          "type": "string"
+        },
+        "updateTime": {
+          "description": "Output only. The time this `Occurrence` was last updated.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "vulnerabilityDetails": {
+          "$ref": "VulnerabilityDetails",
+          "description": "Details of a security vulnerability note."
+        }
+      },
+      "type": "object"
+    },
+    "Operation": {
+      "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+      "id": "Operation",
+      "properties": {
+        "done": {
+          "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+          "type": "boolean"
+        },
+        "error": {
+          "$ref": "Status",
+          "description": "The error result of the operation in case of failure or cancellation."
+        },
+        "metadata": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+          "type": "object"
+        },
+        "name": {
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "type": "string"
+        },
+        "response": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "Package": {
+      "description": "This represents a particular package that is distributed over\nvarious channels.\ne.g. glibc (aka libc6) is distributed by many, at various versions.",
+      "id": "Package",
+      "properties": {
+        "distribution": {
+          "description": "The various channels by which a package is distributed.",
+          "items": {
+            "$ref": "Distribution"
+          },
+          "type": "array"
+        },
+        "name": {
+          "description": "The name of the package.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "PackageIssue": {
+      "description": "This message wraps a location affected by a vulnerability and its\nassociated fix (if one is available).",
+      "id": "PackageIssue",
+      "properties": {
+        "affectedLocation": {
+          "$ref": "VulnerabilityLocation",
+          "description": "The location of the vulnerability."
+        },
+        "fixedLocation": {
+          "$ref": "VulnerabilityLocation",
+          "description": "The location of the available fix for vulnerability."
+        },
+        "severityName": {
+          "description": "The severity (eg: distro assigned severity) for this vulnerability.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "PgpSignedAttestation": {
+      "description": "An attestation wrapper with a PGP-compatible signature.\nThis message only supports `ATTACHED` signatures, where the payload that is\nsigned is included alongside the signature itself in the same file.",
+      "id": "PgpSignedAttestation",
+      "properties": {
+        "contentType": {
+          "description": "Type (for example schema) of the attestation payload that was signed.\nThe verifier must ensure that the provided type is one that the verifier\nsupports, and that the attestation payload is a valid instantiation of that\ntype (for example by validating a JSON schema).",
+          "enum": [
+            "CONTENT_TYPE_UNSPECIFIED",
+            "SIMPLE_SIGNING_JSON"
+          ],
+          "enumDescriptions": [
+            "`ContentType` is not set.",
+            "Atomic format attestation signature. See\nhttps://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7/docs/atomic-signature.md\nThe payload extracted from `signature` is a JSON blob conforming to the\nlinked schema."
+          ],
+          "type": "string"
+        },
+        "pgpKeyId": {
+          "description": "The cryptographic fingerprint of the key used to generate the signature,\nas output by, e.g. `gpg --list-keys`. This should be the version 4, full\n160-bit fingerprint, expressed as a 40 character hexadecimal string. See\nhttps://tools.ietf.org/html/rfc4880#section-12.2 for details.\nImplementations may choose to acknowledge \"LONG\", \"SHORT\", or other\nabbreviated key IDs, but only the full fingerprint is guaranteed to work.\nIn gpg, the full fingerprint can be retrieved from the `fpr` field\nreturned when calling --list-keys with --with-colons.  For example:\n```\ngpg --with-colons --with-fingerprint --force-v4-certs \\\n    --list-keys attester@example.com\ntru::1:1513631572:0:3:1:5\npub:...\u003cSNIP\u003e...\nfpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB:\n```\nAbove, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.",
+          "type": "string"
+        },
+        "signature": {
+          "description": "The raw content of the signature, as output by GNU Privacy Guard (GPG) or\nequivalent.  Since this message only supports attached signatures, the\npayload that was signed must be attached. While the signature format\nsupported is dependent on the verification implementation, currently only\nASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than\n`--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor\n--output=signature.gpg payload.json` will create the signature content\nexpected in this field in `signature.gpg` for the `payload.json`\nattestation payload.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Policy": {
+      "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**JSON Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\"\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\n**YAML Example**\n\n    bindings:\n    - members:\n      - user:mike@example.com\n      - group:admins@example.com\n      - domain:google.com\n      - serviceAccount:my-other-app@appspot.gserviceaccount.com\n      role: roles/owner\n    - members:\n      - user:sean@example.com\n      role: roles/viewer\n\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam/docs).",
+      "id": "Policy",
+      "properties": {
+        "auditConfigs": {
+          "description": "Specifies cloud audit logging configuration for this policy.",
+          "items": {
+            "$ref": "AuditConfig"
+          },
+          "type": "array"
+        },
+        "bindings": {
+          "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+          "items": {
+            "$ref": "Binding"
+          },
+          "type": "array"
+        },
+        "etag": {
+          "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+          "format": "byte",
+          "type": "string"
+        },
+        "version": {
+          "description": "Deprecated.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "RelatedUrl": {
+      "description": "Metadata for any related URL information",
+      "id": "RelatedUrl",
+      "properties": {
+        "label": {
+          "description": "Label to describe usage of the URL",
+          "type": "string"
+        },
+        "url": {
+          "description": "Specific URL to associate with the note",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "RepoSource": {
+      "description": "RepoSource describes the location of the source in a Google Cloud Source\nRepository.",
+      "id": "RepoSource",
+      "properties": {
+        "branchName": {
+          "description": "Name of the branch to build.",
+          "type": "string"
+        },
+        "commitSha": {
+          "description": "Explicit commit SHA to build.",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "ID of the project that owns the repo.",
+          "type": "string"
+        },
+        "repoName": {
+          "description": "Name of the repo.",
+          "type": "string"
+        },
+        "tagName": {
+          "description": "Name of the tag to build.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Resource": {
+      "description": "Resource is an entity that can have metadata. E.g., a Docker image.",
+      "id": "Resource",
+      "properties": {
+        "contentHash": {
+          "$ref": "Hash",
+          "description": "The hash of the resource content. E.g., the Docker digest."
+        },
+        "name": {
+          "description": "The name of the resource. E.g., the name of a Docker image - \"Debian\".",
+          "type": "string"
+        },
+        "uri": {
+          "description": "The unique URI of the resource. E.g.,\n\"https://gcr.io/project/image@sha256:foo\" for a Docker image.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ScanConfig": {
+      "description": "Indicates various scans and whether they are turned on or off.",
+      "id": "ScanConfig",
+      "properties": {
+        "createTime": {
+          "description": "Output only. The time this scan config was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "description": {
+          "description": "Output only. A human-readable description of what the `ScanConfig` does.",
+          "type": "string"
+        },
+        "enabled": {
+          "description": "Indicates whether the Scan is enabled.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "Output only. The name of the ScanConfig in the form\n“projects/{project_id}/scanConfigs/{scan_config_id}\".",
+          "type": "string"
+        },
+        "updateTime": {
+          "description": "Output only. The time this scan config was last updated.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "SetIamPolicyRequest": {
+      "description": "Request message for `SetIamPolicy` method.",
+      "id": "SetIamPolicyRequest",
+      "properties": {
+        "policy": {
+          "$ref": "Policy",
+          "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+        },
+        "updateMask": {
+          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
+          "format": "google-fieldmask",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "SeverityCount": {
+      "description": "The number of occurrences created for a specific severity.",
+      "id": "SeverityCount",
+      "properties": {
+        "count": {
+          "description": "The number of occurrences with the severity.",
+          "format": "int64",
+          "type": "string"
+        },
+        "severity": {
+          "description": "The severity of the occurrences.",
+          "enum": [
+            "SEVERITY_UNSPECIFIED",
+            "MINIMAL",
+            "LOW",
+            "MEDIUM",
+            "HIGH",
+            "CRITICAL"
+          ],
+          "enumDescriptions": [
+            "Unknown Impact",
+            "Minimal Impact",
+            "Low Impact",
+            "Medium Impact",
+            "High Impact",
+            "Critical Impact"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Source": {
+      "description": "Source describes the location of the source used for the build.",
+      "id": "Source",
+      "properties": {
+        "additionalContexts": {
+          "description": "If provided, some of the source code used for the build may be found in\nthese locations, in the case where the source repository had multiple\nremotes or submodules. This list will not include the context specified in\nthe context field.",
+          "items": {
+            "$ref": "GoogleDevtoolsContaineranalysisV1alpha1SourceContext"
+          },
+          "type": "array"
+        },
+        "artifactStorageSource": {
+          "$ref": "StorageSource",
+          "description": "If provided, the input binary artifacts for the build came from this\nlocation."
+        },
+        "context": {
+          "$ref": "GoogleDevtoolsContaineranalysisV1alpha1SourceContext",
+          "description": "If provided, the source code used for the build came from this location."
+        },
+        "fileHashes": {
+          "additionalProperties": {
+            "$ref": "FileHashes"
+          },
+          "description": "Hash(es) of the build source, which can be used to verify that the original\nsource integrity was maintained in the build.\n\nThe keys to this map are file paths used as build source and the values\ncontain the hash values for those files.\n\nIf the build source came in a single package such as a gzipped tarfile\n(.tar.gz), the FileHash will be for the single path to that file.",
+          "type": "object"
+        },
+        "repoSource": {
+          "$ref": "RepoSource",
+          "description": "If provided, get source from this location in a Cloud Repo."
+        },
+        "storageSource": {
+          "$ref": "StorageSource",
+          "description": "If provided, get the source from this location in in Google Cloud\nStorage."
+        }
+      },
+      "type": "object"
+    },
+    "Status": {
+      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "id": "Status",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "StorageSource": {
+      "description": "StorageSource describes the location of the source in an archive file in\nGoogle Cloud Storage.",
+      "id": "StorageSource",
+      "properties": {
+        "bucket": {
+          "description": "Google Cloud Storage bucket containing source (see [Bucket Name\nRequirements]\n(https://cloud.google.com/storage/docs/bucket-naming#requirements)).",
+          "type": "string"
+        },
+        "generation": {
+          "description": "Google Cloud Storage generation for the object.",
+          "format": "int64",
+          "type": "string"
+        },
+        "object": {
+          "description": "Google Cloud Storage object containing source.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "TestIamPermissionsRequest": {
+      "description": "Request message for `TestIamPermissions` method.",
+      "id": "TestIamPermissionsRequest",
+      "properties": {
+        "permissions": {
+          "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "TestIamPermissionsResponse": {
+      "description": "Response message for `TestIamPermissions` method.",
+      "id": "TestIamPermissionsResponse",
+      "properties": {
+        "permissions": {
+          "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "UpdateOperationRequest": {
+      "description": "Request for updating an existing operation",
+      "id": "UpdateOperationRequest",
+      "properties": {
+        "operation": {
+          "$ref": "Operation",
+          "description": "The operation to create."
+        },
+        "updateMask": {
+          "description": "The fields to update.",
+          "format": "google-fieldmask",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Version": {
+      "description": "Version contains structured information about the version of the package.\nFor a discussion of this in Debian/Ubuntu:\nhttp://serverfault.com/questions/604541/debian-packages-version-convention\nFor a discussion of this in Redhat/Fedora/Centos:\nhttp://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/",
+      "id": "Version",
+      "properties": {
+        "epoch": {
+          "description": "Used to correct mistakes in the version numbering scheme.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "kind": {
+          "description": "Distinguish between sentinel MIN/MAX versions and normal versions.\nIf kind is not NORMAL, then the other fields are ignored.",
+          "enum": [
+            "NORMAL",
+            "MINIMUM",
+            "MAXIMUM"
+          ],
+          "enumDescriptions": [
+            "A standard package version, defined by the other fields.",
+            "A special version representing negative infinity,\nother fields are ignored.",
+            "A special version representing positive infinity,\nother fields are ignored."
+          ],
+          "type": "string"
+        },
+        "name": {
+          "description": "The main part of the version name.",
+          "type": "string"
+        },
+        "revision": {
+          "description": "The iteration of the package build from the above version.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "VulnerabilityDetails": {
+      "description": "Used by Occurrence to point to where the vulnerability exists and how\nto fix it.",
+      "id": "VulnerabilityDetails",
+      "properties": {
+        "cvssScore": {
+          "description": "Output only. The CVSS score of this vulnerability. CVSS score is on a\nscale of 0-10 where 0 indicates low severity and 10 indicates high\nseverity.",
+          "format": "float",
+          "type": "number"
+        },
+        "packageIssue": {
+          "description": "The set of affected locations and their fixes (if available) within\nthe associated resource.",
+          "items": {
+            "$ref": "PackageIssue"
+          },
+          "type": "array"
+        },
+        "severity": {
+          "description": "Output only. The note provider assigned Severity of the vulnerability.",
+          "enum": [
+            "SEVERITY_UNSPECIFIED",
+            "MINIMAL",
+            "LOW",
+            "MEDIUM",
+            "HIGH",
+            "CRITICAL"
+          ],
+          "enumDescriptions": [
+            "Unknown Impact",
+            "Minimal Impact",
+            "Low Impact",
+            "Medium Impact",
+            "High Impact",
+            "Critical Impact"
+          ],
+          "type": "string"
+        },
+        "type": {
+          "description": "The type of package; whether native or non native(ruby gems,\nnode.js packages etc)",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "VulnerabilityLocation": {
+      "description": "The location of the vulnerability",
+      "id": "VulnerabilityLocation",
+      "properties": {
+        "cpeUri": {
+          "description": "The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/)\nformat. Examples include distro or storage location for vulnerable jar.\nThis field can be used as a filter in list requests.",
+          "type": "string"
+        },
+        "package": {
+          "description": "The package being described.",
+          "type": "string"
+        },
+        "version": {
+          "$ref": "Version",
+          "description": "The version of the package being described.\nThis field can be used as a filter in list requests."
+        }
+      },
+      "type": "object"
+    },
+    "VulnerabilityType": {
+      "description": "VulnerabilityType provides metadata about a security vulnerability.",
+      "id": "VulnerabilityType",
+      "properties": {
+        "cvssScore": {
+          "description": "The CVSS score for this Vulnerability.",
+          "format": "float",
+          "type": "number"
+        },
+        "details": {
+          "description": "All information about the package to specifically identify this\nvulnerability. One entry per (version range and cpe_uri) the\npackage vulnerability has manifested in.",
+          "items": {
+            "$ref": "Detail"
+          },
+          "type": "array"
+        },
+        "severity": {
+          "description": "Note provider assigned impact of the vulnerability",
+          "enum": [
+            "SEVERITY_UNSPECIFIED",
+            "MINIMAL",
+            "LOW",
+            "MEDIUM",
+            "HIGH",
+            "CRITICAL"
+          ],
+          "enumDescriptions": [
+            "Unknown Impact",
+            "Minimal Impact",
+            "Low Impact",
+            "Medium Impact",
+            "High Impact",
+            "Critical Impact"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Container Analysis API",
+  "version": "v1alpha1",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/containeranalysis/v1alpha1/containeranalysis-gen.go b/containeranalysis/v1alpha1/containeranalysis-gen.go
new file mode 100644
index 0000000..f8be46e
--- /dev/null
+++ b/containeranalysis/v1alpha1/containeranalysis-gen.go
@@ -0,0 +1,8784 @@
+// Copyright 2019 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package containeranalysis provides access to the Container Analysis API.
+//
+// See https://cloud.google.com/container-analysis/api/reference/rest/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/containeranalysis/v1alpha1"
+//   ...
+//   containeranalysisService, err := containeranalysis.New(oauthHttpClient)
+package containeranalysis // import "google.golang.org/api/containeranalysis/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"
+)
+
+// 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 = "containeranalysis:v1alpha1"
+const apiName = "containeranalysis"
+const apiVersion = "v1alpha1"
+const basePath = "https://containeranalysis.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"
+)
+
+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)
+	s.Providers = NewProvidersService(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
+
+	Providers *ProvidersService
+}
+
+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.Notes = NewProjectsNotesService(s)
+	rs.Occurrences = NewProjectsOccurrencesService(s)
+	rs.Operations = NewProjectsOperationsService(s)
+	rs.ScanConfigs = NewProjectsScanConfigsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Notes *ProjectsNotesService
+
+	Occurrences *ProjectsOccurrencesService
+
+	Operations *ProjectsOperationsService
+
+	ScanConfigs *ProjectsScanConfigsService
+}
+
+func NewProjectsNotesService(s *Service) *ProjectsNotesService {
+	rs := &ProjectsNotesService{s: s}
+	rs.Occurrences = NewProjectsNotesOccurrencesService(s)
+	return rs
+}
+
+type ProjectsNotesService struct {
+	s *Service
+
+	Occurrences *ProjectsNotesOccurrencesService
+}
+
+func NewProjectsNotesOccurrencesService(s *Service) *ProjectsNotesOccurrencesService {
+	rs := &ProjectsNotesOccurrencesService{s: s}
+	return rs
+}
+
+type ProjectsNotesOccurrencesService struct {
+	s *Service
+}
+
+func NewProjectsOccurrencesService(s *Service) *ProjectsOccurrencesService {
+	rs := &ProjectsOccurrencesService{s: s}
+	return rs
+}
+
+type ProjectsOccurrencesService struct {
+	s *Service
+}
+
+func NewProjectsOperationsService(s *Service) *ProjectsOperationsService {
+	rs := &ProjectsOperationsService{s: s}
+	return rs
+}
+
+type ProjectsOperationsService struct {
+	s *Service
+}
+
+func NewProjectsScanConfigsService(s *Service) *ProjectsScanConfigsService {
+	rs := &ProjectsScanConfigsService{s: s}
+	return rs
+}
+
+type ProjectsScanConfigsService struct {
+	s *Service
+}
+
+func NewProvidersService(s *Service) *ProvidersService {
+	rs := &ProvidersService{s: s}
+	rs.Notes = NewProvidersNotesService(s)
+	return rs
+}
+
+type ProvidersService struct {
+	s *Service
+
+	Notes *ProvidersNotesService
+}
+
+func NewProvidersNotesService(s *Service) *ProvidersNotesService {
+	rs := &ProvidersNotesService{s: s}
+	rs.Occurrences = NewProvidersNotesOccurrencesService(s)
+	return rs
+}
+
+type ProvidersNotesService struct {
+	s *Service
+
+	Occurrences *ProvidersNotesOccurrencesService
+}
+
+func NewProvidersNotesOccurrencesService(s *Service) *ProvidersNotesOccurrencesService {
+	rs := &ProvidersNotesOccurrencesService{s: s}
+	return rs
+}
+
+type ProvidersNotesOccurrencesService struct {
+	s *Service
+}
+
+// Artifact: Artifact describes a build product.
+type Artifact struct {
+	// Checksum: Hash or checksum value of a binary, or Docker Registry 2.0
+	// digest of a
+	// container.
+	Checksum string `json:"checksum,omitempty"`
+
+	// Id: Artifact ID, if any; for container images, this will be a URL by
+	// digest
+	// like gcr.io/projectID/imagename@sha256:123456
+	Id string `json:"id,omitempty"`
+
+	// Name: Name of the artifact. This may be the path to a binary or jar
+	// file, or in
+	// the case of a container build, the name used to push the container
+	// image to
+	// Google Container Registry, as presented to `docker push`.
+	//
+	// This field is deprecated in favor of the plural `names` field; it
+	// continues
+	// to exist here to allow existing BuildProvenance serialized to json
+	// in
+	// google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_
+	// bytes to
+	// deserialize back into proto.
+	Name string `json:"name,omitempty"`
+
+	// Names: Related artifact names. This may be the path to a binary or
+	// jar file, or in
+	// the case of a container build, the name used to push the container
+	// image to
+	// Google Container Registry, as presented to `docker push`. Note that
+	// a
+	// single Artifact ID can have multiple names, for example if two tags
+	// are
+	// applied to one image.
+	Names []string `json:"names,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Checksum") 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. "Checksum") 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 *Artifact) MarshalJSON() ([]byte, error) {
+	type NoMethod Artifact
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Attestation: Occurrence that represents a single "attestation".  The
+// authenticity of an
+// Attestation can be verified using the attached signature. If the
+// verifier
+// trusts the public key of the signer, then verifying the signature
+// is
+// sufficient to establish trust.  In this circumstance,
+// the
+// AttestationAuthority to which this Attestation is attached is
+// primarily
+// useful for look-up (how to find this Attestation if you already know
+// the
+// Authority and artifact to be verified) and intent (which authority
+// was this
+// attestation intended to sign for).
+type Attestation struct {
+	PgpSignedAttestation *PgpSignedAttestation `json:"pgpSignedAttestation,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "PgpSignedAttestation") 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. "PgpSignedAttestation") 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 *Attestation) MarshalJSON() ([]byte, error) {
+	type NoMethod Attestation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AttestationAuthority: Note kind that represents a logical attestation
+// "role" or "authority".  For
+// example, an organization might have one `AttestationAuthority` for
+// "QA" and
+// one for "build".  This Note is intended to act strictly as a
+// grouping
+// mechanism for the attached Occurrences (Attestations).  This
+// grouping
+// mechanism also provides a security boundary, since IAM ACLs gate the
+// ability
+// for a principle to attach an Occurrence to a given Note.  It also
+// provides a
+// single point of lookup to find all attached Attestation Occurrences,
+// even if
+// they don't all live in the same project.
+type AttestationAuthority struct {
+	Hint *AttestationAuthorityHint `json:"hint,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Hint") 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. "Hint") 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 *AttestationAuthority) MarshalJSON() ([]byte, error) {
+	type NoMethod AttestationAuthority
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AttestationAuthorityHint: This submessage provides human-readable
+// hints about the purpose of the
+// AttestationAuthority.  Because the name of a Note acts as its
+// resource
+// reference, it is important to disambiguate the canonical name of the
+// Note
+// (which might be a UUID for security purposes) from "readable" names
+// more
+// suitable for debug output.  Note that these hints should NOT be used
+// to
+// look up AttestationAuthorities in security sensitive contexts, such
+// as when
+// looking up Attestations to verify.
+type AttestationAuthorityHint struct {
+	// HumanReadableName: The human readable name of this Attestation
+	// Authority, for example "qa".
+	HumanReadableName string `json:"humanReadableName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HumanReadableName")
+	// 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. "HumanReadableName") 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 *AttestationAuthorityHint) MarshalJSON() ([]byte, error) {
+	type NoMethod AttestationAuthorityHint
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AuditConfig: Specifies the audit configuration for a service.
+// The configuration determines which permission types are logged, and
+// what
+// identities, if any, are exempted from logging.
+// An AuditConfig must have one or more AuditLogConfigs.
+//
+// If there are AuditConfigs for both `allServices` and a specific
+// service,
+// the union of the two AuditConfigs is used for that service: the
+// log_types
+// specified in each AuditConfig are enabled, and the exempted_members
+// in each
+// AuditLogConfig are exempted.
+//
+// Example Policy with multiple AuditConfigs:
+//
+//     {
+//       "audit_configs": [
+//         {
+//           "service": "allServices"
+//           "audit_log_configs": [
+//             {
+//               "log_type": "DATA_READ",
+//               "exempted_members": [
+//                 "user:foo@gmail.com"
+//               ]
+//             },
+//             {
+//               "log_type": "DATA_WRITE",
+//             },
+//             {
+//               "log_type": "ADMIN_READ",
+//             }
+//           ]
+//         },
+//         {
+//           "service": "fooservice.googleapis.com"
+//           "audit_log_configs": [
+//             {
+//               "log_type": "DATA_READ",
+//             },
+//             {
+//               "log_type": "DATA_WRITE",
+//               "exempted_members": [
+//                 "user:bar@gmail.com"
+//               ]
+//             }
+//           ]
+//         }
+//       ]
+//     }
+//
+// For fooservice, this policy enables DATA_READ, DATA_WRITE and
+// ADMIN_READ
+// logging. It also exempts foo@gmail.com from DATA_READ logging,
+// and
+// bar@gmail.com from DATA_WRITE logging.
+type AuditConfig struct {
+	// AuditLogConfigs: The configuration for logging of each type of
+	// permission.
+	AuditLogConfigs []*AuditLogConfig `json:"auditLogConfigs,omitempty"`
+
+	// Service: Specifies a service that will be enabled for audit
+	// logging.
+	// For example, `storage.googleapis.com`,
+	// `cloudsql.googleapis.com`.
+	// `allServices` is a special value that covers all services.
+	Service string `json:"service,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AuditLogConfigs") 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. "AuditLogConfigs") 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 *AuditConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod AuditConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AuditLogConfig: Provides the configuration for logging a type of
+// permissions.
+// Example:
+//
+//     {
+//       "audit_log_configs": [
+//         {
+//           "log_type": "DATA_READ",
+//           "exempted_members": [
+//             "user:foo@gmail.com"
+//           ]
+//         },
+//         {
+//           "log_type": "DATA_WRITE",
+//         }
+//       ]
+//     }
+//
+// This enables 'DATA_READ' and 'DATA_WRITE' logging, while
+// exempting
+// foo@gmail.com from DATA_READ logging.
+type AuditLogConfig struct {
+	// ExemptedMembers: Specifies the identities that do not cause logging
+	// for this type of
+	// permission.
+	// Follows the same format of Binding.members.
+	ExemptedMembers []string `json:"exemptedMembers,omitempty"`
+
+	// LogType: The log type that this config enables.
+	//
+	// Possible values:
+	//   "LOG_TYPE_UNSPECIFIED" - Default case. Should never be this.
+	//   "ADMIN_READ" - Admin reads. Example: CloudIAM getIamPolicy
+	//   "DATA_WRITE" - Data writes. Example: CloudSQL Users create
+	//   "DATA_READ" - Data reads. Example: CloudSQL Users list
+	LogType string `json:"logType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExemptedMembers") 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. "ExemptedMembers") 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 *AuditLogConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod AuditLogConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Basis: Basis describes the base image portion (Note) of the
+// DockerImage
+// relationship.  Linked occurrences are derived from this or
+// an
+// equivalent image via:
+//   FROM <Basis.resource_url>
+// Or an equivalent reference, e.g. a tag of the resource_url.
+type Basis struct {
+	// Fingerprint: The fingerprint of the base image.
+	Fingerprint *Fingerprint `json:"fingerprint,omitempty"`
+
+	// ResourceUrl: The resource_url for the resource representing the basis
+	// of
+	// associated occurrence images.
+	ResourceUrl string `json:"resourceUrl,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Fingerprint") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Fingerprint") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Basis) MarshalJSON() ([]byte, error) {
+	type NoMethod Basis
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Binding: Associates `members` with a `role`.
+type Binding struct {
+	// Condition: Unimplemented. The condition that is associated with this
+	// binding.
+	// NOTE: an unsatisfied condition will not allow user access via
+	// current
+	// binding. Different bindings, including their conditions, are
+	// examined
+	// independently.
+	Condition *Expr `json:"condition,omitempty"`
+
+	// Members: Specifies the identities requesting access for a Cloud
+	// Platform resource.
+	// `members` can have the following values:
+	//
+	// * `allUsers`: A special identifier that represents anyone who is
+	//    on the internet; with or without a Google account.
+	//
+	// * `allAuthenticatedUsers`: A special identifier that represents
+	// anyone
+	//    who is authenticated with a Google account or a service
+	// account.
+	//
+	// * `user:{emailid}`: An email address that represents a specific
+	// Google
+	//    account. For example, `alice@gmail.com` .
+	//
+	//
+	// * `serviceAccount:{emailid}`: An email address that represents a
+	// service
+	//    account. For example,
+	// `my-other-app@appspot.gserviceaccount.com`.
+	//
+	// * `group:{emailid}`: An email address that represents a Google
+	// group.
+	//    For example, `admins@example.com`.
+	//
+	//
+	// * `domain:{domain}`: A Google Apps domain name that represents all
+	// the
+	//    users of that domain. For example, `google.com` or
+	// `example.com`.
+	//
+	//
+	Members []string `json:"members,omitempty"`
+
+	// Role: Role that is assigned to `members`.
+	// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+	Role string `json:"role,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Condition") 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. "Condition") 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 *Binding) MarshalJSON() ([]byte, error) {
+	type NoMethod Binding
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildDetails: Message encapsulating build provenance details.
+type BuildDetails struct {
+	// Provenance: The actual provenance
+	Provenance *BuildProvenance `json:"provenance,omitempty"`
+
+	// ProvenanceBytes: Serialized JSON representation of the provenance,
+	// used in generating the
+	// `BuildSignature` in the corresponding Result. After verifying
+	// the
+	// signature, `provenance_bytes` can be unmarshalled and compared to
+	// the
+	// provenance to confirm that it is unchanged. A base64-encoded
+	// string
+	// representation of the provenance bytes is used for the signature in
+	// order
+	// to interoperate with openssl which expects this format for
+	// signature
+	// verification.
+	//
+	// The serialized form is captured both to avoid ambiguity in how
+	// the
+	// provenance is marshalled to json as well to prevent incompatibilities
+	// with
+	// future changes.
+	ProvenanceBytes string `json:"provenanceBytes,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Provenance") 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. "Provenance") 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 *BuildDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildProvenance: Provenance of a build. Contains all information
+// needed to verify the full
+// details about the build from source to completion.
+type BuildProvenance struct {
+	// BuildOptions: Special options applied to this build. This is a
+	// catch-all field where
+	// build providers can enter any desired additional details.
+	BuildOptions map[string]string `json:"buildOptions,omitempty"`
+
+	// BuilderVersion: Version string of the builder at the time this build
+	// was executed.
+	BuilderVersion string `json:"builderVersion,omitempty"`
+
+	// BuiltArtifacts: Output of the build.
+	BuiltArtifacts []*Artifact `json:"builtArtifacts,omitempty"`
+
+	// Commands: Commands requested by the build.
+	Commands []*Command `json:"commands,omitempty"`
+
+	// CreateTime: Time at which the build was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Creator: E-mail address of the user who initiated this build. Note
+	// that this was the
+	// user's e-mail address at the time the build was initiated; this
+	// address may
+	// not represent the same end-user for all time.
+	Creator string `json:"creator,omitempty"`
+
+	// FinishTime: Time at which execution of the build was finished.
+	FinishTime string `json:"finishTime,omitempty"`
+
+	// Id: Unique identifier of the build.
+	Id string `json:"id,omitempty"`
+
+	// LogsBucket: Google Cloud Storage bucket where logs were written.
+	LogsBucket string `json:"logsBucket,omitempty"`
+
+	// ProjectId: ID of the project.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// SourceProvenance: Details of the Source input to the build.
+	SourceProvenance *Source `json:"sourceProvenance,omitempty"`
+
+	// StartTime: Time at which execution of the build was started.
+	StartTime string `json:"startTime,omitempty"`
+
+	// TriggerId: Trigger identifier if the build was triggered
+	// automatically; empty if not.
+	TriggerId string `json:"triggerId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BuildOptions") 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. "BuildOptions") 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 *BuildProvenance) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildProvenance
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildSignature: Message encapsulating the signature of the verified
+// build.
+type BuildSignature struct {
+	// KeyId: An Id for the key used to sign. This could be either an Id for
+	// the key
+	// stored in `public_key` (such as the Id or fingerprint for a PGP key,
+	// or the
+	// CN for a cert), or a reference to an external key (such as a
+	// reference to a
+	// key in Cloud Key Management Service).
+	KeyId string `json:"keyId,omitempty"`
+
+	// KeyType: The type of the key, either stored in `public_key` or
+	// referenced in
+	// `key_id`
+	//
+	// Possible values:
+	//   "KEY_TYPE_UNSPECIFIED" - `KeyType` is not set.
+	//   "PGP_ASCII_ARMORED" - `PGP ASCII Armored` public key.
+	//   "PKIX_PEM" - `PKIX PEM` public key.
+	KeyType string `json:"keyType,omitempty"`
+
+	// PublicKey: Public key of the builder which can be used to verify that
+	// the related
+	// findings are valid and unchanged. If `key_type` is empty, this
+	// defaults
+	// to PEM encoded public keys.
+	//
+	// This field may be empty if `key_id` references an external key.
+	//
+	// For Cloud Build based signatures, this is a PEM encoded public
+	// key. To verify the Cloud Build signature, place the contents of
+	// this field into a file (public.pem). The signature field is
+	// base64-decoded
+	// into its binary representation in signature.bin, and the provenance
+	// bytes
+	// from `BuildDetails` are base64-decoded into a binary representation
+	// in
+	// signed.bin. OpenSSL can then verify the signature:
+	// `openssl sha256 -verify public.pem -signature signature.bin
+	// signed.bin`
+	PublicKey string `json:"publicKey,omitempty"`
+
+	// Signature: Signature of the related `BuildProvenance`, encoded in a
+	// base64 string.
+	Signature string `json:"signature,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "KeyId") 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. "KeyId") 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 *BuildSignature) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildSignature
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildType: Note holding the version of the provider's builder and the
+// signature of
+// the provenance message in linked BuildDetails.
+type BuildType struct {
+	// BuilderVersion: Version of the builder which produced this Note.
+	BuilderVersion string `json:"builderVersion,omitempty"`
+
+	// Signature: Signature of the build in Occurrences pointing to the Note
+	// containing this
+	// `BuilderDetails`.
+	Signature *BuildSignature `json:"signature,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BuilderVersion") 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. "BuilderVersion") 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 *BuildType) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildType
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Command: Command describes a step performed as part of the build
+// pipeline.
+type Command struct {
+	// Args: Command-line arguments used when executing this Command.
+	Args []string `json:"args,omitempty"`
+
+	// Dir: Working directory (relative to project source root) used when
+	// running
+	// this Command.
+	Dir string `json:"dir,omitempty"`
+
+	// Env: Environment variables set before running this Command.
+	Env []string `json:"env,omitempty"`
+
+	// Id: Optional unique identifier for this Command, used in wait_for to
+	// reference
+	// this Command as a dependency.
+	Id string `json:"id,omitempty"`
+
+	// Name: Name of the command, as presented on the command line, or if
+	// the command is
+	// packaged as a Docker container, as presented to `docker pull`.
+	Name string `json:"name,omitempty"`
+
+	// WaitFor: The ID(s) of the Command(s) that this Command depends on.
+	WaitFor []string `json:"waitFor,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Args") 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. "Args") 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 *Command) MarshalJSON() ([]byte, error) {
+	type NoMethod Command
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CreateOperationRequest: Request for creating an operation
+type CreateOperationRequest struct {
+	// Operation: The operation to create.
+	Operation *Operation `json:"operation,omitempty"`
+
+	// OperationId: The ID to use for this operation.
+	OperationId string `json:"operationId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Operation") 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. "Operation") 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 *CreateOperationRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod CreateOperationRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Deployable: An artifact that can be deployed in some runtime.
+type Deployable struct {
+	// ResourceUri: Resource URI for the artifact being deployed.
+	ResourceUri []string `json:"resourceUri,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ResourceUri") 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. "ResourceUri") 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 *Deployable) MarshalJSON() ([]byte, error) {
+	type NoMethod Deployable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Deployment: The period during which some deployable was active in a
+// runtime.
+type Deployment struct {
+	// Address: Address of the runtime element hosting this deployment.
+	Address string `json:"address,omitempty"`
+
+	// Config: Configuration used to create this deployment.
+	Config string `json:"config,omitempty"`
+
+	// DeployTime: Beginning of the lifetime of this deployment.
+	DeployTime string `json:"deployTime,omitempty"`
+
+	// Platform: Platform hosting this deployment.
+	//
+	// Possible values:
+	//   "PLATFORM_UNSPECIFIED" - Unknown
+	//   "GKE" - Google Container Engine
+	//   "FLEX" - Google App Engine: Flexible Environment
+	//   "CUSTOM" - Custom user-defined platform
+	Platform string `json:"platform,omitempty"`
+
+	// ResourceUri: Output only. Resource URI for the artifact being
+	// deployed taken from the
+	// deployable field with the same name.
+	ResourceUri []string `json:"resourceUri,omitempty"`
+
+	// UndeployTime: End of the lifetime of this deployment.
+	UndeployTime string `json:"undeployTime,omitempty"`
+
+	// UserEmail: Identity of the user that triggered this deployment.
+	UserEmail string `json:"userEmail,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Address") 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. "Address") 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 *Deployment) MarshalJSON() ([]byte, error) {
+	type NoMethod Deployment
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Derived: Derived describes the derived image portion (Occurrence) of
+// the
+// DockerImage relationship.  This image would be produced from a
+// Dockerfile
+// with FROM <DockerImage.Basis in attached Note>.
+type Derived struct {
+	// BaseResourceUrl: Output only. This contains the base image URL for
+	// the derived image
+	// occurrence.
+	BaseResourceUrl string `json:"baseResourceUrl,omitempty"`
+
+	// Distance: Output only. The number of layers by which this image
+	// differs from the
+	// associated image basis.
+	Distance int64 `json:"distance,omitempty"`
+
+	// Fingerprint: The fingerprint of the derived image.
+	Fingerprint *Fingerprint `json:"fingerprint,omitempty"`
+
+	// LayerInfo: This contains layer-specific metadata, if populated it has
+	// length
+	// "distance" and is ordered with [distance] being the layer
+	// immediately
+	// following the base image and [1] being the final layer.
+	LayerInfo []*Layer `json:"layerInfo,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BaseResourceUrl") 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. "BaseResourceUrl") 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 *Derived) MarshalJSON() ([]byte, error) {
+	type NoMethod Derived
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Detail: Identifies all occurrences of this vulnerability in the
+// package for a
+// specific distro/location
+// For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 -
+// 2.2
+type Detail struct {
+	// CpeUri: The cpe_uri in [cpe format]
+	// (https://cpe.mitre.org/specification/) in
+	// which the vulnerability manifests.  Examples include distro or
+	// storage
+	// location for vulnerable jar.
+	// This field can be used as a filter in list requests.
+	CpeUri string `json:"cpeUri,omitempty"`
+
+	// Description: A vendor-specific description of this note.
+	Description string `json:"description,omitempty"`
+
+	// FixedLocation: The fix for this specific package version.
+	FixedLocation *VulnerabilityLocation `json:"fixedLocation,omitempty"`
+
+	// IsObsolete: Whether this Detail is obsolete. Occurrences are expected
+	// not to point to
+	// obsolete details.
+	IsObsolete bool `json:"isObsolete,omitempty"`
+
+	// MaxAffectedVersion: The max version of the package in which the
+	// vulnerability exists.
+	// This field can be used as a filter in list requests.
+	MaxAffectedVersion *Version `json:"maxAffectedVersion,omitempty"`
+
+	// MinAffectedVersion: The min version of the package in which the
+	// vulnerability exists.
+	MinAffectedVersion *Version `json:"minAffectedVersion,omitempty"`
+
+	// Package: The name of the package where the vulnerability was
+	// found.
+	// This field can be used as a filter in list requests.
+	Package string `json:"package,omitempty"`
+
+	// PackageType: The type of package; whether native or non native(ruby
+	// gems,
+	// node.js packages etc)
+	PackageType string `json:"packageType,omitempty"`
+
+	// SeverityName: The severity (eg: distro assigned severity) for this
+	// vulnerability.
+	SeverityName string `json:"severityName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CpeUri") 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. "CpeUri") 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 *Detail) MarshalJSON() ([]byte, error) {
+	type NoMethod Detail
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Discovered: Provides information about the scan status of a
+// discovered resource.
+type Discovered struct {
+	// AnalysisStatus: The status of discovery for the resource.
+	//
+	// Possible values:
+	//   "ANALYSIS_STATUS_UNSPECIFIED" - Unknown
+	//   "PENDING" - Resource is known but no action has been taken yet.
+	//   "SCANNING" - Resource is being analyzed.
+	//   "FINISHED_SUCCESS" - Analysis has finished successfully.
+	//   "FINISHED_FAILED" - Analysis has finished unsuccessfully, the
+	// analysis itself is in a bad
+	// state.
+	//   "FINISHED_UNSUPPORTED" - The resource is known not to be supported.
+	AnalysisStatus string `json:"analysisStatus,omitempty"`
+
+	// AnalysisStatusError: When an error is encountered this will contain a
+	// LocalizedMessage under
+	// details to show to the user. The LocalizedMessage output only
+	// and
+	// populated by the API.
+	AnalysisStatusError *Status `json:"analysisStatusError,omitempty"`
+
+	// ContinuousAnalysis: Whether the resource is continuously analyzed.
+	//
+	// Possible values:
+	//   "CONTINUOUS_ANALYSIS_UNSPECIFIED" - Unknown
+	//   "ACTIVE" - The resource is continuously analyzed.
+	//   "INACTIVE" - The resource is ignored for continuous analysis.
+	ContinuousAnalysis string `json:"continuousAnalysis,omitempty"`
+
+	// Operation: Output only. An operation that indicates the status of the
+	// current scan.
+	// This field is deprecated, do not use.
+	Operation *Operation `json:"operation,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AnalysisStatus") 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. "AnalysisStatus") 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 *Discovered) MarshalJSON() ([]byte, error) {
+	type NoMethod Discovered
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Discovery: A note that indicates a type of analysis a provider would
+// perform. This note
+// exists in a provider's project. A `Discovery` occurrence is created
+// in a
+// consumer's project at the start of analysis. The occurrence's
+// operation will
+// indicate the status of the analysis. Absence of an occurrence linked
+// to this
+// note for a resource indicates that analysis hasn't started.
+type Discovery struct {
+	// AnalysisKind: The kind of analysis that is handled by this discovery.
+	//
+	// Possible values:
+	//   "KIND_UNSPECIFIED" - Unknown
+	//   "PACKAGE_VULNERABILITY" - The note and occurrence represent a
+	// package vulnerability.
+	//   "BUILD_DETAILS" - The note and occurrence assert build provenance.
+	//   "IMAGE_BASIS" - This represents an image basis relationship.
+	//   "PACKAGE_MANAGER" - This represents a package installed via a
+	// package manager.
+	//   "DEPLOYABLE" - The note and occurrence track deployment events.
+	//   "DISCOVERY" - The note and occurrence track the initial discovery
+	// status of a resource.
+	//   "ATTESTATION_AUTHORITY" - This represents a logical "role" that can
+	// attest to artifacts.
+	AnalysisKind string `json:"analysisKind,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AnalysisKind") 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. "AnalysisKind") 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 *Discovery) MarshalJSON() ([]byte, error) {
+	type NoMethod Discovery
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Distribution: This represents a particular channel of distribution
+// for a given package.
+// e.g. Debian's jessie-backports dpkg mirror
+type Distribution struct {
+	// Architecture: The CPU architecture for which packages in this
+	// distribution
+	// channel were built
+	//
+	// Possible values:
+	//   "ARCHITECTURE_UNSPECIFIED" - Unknown architecture
+	//   "X86" - X86 architecture
+	//   "X64" - X64 architecture
+	Architecture string `json:"architecture,omitempty"`
+
+	// CpeUri: The cpe_uri in [cpe
+	// format](https://cpe.mitre.org/specification/)
+	// denoting the package manager version distributing a package.
+	CpeUri string `json:"cpeUri,omitempty"`
+
+	// Description: The distribution channel-specific description of this
+	// package.
+	Description string `json:"description,omitempty"`
+
+	// LatestVersion: The latest available version of this package in
+	// this distribution channel.
+	LatestVersion *Version `json:"latestVersion,omitempty"`
+
+	// Maintainer: A freeform string denoting the maintainer of this
+	// package.
+	Maintainer string `json:"maintainer,omitempty"`
+
+	// Url: The distribution channel-specific homepage for this package.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Architecture") 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. "Architecture") 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 *Distribution) MarshalJSON() ([]byte, error) {
+	type NoMethod Distribution
+	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:"-"`
+}
+
+// Expr: Represents an expression text. Example:
+//
+//     title: "User account presence"
+//     description: "Determines whether the request has a user account"
+//     expression: "size(request.user) > 0"
+type Expr struct {
+	// Description: An optional description of the expression. This is a
+	// longer text which
+	// describes the expression, e.g. when hovered over it in a UI.
+	Description string `json:"description,omitempty"`
+
+	// Expression: Textual representation of an expression in
+	// Common Expression Language syntax.
+	//
+	// The application context of the containing message determines
+	// which
+	// well-known feature set of CEL is supported.
+	Expression string `json:"expression,omitempty"`
+
+	// Location: An optional string indicating the location of the
+	// expression for error
+	// reporting, e.g. a file name and a position in the file.
+	Location string `json:"location,omitempty"`
+
+	// Title: An optional title for the expression, i.e. a short string
+	// describing
+	// its purpose. This can be used e.g. in UIs which allow to enter
+	// the
+	// expression.
+	Title string `json:"title,omitempty"`
+
+	// 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,
+	// 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. "Description") 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 *Expr) MarshalJSON() ([]byte, error) {
+	type NoMethod Expr
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// FileHashes: Container message for hashes of byte content of files,
+// used in Source
+// messages to verify integrity of source input to the build.
+type FileHashes struct {
+	// FileHash: Collection of file hashes.
+	FileHash []*Hash `json:"fileHash,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FileHash") 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. "FileHash") 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 *FileHashes) MarshalJSON() ([]byte, error) {
+	type NoMethod FileHashes
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Fingerprint: A set of properties that uniquely identify a given
+// Docker image.
+type Fingerprint struct {
+	// V1Name: The layer-id of the final layer in the Docker image's
+	// v1
+	// representation.
+	// This field can be used as a filter in list requests.
+	V1Name string `json:"v1Name,omitempty"`
+
+	// V2Blob: The ordered list of v2 blobs that represent a given image.
+	V2Blob []string `json:"v2Blob,omitempty"`
+
+	// V2Name: Output only. The name of the image's v2 blobs computed via:
+	//   [bottom] := v2_blobbottom := sha256(v2_blob[N] + " " +
+	// v2_name[N+1])
+	// Only the name of the final blob is kept.
+	// This field can be used as a filter in list requests.
+	V2Name string `json:"v2Name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "V1Name") 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. "V1Name") 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 *Fingerprint) MarshalJSON() ([]byte, error) {
+	type NoMethod Fingerprint
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GetIamPolicyRequest: Request message for `GetIamPolicy` method.
+type GetIamPolicyRequest struct {
+}
+
+// GetVulnzOccurrencesSummaryResponse: A summary of how many vulnz
+// occurrences there are per severity type.
+// counts by groups, or if we should have different summary
+// messages
+// like this.
+type GetVulnzOccurrencesSummaryResponse struct {
+	// Counts: A map of how many occurrences were found for each severity.
+	Counts []*SeverityCount `json:"counts,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Counts") 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. "Counts") 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 *GetVulnzOccurrencesSummaryResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GetVulnzOccurrencesSummaryResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1AliasContext: An alias to a
+// repo revision.
+type GoogleDevtoolsContaineranalysisV1alpha1AliasContext struct {
+	// Kind: The alias kind.
+	//
+	// Possible values:
+	//   "KIND_UNSPECIFIED" - Unknown.
+	//   "FIXED" - Git tag.
+	//   "MOVABLE" - Git branch.
+	//   "OTHER" - Used to specify non-standard aliases. For example, if a
+	// Git repo has a
+	// ref named "refs/foo/bar".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: The alias name.
+	Name string `json:"name,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 *GoogleDevtoolsContaineranalysisV1alpha1AliasContext) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1AliasContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext: A
+// CloudRepoSourceContext denotes a particular revision in a Google
+// Cloud
+// Source Repo.
+type GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext struct {
+	// AliasContext: An alias, which may be a branch or tag.
+	AliasContext *GoogleDevtoolsContaineranalysisV1alpha1AliasContext `json:"aliasContext,omitempty"`
+
+	// RepoId: The ID of the repo.
+	RepoId *GoogleDevtoolsContaineranalysisV1alpha1RepoId `json:"repoId,omitempty"`
+
+	// RevisionId: A revision ID.
+	RevisionId string `json:"revisionId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AliasContext") 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. "AliasContext") 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 *GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext: A
+// SourceContext referring to a Gerrit project.
+type GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext struct {
+	// AliasContext: An alias, which may be a branch or tag.
+	AliasContext *GoogleDevtoolsContaineranalysisV1alpha1AliasContext `json:"aliasContext,omitempty"`
+
+	// GerritProject: The full project name within the host. Projects may be
+	// nested, so
+	// "project/subproject" is a valid project name. The "repo name" is
+	// the hostURI/project.
+	GerritProject string `json:"gerritProject,omitempty"`
+
+	// HostUri: The URI of a running Gerrit instance.
+	HostUri string `json:"hostUri,omitempty"`
+
+	// RevisionId: A revision (commit) ID.
+	RevisionId string `json:"revisionId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AliasContext") 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. "AliasContext") 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 *GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext: A
+// GitSourceContext denotes a particular revision in a third party
+// Git
+// repository (e.g., GitHub).
+type GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext struct {
+	// RevisionId: Required.
+	// Git commit hash.
+	RevisionId string `json:"revisionId,omitempty"`
+
+	// Url: Git repository URL.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "RevisionId") 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. "RevisionId") 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 *GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata: Metadata
+// for all operations used and required for all operations
+// that created by Container Analysis Providers
+type GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata struct {
+	// CreateTime: Output only. The time this operation was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// EndTime: Output only. The time that this operation was marked
+	// completed or failed.
+	EndTime string `json:"endTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") 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. "CreateTime") 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 *GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId: Selects a repo
+// using a Google Cloud Platform project ID (e.g.,
+// winged-cargo-31) and a repo name within that project.
+type GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId struct {
+	// ProjectId: The ID of the project.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// RepoName: The name of the repo. Leave empty for the default repo.
+	RepoName string `json:"repoName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ProjectId") 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. "ProjectId") 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 *GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1RepoId: A unique identifier
+// for a Cloud Repo.
+type GoogleDevtoolsContaineranalysisV1alpha1RepoId struct {
+	// ProjectRepoId: A combination of a project ID and a repo name.
+	ProjectRepoId *GoogleDevtoolsContaineranalysisV1alpha1ProjectRepoId `json:"projectRepoId,omitempty"`
+
+	// Uid: A server-assigned, globally unique identifier.
+	Uid string `json:"uid,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ProjectRepoId") 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. "ProjectRepoId") 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 *GoogleDevtoolsContaineranalysisV1alpha1RepoId) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1RepoId
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1SourceContext: A SourceContext
+// is a reference to a tree of files. A SourceContext together
+// with a path point to a unique revision of a single file or directory.
+type GoogleDevtoolsContaineranalysisV1alpha1SourceContext struct {
+	// CloudRepo: A SourceContext referring to a revision in a Google Cloud
+	// Source Repo.
+	CloudRepo *GoogleDevtoolsContaineranalysisV1alpha1CloudRepoSourceContext `json:"cloudRepo,omitempty"`
+
+	// Gerrit: A SourceContext referring to a Gerrit project.
+	Gerrit *GoogleDevtoolsContaineranalysisV1alpha1GerritSourceContext `json:"gerrit,omitempty"`
+
+	// Git: A SourceContext referring to any third party Git repo (e.g.,
+	// GitHub).
+	Git *GoogleDevtoolsContaineranalysisV1alpha1GitSourceContext `json:"git,omitempty"`
+
+	// Labels: Labels with user defined metadata.
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CloudRepo") 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. "CloudRepo") 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 *GoogleDevtoolsContaineranalysisV1alpha1SourceContext) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1SourceContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Hash: Container message for hash values.
+type Hash struct {
+	// Type: The type of hash that was performed.
+	//
+	// Possible values:
+	//   "NONE" - No hash requested.
+	//   "SHA256" - A sha256 hash.
+	Type string `json:"type,omitempty"`
+
+	// Value: The hash value.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Type") 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. "Type") 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 *Hash) MarshalJSON() ([]byte, error) {
+	type NoMethod Hash
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Installation: This represents how a particular software package may
+// be installed on
+// a system.
+type Installation struct {
+	// Location: All of the places within the filesystem versions of this
+	// package
+	// have been found.
+	Location []*Location `json:"location,omitempty"`
+
+	// Name: Output only. The name of the installed package.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Location") 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. "Location") 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 *Installation) MarshalJSON() ([]byte, error) {
+	type NoMethod Installation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Layer: Layer holds metadata specific to a layer of a Docker image.
+type Layer struct {
+	// Arguments: The recovered arguments to the Dockerfile directive.
+	Arguments string `json:"arguments,omitempty"`
+
+	// Directive: The recovered Dockerfile directive used to construct this
+	// layer.
+	//
+	// Possible values:
+	//   "DIRECTIVE_UNSPECIFIED" - Default value for unsupported/missing
+	// directive
+	//   "MAINTAINER" -
+	// https://docs.docker.com/reference/builder/#maintainer
+	//   "RUN" - https://docs.docker.com/reference/builder/#run
+	//   "CMD" - https://docs.docker.com/reference/builder/#cmd
+	//   "LABEL" - https://docs.docker.com/reference/builder/#label
+	//   "EXPOSE" - https://docs.docker.com/reference/builder/#expose
+	//   "ENV" - https://docs.docker.com/reference/builder/#env
+	//   "ADD" - https://docs.docker.com/reference/builder/#add
+	//   "COPY" - https://docs.docker.com/reference/builder/#copy
+	//   "ENTRYPOINT" -
+	// https://docs.docker.com/reference/builder/#entrypoint
+	//   "VOLUME" - https://docs.docker.com/reference/builder/#volume
+	//   "USER" - https://docs.docker.com/reference/builder/#user
+	//   "WORKDIR" - https://docs.docker.com/reference/builder/#workdir
+	//   "ARG" - https://docs.docker.com/reference/builder/#arg
+	//   "ONBUILD" - https://docs.docker.com/reference/builder/#onbuild
+	//   "STOPSIGNAL" -
+	// https://docs.docker.com/reference/builder/#stopsignal
+	//   "HEALTHCHECK" -
+	// https://docs.docker.com/reference/builder/#healthcheck
+	//   "SHELL" - https://docs.docker.com/reference/builder/#shell
+	Directive string `json:"directive,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *Layer) MarshalJSON() ([]byte, error) {
+	type NoMethod Layer
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListNoteOccurrencesResponse: Response including listed occurrences
+// for a note.
+type ListNoteOccurrencesResponse struct {
+	// NextPageToken: Token to receive the next page of notes.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Occurrences: The occurrences attached to the specified note.
+	Occurrences []*Occurrence `json:"occurrences,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 *ListNoteOccurrencesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListNoteOccurrencesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListNotesResponse: Response including listed notes.
+type ListNotesResponse struct {
+	// NextPageToken: The next pagination token in the list response. It
+	// should be used as
+	// page_token for the following request. An empty value means no more
+	// result.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Notes: The occurrences requested
+	Notes []*Note `json:"notes,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 *ListNotesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListNotesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListOccurrencesResponse: Response including listed active
+// occurrences.
+type ListOccurrencesResponse struct {
+	// NextPageToken: The next pagination token in the list response. It
+	// should be used as
+	// `page_token` for the following request. An empty value means no
+	// more
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Occurrences: The occurrences requested.
+	Occurrences []*Occurrence `json:"occurrences,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 *ListOccurrencesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListOccurrencesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListScanConfigsResponse: A list of scan configs for the project.
+type ListScanConfigsResponse struct {
+	// NextPageToken: A page token to pass in order to get more scan
+	// configs.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ScanConfigs: The set of scan configs.
+	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)
+}
+
+// Location: An occurrence of a particular package installation found
+// within a
+// system's filesystem.
+// e.g. glibc was found in /var/lib/dpkg/status
+type Location struct {
+	// CpeUri: The cpe_uri in [cpe
+	// format](https://cpe.mitre.org/specification/)
+	// denoting the package manager version distributing a package.
+	CpeUri string `json:"cpeUri,omitempty"`
+
+	// Path: The path from which we gathered that this package/version is
+	// installed.
+	Path string `json:"path,omitempty"`
+
+	// Version: The version installed at this location.
+	Version *Version `json:"version,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CpeUri") 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. "CpeUri") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Location) MarshalJSON() ([]byte, error) {
+	type NoMethod Location
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Note: Provides a detailed description of a `Note`.
+type Note struct {
+	// AttestationAuthority: A note describing an attestation role.
+	AttestationAuthority *AttestationAuthority `json:"attestationAuthority,omitempty"`
+
+	// BaseImage: A note describing a base image.
+	BaseImage *Basis `json:"baseImage,omitempty"`
+
+	// BuildType: Build provenance type for a verifiable build.
+	BuildType *BuildType `json:"buildType,omitempty"`
+
+	// CreateTime: Output only. The time this note was created. This field
+	// can be used as a
+	// filter in list requests.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Deployable: A note describing something that can be deployed.
+	Deployable *Deployable `json:"deployable,omitempty"`
+
+	// Discovery: A note describing a provider/analysis type.
+	Discovery *Discovery `json:"discovery,omitempty"`
+
+	// ExpirationTime: Time of expiration for this note, null if note does
+	// not expire.
+	ExpirationTime string `json:"expirationTime,omitempty"`
+
+	// Kind: Output only. This explicitly denotes which kind of note is
+	// specified. This
+	// field can be used as a filter in list requests.
+	//
+	// Possible values:
+	//   "KIND_UNSPECIFIED" - Unknown
+	//   "PACKAGE_VULNERABILITY" - The note and occurrence represent a
+	// package vulnerability.
+	//   "BUILD_DETAILS" - The note and occurrence assert build provenance.
+	//   "IMAGE_BASIS" - This represents an image basis relationship.
+	//   "PACKAGE_MANAGER" - This represents a package installed via a
+	// package manager.
+	//   "DEPLOYABLE" - The note and occurrence track deployment events.
+	//   "DISCOVERY" - The note and occurrence track the initial discovery
+	// status of a resource.
+	//   "ATTESTATION_AUTHORITY" - This represents a logical "role" that can
+	// attest to artifacts.
+	Kind string `json:"kind,omitempty"`
+
+	// LongDescription: A detailed description of this `Note`.
+	LongDescription string `json:"longDescription,omitempty"`
+
+	// Name: The name of the note in the
+	// form
+	// "providers/{provider_id}/notes/{NOTE_ID}"
+	Name string `json:"name,omitempty"`
+
+	// Package: A note describing a package hosted by various package
+	// managers.
+	Package *Package `json:"package,omitempty"`
+
+	// RelatedUrl: URLs associated with this note
+	RelatedUrl []*RelatedUrl `json:"relatedUrl,omitempty"`
+
+	// ShortDescription: A one sentence description of this `Note`.
+	ShortDescription string `json:"shortDescription,omitempty"`
+
+	// UpdateTime: Output only. The time this note was last updated. This
+	// field can be used as
+	// a filter in list requests.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// VulnerabilityType: A package vulnerability type of note.
+	VulnerabilityType *VulnerabilityType `json:"vulnerabilityType,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AttestationAuthority") 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. "AttestationAuthority") 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 *Note) MarshalJSON() ([]byte, error) {
+	type NoMethod Note
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Occurrence: `Occurrence` includes information about analysis
+// occurrences for an image.
+type Occurrence struct {
+	// Attestation: Describes an attestation of an artifact.
+	Attestation *Attestation `json:"attestation,omitempty"`
+
+	// BuildDetails: Build details for a verifiable build.
+	BuildDetails *BuildDetails `json:"buildDetails,omitempty"`
+
+	// CreateTime: Output only. The time this `Occurrence` was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Deployment: Describes the deployment of an artifact on a runtime.
+	Deployment *Deployment `json:"deployment,omitempty"`
+
+	// DerivedImage: Describes how this resource derives from the basis
+	// in the associated note.
+	DerivedImage *Derived `json:"derivedImage,omitempty"`
+
+	// Discovered: Describes the initial scan status for this resource.
+	Discovered *Discovered `json:"discovered,omitempty"`
+
+	// Installation: Describes the installation of a package on the linked
+	// resource.
+	Installation *Installation `json:"installation,omitempty"`
+
+	// Kind: Output only. This explicitly denotes which of the `Occurrence`
+	// details are
+	// specified. This field can be used as a filter in list requests.
+	//
+	// Possible values:
+	//   "KIND_UNSPECIFIED" - Unknown
+	//   "PACKAGE_VULNERABILITY" - The note and occurrence represent a
+	// package vulnerability.
+	//   "BUILD_DETAILS" - The note and occurrence assert build provenance.
+	//   "IMAGE_BASIS" - This represents an image basis relationship.
+	//   "PACKAGE_MANAGER" - This represents a package installed via a
+	// package manager.
+	//   "DEPLOYABLE" - The note and occurrence track deployment events.
+	//   "DISCOVERY" - The note and occurrence track the initial discovery
+	// status of a resource.
+	//   "ATTESTATION_AUTHORITY" - This represents a logical "role" that can
+	// attest to artifacts.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Output only. The name of the `Occurrence` in the
+	// form
+	// "projects/{project_id}/occurrences/{OCCURRENCE_ID}"
+	Name string `json:"name,omitempty"`
+
+	// NoteName: An analysis note associated with this image, in the
+	// form
+	// "providers/{provider_id}/notes/{NOTE_ID}"
+	// This field can be used as a filter in list requests.
+	NoteName string `json:"noteName,omitempty"`
+
+	// Remediation: A description of actions that can be taken to remedy the
+	// `Note`
+	Remediation string `json:"remediation,omitempty"`
+
+	// Resource: The resource for which the `Occurrence` applies.
+	Resource *Resource `json:"resource,omitempty"`
+
+	// ResourceUrl: The unique URL of the image or the container for which
+	// the `Occurrence`
+	// applies. For example, https://gcr.io/project/image@sha256:foo This
+	// field
+	// can be used as a filter in list requests.
+	ResourceUrl string `json:"resourceUrl,omitempty"`
+
+	// UpdateTime: Output only. The time this `Occurrence` was last updated.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// VulnerabilityDetails: Details of a security vulnerability note.
+	VulnerabilityDetails *VulnerabilityDetails `json:"vulnerabilityDetails,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Attestation") 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. "Attestation") 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 *Occurrence) MarshalJSON() ([]byte, error) {
+	type NoMethod Occurrence
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Operation: This resource represents a long-running operation that is
+// the result of a
+// network API call.
+type Operation struct {
+	// Done: If the value is `false`, it means the operation is still in
+	// progress.
+	// If `true`, the operation is completed, and either `error` or
+	// `response` is
+	// available.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure or
+	// cancellation.
+	Error *Status `json:"error,omitempty"`
+
+	// Metadata: Service-specific metadata associated with the operation.
+	// It typically
+	// contains progress information and common metadata such as create
+	// time.
+	// Some services might not provide such metadata.  Any method that
+	// returns a
+	// long-running operation should document the metadata type, if any.
+	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
+
+	// Name: The server-assigned name, which is only unique within the same
+	// service that
+	// originally returns it. If you use the default HTTP mapping,
+	// the
+	// `name` should have the format of `operations/some/unique/name`.
+	Name string `json:"name,omitempty"`
+
+	// Response: The normal response of the operation in case of success.
+	// If the original
+	// method returns no data on success, such as `Delete`, the response
+	// is
+	// `google.protobuf.Empty`.  If the original method is
+	// standard
+	// `Get`/`Create`/`Update`, the response should be the resource.  For
+	// other
+	// methods, the response should have the type `XxxResponse`, where
+	// `Xxx`
+	// is the original method name.  For example, if the original method
+	// name
+	// is `TakeSnapshot()`, the inferred response type
+	// is
+	// `TakeSnapshotResponse`.
+	Response googleapi.RawMessage `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") 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. "Done") 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 *Operation) MarshalJSON() ([]byte, error) {
+	type NoMethod Operation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Package: This represents a particular package that is distributed
+// over
+// various channels.
+// e.g. glibc (aka libc6) is distributed by many, at various versions.
+type Package struct {
+	// Distribution: The various channels by which a package is distributed.
+	Distribution []*Distribution `json:"distribution,omitempty"`
+
+	// Name: The name of the package.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Distribution") 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. "Distribution") 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 *Package) MarshalJSON() ([]byte, error) {
+	type NoMethod Package
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PackageIssue: This message wraps a location affected by a
+// vulnerability and its
+// associated fix (if one is available).
+type PackageIssue struct {
+	// AffectedLocation: The location of the vulnerability.
+	AffectedLocation *VulnerabilityLocation `json:"affectedLocation,omitempty"`
+
+	// FixedLocation: The location of the available fix for vulnerability.
+	FixedLocation *VulnerabilityLocation `json:"fixedLocation,omitempty"`
+
+	// SeverityName: The severity (eg: distro assigned severity) for this
+	// vulnerability.
+	SeverityName string `json:"severityName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AffectedLocation") 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. "AffectedLocation") 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 *PackageIssue) MarshalJSON() ([]byte, error) {
+	type NoMethod PackageIssue
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PgpSignedAttestation: An attestation wrapper with a PGP-compatible
+// signature.
+// This message only supports `ATTACHED` signatures, where the payload
+// that is
+// signed is included alongside the signature itself in the same file.
+type PgpSignedAttestation struct {
+	// ContentType: Type (for example schema) of the attestation payload
+	// that was signed.
+	// The verifier must ensure that the provided type is one that the
+	// verifier
+	// supports, and that the attestation payload is a valid instantiation
+	// of that
+	// type (for example by validating a JSON schema).
+	//
+	// Possible values:
+	//   "CONTENT_TYPE_UNSPECIFIED" - `ContentType` is not set.
+	//   "SIMPLE_SIGNING_JSON" - Atomic format attestation signature.
+	// See
+	// https://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276
+	// c3e0f64e77723e7/docs/atomic-signature.md
+	// The payload extracted from `signature` is a JSON blob conforming to
+	// the
+	// linked schema.
+	ContentType string `json:"contentType,omitempty"`
+
+	// PgpKeyId: The cryptographic fingerprint of the key used to generate
+	// the signature,
+	// as output by, e.g. `gpg --list-keys`. This should be the version 4,
+	// full
+	// 160-bit fingerprint, expressed as a 40 character hexadecimal string.
+	// See
+	// https://tools.ietf.org/html/rfc4880#section-12.2 for
+	// details.
+	// Implementations may choose to acknowledge "LONG", "SHORT", or
+	// other
+	// abbreviated key IDs, but only the full fingerprint is guaranteed to
+	// work.
+	// In gpg, the full fingerprint can be retrieved from the `fpr`
+	// field
+	// returned when calling --list-keys with --with-colons.  For
+	// example:
+	// ```
+	// gpg --with-colons --with-fingerprint --force-v4-certs \
+	//     --list-keys
+	// attester@example.com
+	// tru::1:1513631572:0:3:1:5
+	// pub:...<SNIP>...
+	// fpr:::
+	// ::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB:
+	// ```
+	// Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
+	PgpKeyId string `json:"pgpKeyId,omitempty"`
+
+	// Signature: The raw content of the signature, as output by GNU Privacy
+	// Guard (GPG) or
+	// equivalent.  Since this message only supports attached signatures,
+	// the
+	// payload that was signed must be attached. While the signature
+	// format
+	// supported is dependent on the verification implementation, currently
+	// only
+	// ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather
+	// than
+	// `--clearsign` to gpg) are supported. Concretely, `gpg --sign
+	// --armor
+	// --output=signature.gpg payload.json` will create the signature
+	// content
+	// expected in this field in `signature.gpg` for the
+	// `payload.json`
+	// attestation payload.
+	Signature string `json:"signature,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 *PgpSignedAttestation) MarshalJSON() ([]byte, error) {
+	type NoMethod PgpSignedAttestation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Policy: Defines an Identity and Access Management (IAM) policy. It is
+// used to
+// specify access control policies for Cloud Platform resources.
+//
+//
+// A `Policy` consists of a list of `bindings`. A `binding` binds a list
+// of
+// `members` to a `role`, where the members can be user accounts, Google
+// groups,
+// Google domains, and service accounts. A `role` is a named list of
+// permissions
+// defined by IAM.
+//
+// **JSON Example**
+//
+//     {
+//       "bindings": [
+//         {
+//           "role": "roles/owner",
+//           "members": [
+//             "user:mike@example.com",
+//             "group:admins@example.com",
+//             "domain:google.com",
+//
+// "serviceAccount:my-other-app@appspot.gserviceaccount.com"
+//           ]
+//         },
+//         {
+//           "role": "roles/viewer",
+//           "members": ["user:sean@example.com"]
+//         }
+//       ]
+//     }
+//
+// **YAML Example**
+//
+//     bindings:
+//     - members:
+//       - user:mike@example.com
+//       - group:admins@example.com
+//       - domain:google.com
+//       - serviceAccount:my-other-app@appspot.gserviceaccount.com
+//       role: roles/owner
+//     - members:
+//       - user:sean@example.com
+//       role: roles/viewer
+//
+//
+// For a description of IAM and its features, see the
+// [IAM developer's guide](https://cloud.google.com/iam/docs).
+type Policy struct {
+	// AuditConfigs: Specifies cloud audit logging configuration for this
+	// policy.
+	AuditConfigs []*AuditConfig `json:"auditConfigs,omitempty"`
+
+	// Bindings: Associates a list of `members` to a `role`.
+	// `bindings` with no members will result in an error.
+	Bindings []*Binding `json:"bindings,omitempty"`
+
+	// Etag: `etag` is used for optimistic concurrency control as a way to
+	// help
+	// prevent simultaneous updates of a policy from overwriting each
+	// other.
+	// It is strongly suggested that systems make use of the `etag` in
+	// the
+	// read-modify-write cycle to perform policy updates in order to avoid
+	// race
+	// conditions: An `etag` is returned in the response to `getIamPolicy`,
+	// and
+	// systems are expected to put that etag in the request to
+	// `setIamPolicy` to
+	// ensure that their change will be applied to the same version of the
+	// policy.
+	//
+	// If no `etag` is provided in the call to `setIamPolicy`, then the
+	// existing
+	// policy is overwritten blindly.
+	Etag string `json:"etag,omitempty"`
+
+	// Version: Deprecated.
+	Version int64 `json:"version,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AuditConfigs") 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. "AuditConfigs") 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 *Policy) MarshalJSON() ([]byte, error) {
+	type NoMethod Policy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RelatedUrl: Metadata for any related URL information
+type RelatedUrl struct {
+	// Label: Label to describe usage of the URL
+	Label string `json:"label,omitempty"`
+
+	// Url: Specific URL to associate with the note
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Label") 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. "Label") 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 *RelatedUrl) MarshalJSON() ([]byte, error) {
+	type NoMethod RelatedUrl
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RepoSource: RepoSource describes the location of the source in a
+// Google Cloud Source
+// Repository.
+type RepoSource struct {
+	// BranchName: Name of the branch to build.
+	BranchName string `json:"branchName,omitempty"`
+
+	// CommitSha: Explicit commit SHA to build.
+	CommitSha string `json:"commitSha,omitempty"`
+
+	// ProjectId: ID of the project that owns the repo.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// RepoName: Name of the repo.
+	RepoName string `json:"repoName,omitempty"`
+
+	// TagName: Name of the tag to build.
+	TagName string `json:"tagName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BranchName") 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. "BranchName") 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 *RepoSource) MarshalJSON() ([]byte, error) {
+	type NoMethod RepoSource
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Resource: Resource is an entity that can have metadata. E.g., a
+// Docker image.
+type Resource struct {
+	// ContentHash: The hash of the resource content. E.g., the Docker
+	// digest.
+	ContentHash *Hash `json:"contentHash,omitempty"`
+
+	// Name: The name of the resource. E.g., the name of a Docker image -
+	// "Debian".
+	Name string `json:"name,omitempty"`
+
+	// Uri: The unique URI of the resource.
+	// E.g.,
+	// "https://gcr.io/project/image@sha256:foo" for a Docker image.
+	Uri string `json:"uri,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ContentHash") 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. "ContentHash") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Resource) MarshalJSON() ([]byte, error) {
+	type NoMethod Resource
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ScanConfig: Indicates various scans and whether they are turned on or
+// off.
+type ScanConfig struct {
+	// CreateTime: Output only. The time this scan config was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Description: Output only. A human-readable description of what the
+	// `ScanConfig` does.
+	Description string `json:"description,omitempty"`
+
+	// Enabled: Indicates whether the Scan is enabled.
+	Enabled bool `json:"enabled,omitempty"`
+
+	// Name: Output only. The name of the ScanConfig in the
+	// form
+	// “projects/{project_id}/scanConfigs/{scan_config_id}".
+	Name string `json:"name,omitempty"`
+
+	// UpdateTime: Output only. The time this scan config was last updated.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") 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. "CreateTime") 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)
+}
+
+// SetIamPolicyRequest: Request message for `SetIamPolicy` method.
+type SetIamPolicyRequest struct {
+	// Policy: REQUIRED: The complete policy to be applied to the
+	// `resource`. The size of
+	// the policy is limited to a few 10s of KB. An empty policy is a
+	// valid policy but certain Cloud Platform services (such as
+	// Projects)
+	// might reject them.
+	Policy *Policy `json:"policy,omitempty"`
+
+	// UpdateMask: OPTIONAL: A FieldMask specifying which fields of the
+	// policy to modify. Only
+	// the fields in the mask will be modified. If no mask is provided,
+	// the
+	// following default mask is used:
+	// paths: "bindings, etag"
+	// This field is only used by Cloud IAM.
+	UpdateMask string `json:"updateMask,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Policy") 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. "Policy") 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 *SetIamPolicyRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod SetIamPolicyRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// SeverityCount: The number of occurrences created for a specific
+// severity.
+type SeverityCount struct {
+	// Count: The number of occurrences with the severity.
+	Count int64 `json:"count,omitempty,string"`
+
+	// Severity: The severity of the occurrences.
+	//
+	// Possible values:
+	//   "SEVERITY_UNSPECIFIED" - Unknown Impact
+	//   "MINIMAL" - Minimal Impact
+	//   "LOW" - Low Impact
+	//   "MEDIUM" - Medium Impact
+	//   "HIGH" - High Impact
+	//   "CRITICAL" - Critical Impact
+	Severity string `json:"severity,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Count") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Count") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SeverityCount) MarshalJSON() ([]byte, error) {
+	type NoMethod SeverityCount
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Source: Source describes the location of the source used for the
+// build.
+type Source struct {
+	// AdditionalContexts: If provided, some of the source code used for the
+	// build may be found in
+	// these locations, in the case where the source repository had
+	// multiple
+	// remotes or submodules. This list will not include the context
+	// specified in
+	// the context field.
+	AdditionalContexts []*GoogleDevtoolsContaineranalysisV1alpha1SourceContext `json:"additionalContexts,omitempty"`
+
+	// ArtifactStorageSource: If provided, the input binary artifacts for
+	// the build came from this
+	// location.
+	ArtifactStorageSource *StorageSource `json:"artifactStorageSource,omitempty"`
+
+	// Context: If provided, the source code used for the build came from
+	// this location.
+	Context *GoogleDevtoolsContaineranalysisV1alpha1SourceContext `json:"context,omitempty"`
+
+	// FileHashes: Hash(es) of the build source, which can be used to verify
+	// that the original
+	// source integrity was maintained in the build.
+	//
+	// The keys to this map are file paths used as build source and the
+	// values
+	// contain the hash values for those files.
+	//
+	// If the build source came in a single package such as a gzipped
+	// tarfile
+	// (.tar.gz), the FileHash will be for the single path to that file.
+	FileHashes map[string]FileHashes `json:"fileHashes,omitempty"`
+
+	// RepoSource: If provided, get source from this location in a Cloud
+	// Repo.
+	RepoSource *RepoSource `json:"repoSource,omitempty"`
+
+	// StorageSource: If provided, get the source from this location in in
+	// Google Cloud
+	// Storage.
+	StorageSource *StorageSource `json:"storageSource,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AdditionalContexts")
+	// 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. "AdditionalContexts") 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 *Source) MarshalJSON() ([]byte, error) {
+	type NoMethod Source
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// 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:
+//
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code, error
+// message,
+// and error details. The error code should be an enum value
+// of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The
+// error message should be a developer-facing English message that
+// helps
+// developers *understand* and *resolve* the error. If a localized
+// user-facing
+// error message is needed, put the localized message in the error
+// details or
+// localize it in the client. The optional error details may contain
+// arbitrary
+// information about the error. There is a predefined set of error
+// detail types
+// in the package `google.rpc` that can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error
+// model, but it
+// is not necessarily the actual wire format. When the `Status` message
+// is
+// exposed in different client libraries and different wire protocols,
+// it can be
+// mapped differently. For example, it will likely be mapped to some
+// exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety
+// of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different
+// environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the
+// client,
+//     it may embed the `Status` in the normal response to indicate the
+// partial
+//     errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step
+// may
+//     have a `Status` message for error reporting.
+//
+// - Batch operations. If a client uses batch request and batch
+// response, the
+//     `Status` message should be used directly inside batch response,
+// one for
+//     each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous
+// operation
+//     results in its response, the status of those operations should
+// be
+//     represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message
+// `Status` could
+//     be used directly after any stripping needed for security/privacy
+// reasons.
+type Status struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There is a
+	// common set of
+	// message types for APIs to use.
+	Details []googleapi.RawMessage `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any
+	// user-facing error message should be localized and sent in
+	// the
+	// google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,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 *Status) MarshalJSON() ([]byte, error) {
+	type NoMethod Status
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// StorageSource: StorageSource describes the location of the source in
+// an archive file in
+// Google Cloud Storage.
+type StorageSource struct {
+	// Bucket: Google Cloud Storage bucket containing source (see [Bucket
+	// Name
+	// Requirements]
+	// (https://cloud.google.com/storage/docs/bucket-namin
+	// g#requirements)).
+	Bucket string `json:"bucket,omitempty"`
+
+	// Generation: Google Cloud Storage generation for the object.
+	Generation int64 `json:"generation,omitempty,string"`
+
+	// Object: Google Cloud Storage object containing source.
+	Object string `json:"object,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Bucket") 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. "Bucket") 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 *StorageSource) MarshalJSON() ([]byte, error) {
+	type NoMethod StorageSource
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TestIamPermissionsRequest: Request message for `TestIamPermissions`
+// method.
+type TestIamPermissionsRequest struct {
+	// Permissions: The set of permissions to check for the `resource`.
+	// Permissions with
+	// wildcards (such as '*' or 'storage.*') are not allowed. For
+	// more
+	// information see
+	// [IAM
+	// Overview](https://cloud.google.com/iam/docs/overview#permissions).
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Permissions") 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. "Permissions") 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 *TestIamPermissionsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod TestIamPermissionsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TestIamPermissionsResponse: Response message for `TestIamPermissions`
+// method.
+type TestIamPermissionsResponse struct {
+	// Permissions: A subset of `TestPermissionsRequest.permissions` that
+	// the caller is
+	// allowed.
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Permissions") 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. "Permissions") 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 *TestIamPermissionsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod TestIamPermissionsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// UpdateOperationRequest: Request for updating an existing operation
+type UpdateOperationRequest struct {
+	// Operation: The operation to create.
+	Operation *Operation `json:"operation,omitempty"`
+
+	// UpdateMask: The fields to update.
+	UpdateMask string `json:"updateMask,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Operation") 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. "Operation") 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 *UpdateOperationRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod UpdateOperationRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Version: Version contains structured information about the version of
+// the package.
+// For a discussion of this in
+// Debian/Ubuntu:
+// http://serverfault.com/questions/604541/debian-packages
+// -version-convention
+// For a discussion of this in
+// Redhat/Fedora/Centos:
+// http://blog.jasonantman.com/2014/07/how-yum-and-
+// rpm-compare-versions/
+type Version struct {
+	// Epoch: Used to correct mistakes in the version numbering scheme.
+	Epoch int64 `json:"epoch,omitempty"`
+
+	// Kind: Distinguish between sentinel MIN/MAX versions and normal
+	// versions.
+	// If kind is not NORMAL, then the other fields are ignored.
+	//
+	// Possible values:
+	//   "NORMAL" - A standard package version, defined by the other fields.
+	//   "MINIMUM" - A special version representing negative infinity,
+	// other fields are ignored.
+	//   "MAXIMUM" - A special version representing positive infinity,
+	// other fields are ignored.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: The main part of the version name.
+	Name string `json:"name,omitempty"`
+
+	// Revision: The iteration of the package build from the above version.
+	Revision string `json:"revision,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Epoch") 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. "Epoch") 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 *Version) MarshalJSON() ([]byte, error) {
+	type NoMethod Version
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// VulnerabilityDetails: Used by Occurrence to point to where the
+// vulnerability exists and how
+// to fix it.
+type VulnerabilityDetails struct {
+	// CvssScore: Output only. The CVSS score of this vulnerability. CVSS
+	// score is on a
+	// scale of 0-10 where 0 indicates low severity and 10 indicates
+	// high
+	// severity.
+	CvssScore float64 `json:"cvssScore,omitempty"`
+
+	// PackageIssue: The set of affected locations and their fixes (if
+	// available) within
+	// the associated resource.
+	PackageIssue []*PackageIssue `json:"packageIssue,omitempty"`
+
+	// Severity: Output only. The note provider assigned Severity of the
+	// vulnerability.
+	//
+	// Possible values:
+	//   "SEVERITY_UNSPECIFIED" - Unknown Impact
+	//   "MINIMAL" - Minimal Impact
+	//   "LOW" - Low Impact
+	//   "MEDIUM" - Medium Impact
+	//   "HIGH" - High Impact
+	//   "CRITICAL" - Critical Impact
+	Severity string `json:"severity,omitempty"`
+
+	// Type: The type of package; whether native or non native(ruby
+	// gems,
+	// node.js packages etc)
+	Type string `json:"type,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CvssScore") 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. "CvssScore") 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 *VulnerabilityDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerabilityDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *VulnerabilityDetails) UnmarshalJSON(data []byte) error {
+	type NoMethod VulnerabilityDetails
+	var s1 struct {
+		CvssScore gensupport.JSONFloat64 `json:"cvssScore"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.CvssScore = float64(s1.CvssScore)
+	return nil
+}
+
+// VulnerabilityLocation: The location of the vulnerability
+type VulnerabilityLocation struct {
+	// CpeUri: The cpe_uri in [cpe format]
+	// (https://cpe.mitre.org/specification/)
+	// format. Examples include distro or storage location for vulnerable
+	// jar.
+	// This field can be used as a filter in list requests.
+	CpeUri string `json:"cpeUri,omitempty"`
+
+	// Package: The package being described.
+	Package string `json:"package,omitempty"`
+
+	// Version: The version of the package being described.
+	// This field can be used as a filter in list requests.
+	Version *Version `json:"version,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CpeUri") 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. "CpeUri") 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 *VulnerabilityLocation) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerabilityLocation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// VulnerabilityType: VulnerabilityType provides metadata about a
+// security vulnerability.
+type VulnerabilityType struct {
+	// CvssScore: The CVSS score for this Vulnerability.
+	CvssScore float64 `json:"cvssScore,omitempty"`
+
+	// Details: All information about the package to specifically identify
+	// this
+	// vulnerability. One entry per (version range and cpe_uri) the
+	// package vulnerability has manifested in.
+	Details []*Detail `json:"details,omitempty"`
+
+	// Severity: Note provider assigned impact of the vulnerability
+	//
+	// Possible values:
+	//   "SEVERITY_UNSPECIFIED" - Unknown Impact
+	//   "MINIMAL" - Minimal Impact
+	//   "LOW" - Low Impact
+	//   "MEDIUM" - Medium Impact
+	//   "HIGH" - High Impact
+	//   "CRITICAL" - Critical Impact
+	Severity string `json:"severity,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CvssScore") 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. "CvssScore") 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 *VulnerabilityType) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerabilityType
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *VulnerabilityType) UnmarshalJSON(data []byte) error {
+	type NoMethod VulnerabilityType
+	var s1 struct {
+		CvssScore gensupport.JSONFloat64 `json:"cvssScore"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.CvssScore = float64(s1.CvssScore)
+	return nil
+}
+
+// method id "containeranalysis.projects.notes.create":
+
+type ProjectsNotesCreateCall struct {
+	s          *Service
+	parent     string
+	note       *Note
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates a new `Note`.
+func (r *ProjectsNotesService) Create(parent string, note *Note) *ProjectsNotesCreateCall {
+	c := &ProjectsNotesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.note = note
+	return c
+}
+
+// Name sets the optional parameter "name": The name of the
+// project.
+// Should be of the form "providers/{provider_id}".
+// @Deprecated
+func (c *ProjectsNotesCreateCall) Name(name string) *ProjectsNotesCreateCall {
+	c.urlParams_.Set("name", name)
+	return c
+}
+
+// NoteId sets the optional parameter "noteId": The ID to use for this
+// note.
+func (c *ProjectsNotesCreateCall) NoteId(noteId string) *ProjectsNotesCreateCall {
+	c.urlParams_.Set("noteId", noteId)
+	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 *ProjectsNotesCreateCall) Fields(s ...googleapi.Field) *ProjectsNotesCreateCall {
+	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 *ProjectsNotesCreateCall) Context(ctx context.Context) *ProjectsNotesCreateCall {
+	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 *ProjectsNotesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesCreateCall) 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.note)
+	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/{+parent}/notes")
+	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 "containeranalysis.projects.notes.create" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProjectsNotesCreateCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 `Note`.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the project.\nShould be of the form \"providers/{provider_id}\".\n@Deprecated",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "noteId": {
+	//       "description": "The ID to use for this note.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "This field contains the project Id for example:\n\"projects/{project_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+parent}/notes",
+	//   "request": {
+	//     "$ref": "Note"
+	//   },
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.delete":
+
+type ProjectsNotesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes the given `Note` from the system.
+func (r *ProjectsNotesService) Delete(name string) *ProjectsNotesDeleteCall {
+	c := &ProjectsNotesDeleteCall{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 *ProjectsNotesDeleteCall) Fields(s ...googleapi.Field) *ProjectsNotesDeleteCall {
+	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 *ProjectsNotesDeleteCall) Context(ctx context.Context) *ProjectsNotesDeleteCall {
+	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 *ProjectsNotesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesDeleteCall) 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 "containeranalysis.projects.notes.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 *ProjectsNotesDeleteCall) 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 the given `Note` from the system.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "containeranalysis.projects.notes.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note in the form of\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.get":
+
+type ProjectsNotesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Returns the requested `Note`.
+func (r *ProjectsNotesService) Get(name string) *ProjectsNotesGetCall {
+	c := &ProjectsNotesGetCall{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 *ProjectsNotesGetCall) Fields(s ...googleapi.Field) *ProjectsNotesGetCall {
+	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 *ProjectsNotesGetCall) IfNoneMatch(entityTag string) *ProjectsNotesGetCall {
+	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 *ProjectsNotesGetCall) Context(ctx context.Context) *ProjectsNotesGetCall {
+	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 *ProjectsNotesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesGetCall) 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 "containeranalysis.projects.notes.get" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProjectsNotesGetCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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": "Returns the requested `Note`.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.notes.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note in the form of\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.getIamPolicy":
+
+type ProjectsNotesGetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	getiampolicyrequest *GetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a note or an
+// `Occurrence` resource.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a note or occurrence, respectively.
+// Attempting to call this method on a resource without the
+// required
+// permission will result in a `PERMISSION_DENIED` error. Attempting to
+// call
+// this method on a non-existent resource will result in a `NOT_FOUND`
+// error
+// if the user has list permission on the project, or a
+// `PERMISSION_DENIED`
+// error otherwise. The resource takes the following
+// formats:
+// `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences
+// and
+// projects/{PROJECT_ID}/notes/{NOTE_ID} for notes
+func (r *ProjectsNotesService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ProjectsNotesGetIamPolicyCall {
+	c := &ProjectsNotesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.getiampolicyrequest = getiampolicyrequest
+	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 *ProjectsNotesGetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsNotesGetIamPolicyCall {
+	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 *ProjectsNotesGetIamPolicyCall) Context(ctx context.Context) *ProjectsNotesGetIamPolicyCall {
+	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 *ProjectsNotesGetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesGetIamPolicyCall) 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.getiampolicyrequest)
+	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/{+resource}:getIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.notes.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsNotesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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 the access control policy for a note or an `Occurrence` resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\nAttempting to call this method on a resource without the required\npermission will result in a `PERMISSION_DENIED` error. Attempting to call\nthis method on a non-existent resource will result in a `NOT_FOUND` error\nif the user has list permission on the project, or a `PERMISSION_DENIED`\nerror otherwise. The resource takes the following formats:\n`projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and\nprojects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}:getIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.getIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:getIamPolicy",
+	//   "request": {
+	//     "$ref": "GetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.list":
+
+type ProjectsNotesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists all `Notes` for a given project.
+func (r *ProjectsNotesService) List(parent string) *ProjectsNotesListCall {
+	c := &ProjectsNotesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsNotesListCall) Filter(filter string) *ProjectsNotesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// Name sets the optional parameter "name": The name field will contain
+// the project Id for example:
+// "providers/{provider_id}
+// @Deprecated
+func (c *ProjectsNotesListCall) Name(name string) *ProjectsNotesListCall {
+	c.urlParams_.Set("name", name)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of notes to
+// return in the list.
+func (c *ProjectsNotesListCall) PageSize(pageSize int64) *ProjectsNotesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProjectsNotesListCall) PageToken(pageToken string) *ProjectsNotesListCall {
+	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 *ProjectsNotesListCall) Fields(s ...googleapi.Field) *ProjectsNotesListCall {
+	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 *ProjectsNotesListCall) IfNoneMatch(entityTag string) *ProjectsNotesListCall {
+	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 *ProjectsNotesListCall) Context(ctx context.Context) *ProjectsNotesListCall {
+	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 *ProjectsNotesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesListCall) 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/{+parent}/notes")
+	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 "containeranalysis.projects.notes.list" call.
+// Exactly one of *ListNotesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListNotesResponse.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 *ProjectsNotesListCall) Do(opts ...googleapi.CallOption) (*ListNotesResponse, 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 := &ListNotesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists all `Notes` for a given project.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.notes.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name field will contain the project Id for example:\n\"providers/{provider_id}\n@Deprecated",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Number of notes to return in the list.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "This field contains the project Id for example: \"projects/{PROJECT_ID}\".",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+parent}/notes",
+	//   "response": {
+	//     "$ref": "ListNotesResponse"
+	//   },
+	//   "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 *ProjectsNotesListCall) Pages(ctx context.Context, f func(*ListNotesResponse) 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 "containeranalysis.projects.notes.patch":
+
+type ProjectsNotesPatchCall struct {
+	s          *Service
+	name       string
+	note       *Note
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates an existing `Note`.
+func (r *ProjectsNotesService) Patch(name string, note *Note) *ProjectsNotesPatchCall {
+	c := &ProjectsNotesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.note = note
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": The fields to
+// update.
+func (c *ProjectsNotesPatchCall) UpdateMask(updateMask string) *ProjectsNotesPatchCall {
+	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 *ProjectsNotesPatchCall) Fields(s ...googleapi.Field) *ProjectsNotesPatchCall {
+	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 *ProjectsNotesPatchCall) Context(ctx context.Context) *ProjectsNotesPatchCall {
+	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 *ProjectsNotesPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesPatchCall) 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.note)
+	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("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 "containeranalysis.projects.notes.patch" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProjectsNotesPatchCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 an existing `Note`.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "containeranalysis.projects.notes.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note.\nShould be of the form \"projects/{provider_id}/notes/{note_id}\".",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "The fields to update.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "request": {
+	//     "$ref": "Note"
+	//   },
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.setIamPolicy":
+
+type ProjectsNotesSetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	setiampolicyrequest *SetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// SetIamPolicy: Sets the access control policy on the specified `Note`
+// or `Occurrence`.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a `Note` or an `Occurrence`, respectively.
+// Attempting to call this method without these permissions will result
+// in a `
+// `PERMISSION_DENIED` error.
+// Attempting to call this method on a non-existent resource will result
+// in a
+// `NOT_FOUND` error if the user has `containeranalysis.notes.list`
+// permission
+// on a `Note` or `containeranalysis.occurrences.list` on an
+// `Occurrence`, or
+// a `PERMISSION_DENIED` error otherwise. The resource takes the
+// following
+// formats: `projects/{projectid}/occurrences/{occurrenceid}` for
+// occurrences
+// and projects/{projectid}/notes/{noteid} for notes
+func (r *ProjectsNotesService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ProjectsNotesSetIamPolicyCall {
+	c := &ProjectsNotesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.setiampolicyrequest = setiampolicyrequest
+	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 *ProjectsNotesSetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsNotesSetIamPolicyCall {
+	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 *ProjectsNotesSetIamPolicyCall) Context(ctx context.Context) *ProjectsNotesSetIamPolicyCall {
+	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 *ProjectsNotesSetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesSetIamPolicyCall) 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.setiampolicyrequest)
+	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/{+resource}:setIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.notes.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsNotesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Sets the access control policy on the specified `Note` or `Occurrence`.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na `Note` or an `Occurrence`, respectively.\nAttempting to call this method without these permissions will result in a `\n`PERMISSION_DENIED` error.\nAttempting to call this method on a non-existent resource will result in a\n`NOT_FOUND` error if the user has `containeranalysis.notes.list` permission\non a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or\na `PERMISSION_DENIED` error otherwise. The resource takes the following\nformats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences\nand projects/{projectid}/notes/{noteid} for notes",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}:setIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.setIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:setIamPolicy",
+	//   "request": {
+	//     "$ref": "SetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.testIamPermissions":
+
+type ProjectsNotesTestIamPermissionsCall struct {
+	s                         *Service
+	resource                  string
+	testiampermissionsrequest *TestIamPermissionsRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// TestIamPermissions: Returns the permissions that a caller has on the
+// specified note or
+// occurrence resource. Requires list permission on the project (for
+// example,
+// "storage.objects.list" on the containing bucket for testing
+// permission of
+// an object). Attempting to call this method on a non-existent resource
+// will
+// result in a `NOT_FOUND` error if the user has list permission on
+// the
+// project, or a `PERMISSION_DENIED` error otherwise. The resource takes
+// the
+// following formats:
+// `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for
+// `Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`
+func (r *ProjectsNotesService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ProjectsNotesTestIamPermissionsCall {
+	c := &ProjectsNotesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.testiampermissionsrequest = testiampermissionsrequest
+	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 *ProjectsNotesTestIamPermissionsCall) Fields(s ...googleapi.Field) *ProjectsNotesTestIamPermissionsCall {
+	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 *ProjectsNotesTestIamPermissionsCall) Context(ctx context.Context) *ProjectsNotesTestIamPermissionsCall {
+	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 *ProjectsNotesTestIamPermissionsCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesTestIamPermissionsCall) 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.testiampermissionsrequest)
+	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/{+resource}:testIamPermissions")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.notes.testIamPermissions" call.
+// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *TestIamPermissionsResponse.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 *ProjectsNotesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, 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 := &TestIamPermissionsResponse{
+		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": "Returns the permissions that a caller has on the specified note or\noccurrence resource. Requires list permission on the project (for example,\n\"storage.objects.list\" on the containing bucket for testing permission of\nan object). Attempting to call this method on a non-existent resource will\nresult in a `NOT_FOUND` error if the user has list permission on the\nproject, or a `PERMISSION_DENIED` error otherwise. The resource takes the\nfollowing formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for\n`Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}:testIamPermissions",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.testIamPermissions",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:testIamPermissions",
+	//   "request": {
+	//     "$ref": "TestIamPermissionsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "TestIamPermissionsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.occurrences.list":
+
+type ProjectsNotesOccurrencesListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists `Occurrences` referencing the specified `Note`. Use this
+// method to
+// get all occurrences referencing your `Note` across all your
+// customer
+// projects.
+func (r *ProjectsNotesOccurrencesService) List(name string) *ProjectsNotesOccurrencesListCall {
+	c := &ProjectsNotesOccurrencesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsNotesOccurrencesListCall) Filter(filter string) *ProjectsNotesOccurrencesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of notes to
+// return in the list.
+func (c *ProjectsNotesOccurrencesListCall) PageSize(pageSize int64) *ProjectsNotesOccurrencesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProjectsNotesOccurrencesListCall) PageToken(pageToken string) *ProjectsNotesOccurrencesListCall {
+	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 *ProjectsNotesOccurrencesListCall) Fields(s ...googleapi.Field) *ProjectsNotesOccurrencesListCall {
+	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 *ProjectsNotesOccurrencesListCall) IfNoneMatch(entityTag string) *ProjectsNotesOccurrencesListCall {
+	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 *ProjectsNotesOccurrencesListCall) Context(ctx context.Context) *ProjectsNotesOccurrencesListCall {
+	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 *ProjectsNotesOccurrencesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesOccurrencesListCall) 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}/occurrences")
+	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 "containeranalysis.projects.notes.occurrences.list" call.
+// Exactly one of *ListNoteOccurrencesResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *ListNoteOccurrencesResponse.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 *ProjectsNotesOccurrencesListCall) Do(opts ...googleapi.CallOption) (*ListNoteOccurrencesResponse, 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 := &ListNoteOccurrencesResponse{
+		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 `Occurrences` referencing the specified `Note`. Use this method to\nget all occurrences referencing your `Note` across all your customer\nprojects.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/notes/{notesId}/occurrences",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.notes.occurrences.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name field will contain the note name for example:\n  \"provider/{provider_id}/notes/{note_id}\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Number of notes to return in the list.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}/occurrences",
+	//   "response": {
+	//     "$ref": "ListNoteOccurrencesResponse"
+	//   },
+	//   "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 *ProjectsNotesOccurrencesListCall) Pages(ctx context.Context, f func(*ListNoteOccurrencesResponse) 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 "containeranalysis.projects.occurrences.create":
+
+type ProjectsOccurrencesCreateCall struct {
+	s          *Service
+	parent     string
+	occurrence *Occurrence
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates a new `Occurrence`. Use this method to create
+// `Occurrences`
+// for a resource.
+func (r *ProjectsOccurrencesService) Create(parent string, occurrence *Occurrence) *ProjectsOccurrencesCreateCall {
+	c := &ProjectsOccurrencesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.occurrence = occurrence
+	return c
+}
+
+// Name sets the optional parameter "name": The name of the project.
+// Should be of the form "projects/{project_id}".
+// @Deprecated
+func (c *ProjectsOccurrencesCreateCall) Name(name string) *ProjectsOccurrencesCreateCall {
+	c.urlParams_.Set("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 *ProjectsOccurrencesCreateCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesCreateCall {
+	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 *ProjectsOccurrencesCreateCall) Context(ctx context.Context) *ProjectsOccurrencesCreateCall {
+	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 *ProjectsOccurrencesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesCreateCall) 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.occurrence)
+	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/{+parent}/occurrences")
+	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 "containeranalysis.projects.occurrences.create" call.
+// Exactly one of *Occurrence or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Occurrence.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 *ProjectsOccurrencesCreateCall) Do(opts ...googleapi.CallOption) (*Occurrence, 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 := &Occurrence{
+		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 `Occurrence`. Use this method to create `Occurrences`\nfor a resource.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the project.  Should be of the form \"projects/{project_id}\".\n@Deprecated",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "This field contains the project Id for example: \"projects/{project_id}\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+parent}/occurrences",
+	//   "request": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "response": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.delete":
+
+type ProjectsOccurrencesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes the given `Occurrence` from the system. Use this
+// when
+// an `Occurrence` is no longer applicable for the given resource.
+func (r *ProjectsOccurrencesService) Delete(name string) *ProjectsOccurrencesDeleteCall {
+	c := &ProjectsOccurrencesDeleteCall{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 *ProjectsOccurrencesDeleteCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesDeleteCall {
+	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 *ProjectsOccurrencesDeleteCall) Context(ctx context.Context) *ProjectsOccurrencesDeleteCall {
+	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 *ProjectsOccurrencesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesDeleteCall) 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 "containeranalysis.projects.occurrences.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 *ProjectsOccurrencesDeleteCall) 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 the given `Occurrence` from the system. Use this when\nan `Occurrence` is no longer applicable for the given resource.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "containeranalysis.projects.occurrences.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the occurrence in the form of\n\"projects/{project_id}/occurrences/{OCCURRENCE_ID}\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.get":
+
+type ProjectsOccurrencesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Returns the requested `Occurrence`.
+func (r *ProjectsOccurrencesService) Get(name string) *ProjectsOccurrencesGetCall {
+	c := &ProjectsOccurrencesGetCall{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 *ProjectsOccurrencesGetCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesGetCall {
+	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 *ProjectsOccurrencesGetCall) IfNoneMatch(entityTag string) *ProjectsOccurrencesGetCall {
+	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 *ProjectsOccurrencesGetCall) Context(ctx context.Context) *ProjectsOccurrencesGetCall {
+	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 *ProjectsOccurrencesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesGetCall) 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 "containeranalysis.projects.occurrences.get" call.
+// Exactly one of *Occurrence or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Occurrence.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 *ProjectsOccurrencesGetCall) Do(opts ...googleapi.CallOption) (*Occurrence, 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 := &Occurrence{
+		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": "Returns the requested `Occurrence`.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.occurrences.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the occurrence of the form\n\"projects/{project_id}/occurrences/{OCCURRENCE_ID}\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.getIamPolicy":
+
+type ProjectsOccurrencesGetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	getiampolicyrequest *GetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a note or an
+// `Occurrence` resource.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a note or occurrence, respectively.
+// Attempting to call this method on a resource without the
+// required
+// permission will result in a `PERMISSION_DENIED` error. Attempting to
+// call
+// this method on a non-existent resource will result in a `NOT_FOUND`
+// error
+// if the user has list permission on the project, or a
+// `PERMISSION_DENIED`
+// error otherwise. The resource takes the following
+// formats:
+// `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences
+// and
+// projects/{PROJECT_ID}/notes/{NOTE_ID} for notes
+func (r *ProjectsOccurrencesService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ProjectsOccurrencesGetIamPolicyCall {
+	c := &ProjectsOccurrencesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.getiampolicyrequest = getiampolicyrequest
+	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 *ProjectsOccurrencesGetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesGetIamPolicyCall {
+	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 *ProjectsOccurrencesGetIamPolicyCall) Context(ctx context.Context) *ProjectsOccurrencesGetIamPolicyCall {
+	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 *ProjectsOccurrencesGetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesGetIamPolicyCall) 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.getiampolicyrequest)
+	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/{+resource}:getIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.occurrences.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsOccurrencesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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 the access control policy for a note or an `Occurrence` resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\nAttempting to call this method on a resource without the required\npermission will result in a `PERMISSION_DENIED` error. Attempting to call\nthis method on a non-existent resource will result in a `NOT_FOUND` error\nif the user has list permission on the project, or a `PERMISSION_DENIED`\nerror otherwise. The resource takes the following formats:\n`projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and\nprojects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}:getIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.getIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:getIamPolicy",
+	//   "request": {
+	//     "$ref": "GetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.getNotes":
+
+type ProjectsOccurrencesGetNotesCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetNotes: Gets the `Note` attached to the given `Occurrence`.
+func (r *ProjectsOccurrencesService) GetNotes(name string) *ProjectsOccurrencesGetNotesCall {
+	c := &ProjectsOccurrencesGetNotesCall{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 *ProjectsOccurrencesGetNotesCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesGetNotesCall {
+	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 *ProjectsOccurrencesGetNotesCall) IfNoneMatch(entityTag string) *ProjectsOccurrencesGetNotesCall {
+	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 *ProjectsOccurrencesGetNotesCall) Context(ctx context.Context) *ProjectsOccurrencesGetNotesCall {
+	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 *ProjectsOccurrencesGetNotesCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesGetNotesCall) 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}/notes")
+	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 "containeranalysis.projects.occurrences.getNotes" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProjectsOccurrencesGetNotesCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 the `Note` attached to the given `Occurrence`.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}/notes",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.occurrences.getNotes",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the occurrence in the form\n\"projects/{project_id}/occurrences/{OCCURRENCE_ID}\"",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}/notes",
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.getVulnerabilitySummary":
+
+type ProjectsOccurrencesGetVulnerabilitySummaryCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetVulnerabilitySummary: Gets a summary of the number and severity of
+// occurrences.
+func (r *ProjectsOccurrencesService) GetVulnerabilitySummary(parent string) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	c := &ProjectsOccurrencesGetVulnerabilitySummaryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsOccurrencesGetVulnerabilitySummaryCall) Filter(filter string) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	c.urlParams_.Set("filter", filter)
+	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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) IfNoneMatch(entityTag string) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) Context(ctx context.Context) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesGetVulnerabilitySummaryCall) 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/{+parent}/occurrences:vulnerabilitySummary")
+	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 "containeranalysis.projects.occurrences.getVulnerabilitySummary" call.
+// Exactly one of *GetVulnzOccurrencesSummaryResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *GetVulnzOccurrencesSummaryResponse.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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) Do(opts ...googleapi.CallOption) (*GetVulnzOccurrencesSummaryResponse, 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 := &GetVulnzOccurrencesSummaryResponse{
+		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 summary of the number and severity of occurrences.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences:vulnerabilitySummary",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.occurrences.getVulnerabilitySummary",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "This contains the project Id for example: projects/{project_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+parent}/occurrences:vulnerabilitySummary",
+	//   "response": {
+	//     "$ref": "GetVulnzOccurrencesSummaryResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.list":
+
+type ProjectsOccurrencesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists active `Occurrences` for a given project matching the
+// filters.
+func (r *ProjectsOccurrencesService) List(parent string) *ProjectsOccurrencesListCall {
+	c := &ProjectsOccurrencesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsOccurrencesListCall) Filter(filter string) *ProjectsOccurrencesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// Kind sets the optional parameter "kind": The kind of occurrences to
+// filter on.
+//
+// Possible values:
+//   "KIND_UNSPECIFIED"
+//   "PACKAGE_VULNERABILITY"
+//   "BUILD_DETAILS"
+//   "IMAGE_BASIS"
+//   "PACKAGE_MANAGER"
+//   "DEPLOYABLE"
+//   "DISCOVERY"
+//   "ATTESTATION_AUTHORITY"
+func (c *ProjectsOccurrencesListCall) Kind(kind string) *ProjectsOccurrencesListCall {
+	c.urlParams_.Set("kind", kind)
+	return c
+}
+
+// Name sets the optional parameter "name": The name field contains the
+// project Id. For example:
+// "projects/{project_id}
+// @Deprecated
+func (c *ProjectsOccurrencesListCall) Name(name string) *ProjectsOccurrencesListCall {
+	c.urlParams_.Set("name", name)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of
+// occurrences to return in the list.
+func (c *ProjectsOccurrencesListCall) PageSize(pageSize int64) *ProjectsOccurrencesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProjectsOccurrencesListCall) PageToken(pageToken string) *ProjectsOccurrencesListCall {
+	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 *ProjectsOccurrencesListCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesListCall {
+	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 *ProjectsOccurrencesListCall) IfNoneMatch(entityTag string) *ProjectsOccurrencesListCall {
+	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 *ProjectsOccurrencesListCall) Context(ctx context.Context) *ProjectsOccurrencesListCall {
+	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 *ProjectsOccurrencesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesListCall) 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/{+parent}/occurrences")
+	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 "containeranalysis.projects.occurrences.list" call.
+// Exactly one of *ListOccurrencesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOccurrencesResponse.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 *ProjectsOccurrencesListCall) Do(opts ...googleapi.CallOption) (*ListOccurrencesResponse, 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 := &ListOccurrencesResponse{
+		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 active `Occurrences` for a given project matching the filters.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.occurrences.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "kind": {
+	//       "description": "The kind of occurrences to filter on.",
+	//       "enum": [
+	//         "KIND_UNSPECIFIED",
+	//         "PACKAGE_VULNERABILITY",
+	//         "BUILD_DETAILS",
+	//         "IMAGE_BASIS",
+	//         "PACKAGE_MANAGER",
+	//         "DEPLOYABLE",
+	//         "DISCOVERY",
+	//         "ATTESTATION_AUTHORITY"
+	//       ],
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name field contains the project Id. For example:\n\"projects/{project_id}\n@Deprecated",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Number of occurrences to return in the list.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "This contains the project Id for example: projects/{project_id}.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+parent}/occurrences",
+	//   "response": {
+	//     "$ref": "ListOccurrencesResponse"
+	//   },
+	//   "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 *ProjectsOccurrencesListCall) Pages(ctx context.Context, f func(*ListOccurrencesResponse) 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 "containeranalysis.projects.occurrences.patch":
+
+type ProjectsOccurrencesPatchCall struct {
+	s          *Service
+	name       string
+	occurrence *Occurrence
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates an existing occurrence.
+func (r *ProjectsOccurrencesService) Patch(name string, occurrence *Occurrence) *ProjectsOccurrencesPatchCall {
+	c := &ProjectsOccurrencesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.occurrence = occurrence
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": The fields to
+// update.
+func (c *ProjectsOccurrencesPatchCall) UpdateMask(updateMask string) *ProjectsOccurrencesPatchCall {
+	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 *ProjectsOccurrencesPatchCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesPatchCall {
+	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 *ProjectsOccurrencesPatchCall) Context(ctx context.Context) *ProjectsOccurrencesPatchCall {
+	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 *ProjectsOccurrencesPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesPatchCall) 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.occurrence)
+	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("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 "containeranalysis.projects.occurrences.patch" call.
+// Exactly one of *Occurrence or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Occurrence.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 *ProjectsOccurrencesPatchCall) Do(opts ...googleapi.CallOption) (*Occurrence, 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 := &Occurrence{
+		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 an existing occurrence.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "containeranalysis.projects.occurrences.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the occurrence.\nShould be of the form \"projects/{project_id}/occurrences/{OCCURRENCE_ID}\".",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "The fields to update.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "request": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "response": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.setIamPolicy":
+
+type ProjectsOccurrencesSetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	setiampolicyrequest *SetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// SetIamPolicy: Sets the access control policy on the specified `Note`
+// or `Occurrence`.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a `Note` or an `Occurrence`, respectively.
+// Attempting to call this method without these permissions will result
+// in a `
+// `PERMISSION_DENIED` error.
+// Attempting to call this method on a non-existent resource will result
+// in a
+// `NOT_FOUND` error if the user has `containeranalysis.notes.list`
+// permission
+// on a `Note` or `containeranalysis.occurrences.list` on an
+// `Occurrence`, or
+// a `PERMISSION_DENIED` error otherwise. The resource takes the
+// following
+// formats: `projects/{projectid}/occurrences/{occurrenceid}` for
+// occurrences
+// and projects/{projectid}/notes/{noteid} for notes
+func (r *ProjectsOccurrencesService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ProjectsOccurrencesSetIamPolicyCall {
+	c := &ProjectsOccurrencesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.setiampolicyrequest = setiampolicyrequest
+	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 *ProjectsOccurrencesSetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesSetIamPolicyCall {
+	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 *ProjectsOccurrencesSetIamPolicyCall) Context(ctx context.Context) *ProjectsOccurrencesSetIamPolicyCall {
+	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 *ProjectsOccurrencesSetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesSetIamPolicyCall) 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.setiampolicyrequest)
+	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/{+resource}:setIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.occurrences.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsOccurrencesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Sets the access control policy on the specified `Note` or `Occurrence`.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na `Note` or an `Occurrence`, respectively.\nAttempting to call this method without these permissions will result in a `\n`PERMISSION_DENIED` error.\nAttempting to call this method on a non-existent resource will result in a\n`NOT_FOUND` error if the user has `containeranalysis.notes.list` permission\non a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or\na `PERMISSION_DENIED` error otherwise. The resource takes the following\nformats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences\nand projects/{projectid}/notes/{noteid} for notes",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}:setIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.setIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:setIamPolicy",
+	//   "request": {
+	//     "$ref": "SetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.testIamPermissions":
+
+type ProjectsOccurrencesTestIamPermissionsCall struct {
+	s                         *Service
+	resource                  string
+	testiampermissionsrequest *TestIamPermissionsRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// TestIamPermissions: Returns the permissions that a caller has on the
+// specified note or
+// occurrence resource. Requires list permission on the project (for
+// example,
+// "storage.objects.list" on the containing bucket for testing
+// permission of
+// an object). Attempting to call this method on a non-existent resource
+// will
+// result in a `NOT_FOUND` error if the user has list permission on
+// the
+// project, or a `PERMISSION_DENIED` error otherwise. The resource takes
+// the
+// following formats:
+// `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for
+// `Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`
+func (r *ProjectsOccurrencesService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ProjectsOccurrencesTestIamPermissionsCall {
+	c := &ProjectsOccurrencesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.testiampermissionsrequest = testiampermissionsrequest
+	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 *ProjectsOccurrencesTestIamPermissionsCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesTestIamPermissionsCall {
+	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 *ProjectsOccurrencesTestIamPermissionsCall) Context(ctx context.Context) *ProjectsOccurrencesTestIamPermissionsCall {
+	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 *ProjectsOccurrencesTestIamPermissionsCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesTestIamPermissionsCall) 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.testiampermissionsrequest)
+	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/{+resource}:testIamPermissions")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.occurrences.testIamPermissions" call.
+// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *TestIamPermissionsResponse.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 *ProjectsOccurrencesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, 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 := &TestIamPermissionsResponse{
+		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": "Returns the permissions that a caller has on the specified note or\noccurrence resource. Requires list permission on the project (for example,\n\"storage.objects.list\" on the containing bucket for testing permission of\nan object). Attempting to call this method on a non-existent resource will\nresult in a `NOT_FOUND` error if the user has list permission on the\nproject, or a `PERMISSION_DENIED` error otherwise. The resource takes the\nfollowing formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for\n`Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/occurrences/{occurrencesId}:testIamPermissions",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.testIamPermissions",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:testIamPermissions",
+	//   "request": {
+	//     "$ref": "TestIamPermissionsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "TestIamPermissionsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.operations.create":
+
+type ProjectsOperationsCreateCall struct {
+	s                      *Service
+	parent                 string
+	createoperationrequest *CreateOperationRequest
+	urlParams_             gensupport.URLParams
+	ctx_                   context.Context
+	header_                http.Header
+}
+
+// Create: Creates a new `Operation`.
+func (r *ProjectsOperationsService) Create(parent string, createoperationrequest *CreateOperationRequest) *ProjectsOperationsCreateCall {
+	c := &ProjectsOperationsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.createoperationrequest = createoperationrequest
+	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 *ProjectsOperationsCreateCall) Fields(s ...googleapi.Field) *ProjectsOperationsCreateCall {
+	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 *ProjectsOperationsCreateCall) Context(ctx context.Context) *ProjectsOperationsCreateCall {
+	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 *ProjectsOperationsCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOperationsCreateCall) 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.createoperationrequest)
+	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/{+parent}/operations")
+	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 "containeranalysis.projects.operations.create" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.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 *ProjectsOperationsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, 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 := &Operation{
+		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 `Operation`.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/operations",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.operations.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The project Id that this operation should be created under.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+parent}/operations",
+	//   "request": {
+	//     "$ref": "CreateOperationRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.operations.patch":
+
+type ProjectsOperationsPatchCall struct {
+	s                      *Service
+	name                   string
+	updateoperationrequest *UpdateOperationRequest
+	urlParams_             gensupport.URLParams
+	ctx_                   context.Context
+	header_                http.Header
+}
+
+// Patch: Updates an existing operation returns an error if operation
+//  does not exist. The only valid operations are to update mark the
+// done bit
+// change the result.
+func (r *ProjectsOperationsService) Patch(name string, updateoperationrequest *UpdateOperationRequest) *ProjectsOperationsPatchCall {
+	c := &ProjectsOperationsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.updateoperationrequest = updateoperationrequest
+	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 *ProjectsOperationsPatchCall) Fields(s ...googleapi.Field) *ProjectsOperationsPatchCall {
+	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 *ProjectsOperationsPatchCall) Context(ctx context.Context) *ProjectsOperationsPatchCall {
+	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 *ProjectsOperationsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOperationsPatchCall) 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.updateoperationrequest)
+	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("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 "containeranalysis.projects.operations.patch" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.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 *ProjectsOperationsPatchCall) Do(opts ...googleapi.CallOption) (*Operation, 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 := &Operation{
+		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 an existing operation returns an error if operation\n does not exist. The only valid operations are to update mark the done bit\nchange the result.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/operations/{operationsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "containeranalysis.projects.operations.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the Operation.\nShould be of the form \"projects/{provider_id}/operations/{operation_id}\".",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/operations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "request": {
+	//     "$ref": "UpdateOperationRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.scanConfigs.get":
+
+type ProjectsScanConfigsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a specific scan configuration for a project.
+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, "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 "containeranalysis.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 specific scan configuration for a project.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.scanConfigs.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the ScanConfig in the form\nprojects/{project_id}/scanConfigs/{scan_config_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.scanConfigs.list":
+
+type ProjectsScanConfigsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists scan configurations for a project.
+func (r *ProjectsScanConfigsService) List(parent string) *ProjectsScanConfigsListCall {
+	c := &ProjectsScanConfigsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsScanConfigsListCall) Filter(filter string) *ProjectsScanConfigsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The number of items
+// to return.
+func (c *ProjectsScanConfigsListCall) PageSize(pageSize int64) *ProjectsScanConfigsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The page token to
+// use for the next request.
+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, "v1alpha1/{+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 "containeranalysis.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 scan configurations for a project.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/scanConfigs",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.scanConfigs.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The number of items to return.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The page token to use for the next request.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "This containers the project Id i.e.: projects/{project_id}",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+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 "containeranalysis.projects.scanConfigs.patch":
+
+type ProjectsScanConfigsPatchCall struct {
+	s          *Service
+	name       string
+	scanconfig *ScanConfig
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates the scan configuration to a new value.
+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": The fields to
+// update.
+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, "v1alpha1/{+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 "containeranalysis.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 the scan configuration to a new value.",
+	//   "flatPath": "v1alpha1/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "containeranalysis.projects.scanConfigs.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The scan config to update of the form\nprojects/{project_id}/scanConfigs/{scan_config_id}.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "The fields to update.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "request": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "response": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.providers.notes.create":
+
+type ProvidersNotesCreateCall struct {
+	s          *Service
+	name       string
+	note       *Note
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates a new `Note`.
+func (r *ProvidersNotesService) Create(name string, note *Note) *ProvidersNotesCreateCall {
+	c := &ProvidersNotesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.note = note
+	return c
+}
+
+// NoteId sets the optional parameter "noteId": The ID to use for this
+// note.
+func (c *ProvidersNotesCreateCall) NoteId(noteId string) *ProvidersNotesCreateCall {
+	c.urlParams_.Set("noteId", noteId)
+	return c
+}
+
+// Parent sets the optional parameter "parent": This field contains the
+// project Id for example:
+// "projects/{project_id}
+func (c *ProvidersNotesCreateCall) Parent(parent string) *ProvidersNotesCreateCall {
+	c.urlParams_.Set("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 *ProvidersNotesCreateCall) Fields(s ...googleapi.Field) *ProvidersNotesCreateCall {
+	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 *ProvidersNotesCreateCall) Context(ctx context.Context) *ProvidersNotesCreateCall {
+	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 *ProvidersNotesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesCreateCall) 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.note)
+	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}/notes")
+	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 "containeranalysis.providers.notes.create" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProvidersNotesCreateCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 `Note`.",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.providers.notes.create",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the project.\nShould be of the form \"providers/{provider_id}\".\n@Deprecated",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "noteId": {
+	//       "description": "The ID to use for this note.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "This field contains the project Id for example:\n\"projects/{project_id}",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}/notes",
+	//   "request": {
+	//     "$ref": "Note"
+	//   },
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.providers.notes.delete":
+
+type ProvidersNotesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes the given `Note` from the system.
+func (r *ProvidersNotesService) Delete(name string) *ProvidersNotesDeleteCall {
+	c := &ProvidersNotesDeleteCall{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 *ProvidersNotesDeleteCall) Fields(s ...googleapi.Field) *ProvidersNotesDeleteCall {
+	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 *ProvidersNotesDeleteCall) Context(ctx context.Context) *ProvidersNotesDeleteCall {
+	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 *ProvidersNotesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesDeleteCall) 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 "containeranalysis.providers.notes.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 *ProvidersNotesDeleteCall) 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 the given `Note` from the system.",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "containeranalysis.providers.notes.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note in the form of\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.providers.notes.get":
+
+type ProvidersNotesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Returns the requested `Note`.
+func (r *ProvidersNotesService) Get(name string) *ProvidersNotesGetCall {
+	c := &ProvidersNotesGetCall{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 *ProvidersNotesGetCall) Fields(s ...googleapi.Field) *ProvidersNotesGetCall {
+	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 *ProvidersNotesGetCall) IfNoneMatch(entityTag string) *ProvidersNotesGetCall {
+	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 *ProvidersNotesGetCall) Context(ctx context.Context) *ProvidersNotesGetCall {
+	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 *ProvidersNotesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesGetCall) 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 "containeranalysis.providers.notes.get" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProvidersNotesGetCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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": "Returns the requested `Note`.",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.providers.notes.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note in the form of\n\"providers/{provider_id}/notes/{NOTE_ID}\"",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.providers.notes.getIamPolicy":
+
+type ProvidersNotesGetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	getiampolicyrequest *GetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a note or an
+// `Occurrence` resource.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a note or occurrence, respectively.
+// Attempting to call this method on a resource without the
+// required
+// permission will result in a `PERMISSION_DENIED` error. Attempting to
+// call
+// this method on a non-existent resource will result in a `NOT_FOUND`
+// error
+// if the user has list permission on the project, or a
+// `PERMISSION_DENIED`
+// error otherwise. The resource takes the following
+// formats:
+// `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences
+// and
+// projects/{PROJECT_ID}/notes/{NOTE_ID} for notes
+func (r *ProvidersNotesService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ProvidersNotesGetIamPolicyCall {
+	c := &ProvidersNotesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.getiampolicyrequest = getiampolicyrequest
+	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 *ProvidersNotesGetIamPolicyCall) Fields(s ...googleapi.Field) *ProvidersNotesGetIamPolicyCall {
+	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 *ProvidersNotesGetIamPolicyCall) Context(ctx context.Context) *ProvidersNotesGetIamPolicyCall {
+	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 *ProvidersNotesGetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesGetIamPolicyCall) 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.getiampolicyrequest)
+	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/{+resource}:getIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.providers.notes.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProvidersNotesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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 the access control policy for a note or an `Occurrence` resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\nAttempting to call this method on a resource without the required\npermission will result in a `PERMISSION_DENIED` error. Attempting to call\nthis method on a non-existent resource will result in a `NOT_FOUND` error\nif the user has list permission on the project, or a `PERMISSION_DENIED`\nerror otherwise. The resource takes the following formats:\n`projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and\nprojects/{PROJECT_ID}/notes/{NOTE_ID} for notes",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}:getIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.providers.notes.getIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:getIamPolicy",
+	//   "request": {
+	//     "$ref": "GetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.providers.notes.list":
+
+type ProvidersNotesListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists all `Notes` for a given project.
+func (r *ProvidersNotesService) List(name string) *ProvidersNotesListCall {
+	c := &ProvidersNotesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProvidersNotesListCall) Filter(filter string) *ProvidersNotesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of notes to
+// return in the list.
+func (c *ProvidersNotesListCall) PageSize(pageSize int64) *ProvidersNotesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProvidersNotesListCall) PageToken(pageToken string) *ProvidersNotesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Parent sets the optional parameter "parent": This field contains the
+// project Id for example: "projects/{PROJECT_ID}".
+func (c *ProvidersNotesListCall) Parent(parent string) *ProvidersNotesListCall {
+	c.urlParams_.Set("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 *ProvidersNotesListCall) Fields(s ...googleapi.Field) *ProvidersNotesListCall {
+	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 *ProvidersNotesListCall) IfNoneMatch(entityTag string) *ProvidersNotesListCall {
+	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 *ProvidersNotesListCall) Context(ctx context.Context) *ProvidersNotesListCall {
+	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 *ProvidersNotesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesListCall) 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}/notes")
+	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 "containeranalysis.providers.notes.list" call.
+// Exactly one of *ListNotesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListNotesResponse.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 *ProvidersNotesListCall) Do(opts ...googleapi.CallOption) (*ListNotesResponse, 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 := &ListNotesResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Lists all `Notes` for a given project.",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.providers.notes.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name field will contain the project Id for example:\n\"providers/{provider_id}\n@Deprecated",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Number of notes to return in the list.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "This field contains the project Id for example: \"projects/{PROJECT_ID}\".",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}/notes",
+	//   "response": {
+	//     "$ref": "ListNotesResponse"
+	//   },
+	//   "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 *ProvidersNotesListCall) Pages(ctx context.Context, f func(*ListNotesResponse) 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 "containeranalysis.providers.notes.patch":
+
+type ProvidersNotesPatchCall struct {
+	s          *Service
+	name       string
+	note       *Note
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates an existing `Note`.
+func (r *ProvidersNotesService) Patch(name string, note *Note) *ProvidersNotesPatchCall {
+	c := &ProvidersNotesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.note = note
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": The fields to
+// update.
+func (c *ProvidersNotesPatchCall) UpdateMask(updateMask string) *ProvidersNotesPatchCall {
+	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 *ProvidersNotesPatchCall) Fields(s ...googleapi.Field) *ProvidersNotesPatchCall {
+	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 *ProvidersNotesPatchCall) Context(ctx context.Context) *ProvidersNotesPatchCall {
+	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 *ProvidersNotesPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesPatchCall) 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.note)
+	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("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 "containeranalysis.providers.notes.patch" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProvidersNotesPatchCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 an existing `Note`.",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "containeranalysis.providers.notes.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note.\nShould be of the form \"projects/{provider_id}/notes/{note_id}\".",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "The fields to update.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}",
+	//   "request": {
+	//     "$ref": "Note"
+	//   },
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.providers.notes.setIamPolicy":
+
+type ProvidersNotesSetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	setiampolicyrequest *SetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// SetIamPolicy: Sets the access control policy on the specified `Note`
+// or `Occurrence`.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a `Note` or an `Occurrence`, respectively.
+// Attempting to call this method without these permissions will result
+// in a `
+// `PERMISSION_DENIED` error.
+// Attempting to call this method on a non-existent resource will result
+// in a
+// `NOT_FOUND` error if the user has `containeranalysis.notes.list`
+// permission
+// on a `Note` or `containeranalysis.occurrences.list` on an
+// `Occurrence`, or
+// a `PERMISSION_DENIED` error otherwise. The resource takes the
+// following
+// formats: `projects/{projectid}/occurrences/{occurrenceid}` for
+// occurrences
+// and projects/{projectid}/notes/{noteid} for notes
+func (r *ProvidersNotesService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ProvidersNotesSetIamPolicyCall {
+	c := &ProvidersNotesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.setiampolicyrequest = setiampolicyrequest
+	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 *ProvidersNotesSetIamPolicyCall) Fields(s ...googleapi.Field) *ProvidersNotesSetIamPolicyCall {
+	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 *ProvidersNotesSetIamPolicyCall) Context(ctx context.Context) *ProvidersNotesSetIamPolicyCall {
+	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 *ProvidersNotesSetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesSetIamPolicyCall) 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.setiampolicyrequest)
+	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/{+resource}:setIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.providers.notes.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProvidersNotesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Sets the access control policy on the specified `Note` or `Occurrence`.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na `Note` or an `Occurrence`, respectively.\nAttempting to call this method without these permissions will result in a `\n`PERMISSION_DENIED` error.\nAttempting to call this method on a non-existent resource will result in a\n`NOT_FOUND` error if the user has `containeranalysis.notes.list` permission\non a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or\na `PERMISSION_DENIED` error otherwise. The resource takes the following\nformats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences\nand projects/{projectid}/notes/{noteid} for notes",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}:setIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.providers.notes.setIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:setIamPolicy",
+	//   "request": {
+	//     "$ref": "SetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.providers.notes.testIamPermissions":
+
+type ProvidersNotesTestIamPermissionsCall struct {
+	s                         *Service
+	resource                  string
+	testiampermissionsrequest *TestIamPermissionsRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// TestIamPermissions: Returns the permissions that a caller has on the
+// specified note or
+// occurrence resource. Requires list permission on the project (for
+// example,
+// "storage.objects.list" on the containing bucket for testing
+// permission of
+// an object). Attempting to call this method on a non-existent resource
+// will
+// result in a `NOT_FOUND` error if the user has list permission on
+// the
+// project, or a `PERMISSION_DENIED` error otherwise. The resource takes
+// the
+// following formats:
+// `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for
+// `Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`
+func (r *ProvidersNotesService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ProvidersNotesTestIamPermissionsCall {
+	c := &ProvidersNotesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.testiampermissionsrequest = testiampermissionsrequest
+	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 *ProvidersNotesTestIamPermissionsCall) Fields(s ...googleapi.Field) *ProvidersNotesTestIamPermissionsCall {
+	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 *ProvidersNotesTestIamPermissionsCall) Context(ctx context.Context) *ProvidersNotesTestIamPermissionsCall {
+	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 *ProvidersNotesTestIamPermissionsCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesTestIamPermissionsCall) 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.testiampermissionsrequest)
+	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/{+resource}:testIamPermissions")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.providers.notes.testIamPermissions" call.
+// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *TestIamPermissionsResponse.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 *ProvidersNotesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, 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 := &TestIamPermissionsResponse{
+		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": "Returns the permissions that a caller has on the specified note or\noccurrence resource. Requires list permission on the project (for example,\n\"storage.objects.list\" on the containing bucket for testing permission of\nan object). Attempting to call this method on a non-existent resource will\nresult in a `NOT_FOUND` error if the user has list permission on the\nproject, or a `PERMISSION_DENIED` error otherwise. The resource takes the\nfollowing formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for\n`Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes`",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}:testIamPermissions",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.providers.notes.testIamPermissions",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+resource}:testIamPermissions",
+	//   "request": {
+	//     "$ref": "TestIamPermissionsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "TestIamPermissionsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.providers.notes.occurrences.list":
+
+type ProvidersNotesOccurrencesListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists `Occurrences` referencing the specified `Note`. Use this
+// method to
+// get all occurrences referencing your `Note` across all your
+// customer
+// projects.
+func (r *ProvidersNotesOccurrencesService) List(name string) *ProvidersNotesOccurrencesListCall {
+	c := &ProvidersNotesOccurrencesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProvidersNotesOccurrencesListCall) Filter(filter string) *ProvidersNotesOccurrencesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of notes to
+// return in the list.
+func (c *ProvidersNotesOccurrencesListCall) PageSize(pageSize int64) *ProvidersNotesOccurrencesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProvidersNotesOccurrencesListCall) PageToken(pageToken string) *ProvidersNotesOccurrencesListCall {
+	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 *ProvidersNotesOccurrencesListCall) Fields(s ...googleapi.Field) *ProvidersNotesOccurrencesListCall {
+	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 *ProvidersNotesOccurrencesListCall) IfNoneMatch(entityTag string) *ProvidersNotesOccurrencesListCall {
+	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 *ProvidersNotesOccurrencesListCall) Context(ctx context.Context) *ProvidersNotesOccurrencesListCall {
+	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 *ProvidersNotesOccurrencesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProvidersNotesOccurrencesListCall) 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}/occurrences")
+	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 "containeranalysis.providers.notes.occurrences.list" call.
+// Exactly one of *ListNoteOccurrencesResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *ListNoteOccurrencesResponse.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 *ProvidersNotesOccurrencesListCall) Do(opts ...googleapi.CallOption) (*ListNoteOccurrencesResponse, 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 := &ListNoteOccurrencesResponse{
+		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 `Occurrences` referencing the specified `Note`. Use this method to\nget all occurrences referencing your `Note` across all your customer\nprojects.",
+	//   "flatPath": "v1alpha1/providers/{providersId}/notes/{notesId}/occurrences",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.providers.notes.occurrences.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name field will contain the note name for example:\n  \"provider/{provider_id}/notes/{note_id}\"",
+	//       "location": "path",
+	//       "pattern": "^providers/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Number of notes to return in the list.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha1/{+name}/occurrences",
+	//   "response": {
+	//     "$ref": "ListNoteOccurrencesResponse"
+	//   },
+	//   "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 *ProvidersNotesOccurrencesListCall) Pages(ctx context.Context, f func(*ListNoteOccurrencesResponse) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
diff --git a/containeranalysis/v1beta1/containeranalysis-api.json b/containeranalysis/v1beta1/containeranalysis-api.json
new file mode 100644
index 0000000..26657f3
--- /dev/null
+++ b/containeranalysis/v1beta1/containeranalysis-api.json
@@ -0,0 +1,2613 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://containeranalysis.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Container Analysis",
+  "description": "An implementation of the Grafeas API, which stores, and enables querying and retrieval of critical metadata about all of your software artifacts.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/container-analysis/api/reference/rest/",
+  "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": "containeranalysis:v1beta1",
+  "kind": "discovery#restDescription",
+  "name": "containeranalysis",
+  "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": {
+        "notes": {
+          "methods": {
+            "batchCreate": {
+              "description": "Creates new notes in batch.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes:batchCreate",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.batchCreate",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "The name of the project in the form of `projects/[PROJECT_ID]`, under which\nthe notes are to be created.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/notes:batchCreate",
+              "request": {
+                "$ref": "BatchCreateNotesRequest"
+              },
+              "response": {
+                "$ref": "BatchCreateNotesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "create": {
+              "description": "Creates a new note.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "noteId": {
+                  "description": "The ID to use for this note.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The name of the project in the form of `projects/[PROJECT_ID]`, under which\nthe note is to be created.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/notes",
+              "request": {
+                "$ref": "Note"
+              },
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "delete": {
+              "description": "Deletes the specified note.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+              "httpMethod": "DELETE",
+              "id": "containeranalysis.projects.notes.delete",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "get": {
+              "description": "Gets the specified note.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.notes.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getIamPolicy": {
+              "description": "Gets the access control policy for a note or an occurrence resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:getIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.getIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+resource}:getIamPolicy",
+              "request": {
+                "$ref": "GetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists notes for the specified project.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.notes.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Number of notes to return in the list. Must be positive. Max allowed page\nsize is 1000. If not specified, page size defaults to 20.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token to provide to skip to a particular spot in the list.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The name of the project to list notes for in the form of\n`projects/[PROJECT_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/notes",
+              "response": {
+                "$ref": "ListNotesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "patch": {
+              "description": "Updates the specified note.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+              "httpMethod": "PATCH",
+              "id": "containeranalysis.projects.notes.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the note in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "The fields to update.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "request": {
+                "$ref": "Note"
+              },
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "setIamPolicy": {
+              "description": "Sets the access control policy on the specified note or occurrence.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or an occurrence, respectively.\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:setIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.setIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+resource}:setIamPolicy",
+              "request": {
+                "$ref": "SetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "testIamPermissions": {
+              "description": "Returns the permissions that a caller has on the specified note or\noccurrence. Requires list permission on the project (for example,\n`containeranalysis.notes.list`).\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+              "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:testIamPermissions",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.notes.testIamPermissions",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/notes/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+resource}:testIamPermissions",
+              "request": {
+                "$ref": "TestIamPermissionsRequest"
+              },
+              "response": {
+                "$ref": "TestIamPermissionsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          },
+          "resources": {
+            "occurrences": {
+              "methods": {
+                "list": {
+                  "description": "Lists occurrences referencing the specified note. Provider projects can use\nthis method to get all occurrences across consumer projects referencing the\nspecified note.",
+                  "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}/occurrences",
+                  "httpMethod": "GET",
+                  "id": "containeranalysis.projects.notes.occurrences.list",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "filter": {
+                      "description": "The filter expression.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "name": {
+                      "description": "The name of the note to list occurrences for in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/notes/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "pageSize": {
+                      "description": "Number of occurrences to return in the list.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "Token to provide to skip to a particular spot in the list.",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+name}/occurrences",
+                  "response": {
+                    "$ref": "ListNoteOccurrencesResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "occurrences": {
+          "methods": {
+            "batchCreate": {
+              "description": "Creates new occurrences in batch.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences:batchCreate",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.batchCreate",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "The name of the project in the form of `projects/[PROJECT_ID]`, under which\nthe occurrences are to be created.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/occurrences:batchCreate",
+              "request": {
+                "$ref": "BatchCreateOccurrencesRequest"
+              },
+              "response": {
+                "$ref": "BatchCreateOccurrencesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "create": {
+              "description": "Creates a new occurrence.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "The name of the project in the form of `projects/[PROJECT_ID]`, under which\nthe occurrence is to be created.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/occurrences",
+              "request": {
+                "$ref": "Occurrence"
+              },
+              "response": {
+                "$ref": "Occurrence"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "delete": {
+              "description": "Deletes the specified occurrence. For example, use this method to delete an\noccurrence when the occurrence is no longer applicable for the given\nresource.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+              "httpMethod": "DELETE",
+              "id": "containeranalysis.projects.occurrences.delete",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "Empty"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "get": {
+              "description": "Gets the specified occurrence.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.occurrences.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "Occurrence"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getIamPolicy": {
+              "description": "Gets the access control policy for a note or an occurrence resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:getIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.getIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+resource}:getIamPolicy",
+              "request": {
+                "$ref": "GetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getNotes": {
+              "description": "Gets the note attached to the specified occurrence. Consumer projects can\nuse this method to get a note that belongs to a provider project.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}/notes",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.occurrences.getNotes",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}/notes",
+              "response": {
+                "$ref": "Note"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "getVulnerabilitySummary": {
+              "description": "Gets a summary of the number and severity of occurrences.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences:vulnerabilitySummary",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.occurrences.getVulnerabilitySummary",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The name of the project to get a vulnerability summary for in the form of\n`projects/[PROJECT_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/occurrences:vulnerabilitySummary",
+              "response": {
+                "$ref": "VulnerabilityOccurrencesSummary"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists occurrences for the specified project.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.occurrences.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "Number of occurrences to return in the list. Must be positive. Max allowed\npage size is 1000. If not specified, page size defaults to 20.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token to provide to skip to a particular spot in the list.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The name of the project to list occurrences for in the form of\n`projects/[PROJECT_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/occurrences",
+              "response": {
+                "$ref": "ListOccurrencesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "patch": {
+              "description": "Updates the specified occurrence.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+              "httpMethod": "PATCH",
+              "id": "containeranalysis.projects.occurrences.patch",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                },
+                "updateMask": {
+                  "description": "The fields to update.",
+                  "format": "google-fieldmask",
+                  "location": "query",
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "request": {
+                "$ref": "Occurrence"
+              },
+              "response": {
+                "$ref": "Occurrence"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "setIamPolicy": {
+              "description": "Sets the access control policy on the specified note or occurrence.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or an occurrence, respectively.\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:setIamPolicy",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.setIamPolicy",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+resource}:setIamPolicy",
+              "request": {
+                "$ref": "SetIamPolicyRequest"
+              },
+              "response": {
+                "$ref": "Policy"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "testIamPermissions": {
+              "description": "Returns the permissions that a caller has on the specified note or\noccurrence. Requires list permission on the project (for example,\n`containeranalysis.notes.list`).\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+              "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:testIamPermissions",
+              "httpMethod": "POST",
+              "id": "containeranalysis.projects.occurrences.testIamPermissions",
+              "parameterOrder": [
+                "resource"
+              ],
+              "parameters": {
+                "resource": {
+                  "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+resource}:testIamPermissions",
+              "request": {
+                "$ref": "TestIamPermissionsRequest"
+              },
+              "response": {
+                "$ref": "TestIamPermissionsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          }
+        },
+        "scanConfigs": {
+          "methods": {
+            "get": {
+              "description": "Gets the specified scan configuration.",
+              "flatPath": "v1beta1/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.scanConfigs.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the scan configuration in the form of\n`projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "response": {
+                "$ref": "ScanConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists scan configurations for the specified project.",
+              "flatPath": "v1beta1/projects/{projectsId}/scanConfigs",
+              "httpMethod": "GET",
+              "id": "containeranalysis.projects.scanConfigs.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "filter": {
+                  "description": "The filter expression.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "pageSize": {
+                  "description": "The number of scan configs to return in the list.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "Token to provide to skip to a particular spot in the list.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The name of the project to list scan configurations for in the form of\n`projects/[PROJECT_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+parent}/scanConfigs",
+              "response": {
+                "$ref": "ListScanConfigsResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "update": {
+              "description": "Updates the specified scan configuration.",
+              "flatPath": "v1beta1/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+              "httpMethod": "PUT",
+              "id": "containeranalysis.projects.scanConfigs.update",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the scan configuration in the form of\n`projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1beta1/{+name}",
+              "request": {
+                "$ref": "ScanConfig"
+              },
+              "response": {
+                "$ref": "ScanConfig"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20181207",
+  "rootUrl": "https://containeranalysis.googleapis.com/",
+  "schemas": {
+    "AliasContext": {
+      "description": "An alias to a repo revision.",
+      "id": "AliasContext",
+      "properties": {
+        "kind": {
+          "description": "The alias kind.",
+          "enum": [
+            "KIND_UNSPECIFIED",
+            "FIXED",
+            "MOVABLE",
+            "OTHER"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "Git tag.",
+            "Git branch.",
+            "Used to specify non-standard aliases. For example, if a Git repo has a\nref named \"refs/foo/bar\"."
+          ],
+          "type": "string"
+        },
+        "name": {
+          "description": "The alias name.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Artifact": {
+      "description": "Artifact describes a build product.",
+      "id": "Artifact",
+      "properties": {
+        "checksum": {
+          "description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a\ncontainer.",
+          "type": "string"
+        },
+        "id": {
+          "description": "Artifact ID, if any; for container images, this will be a URL by digest\nlike `gcr.io/projectID/imagename@sha256:123456`.",
+          "type": "string"
+        },
+        "names": {
+          "description": "Related artifact names. This may be the path to a binary or jar file, or in\nthe case of a container build, the name used to push the container image to\nGoogle Container Registry, as presented to `docker push`. Note that a\nsingle Artifact ID can have multiple names, for example if two tags are\napplied to one image.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Attestation": {
+      "description": "Occurrence that represents a single \"attestation\". The authenticity of an\nattestation can be verified using the attached signature. If the verifier\ntrusts the public key of the signer, then verifying the signature is\nsufficient to establish trust. In this circumstance, the authority to which\nthis attestation is attached is primarily useful for look-up (how to find\nthis attestation if you already know the authority and artifact to be\nverified) and intent (which authority was this attestation intended to sign\nfor).",
+      "id": "Attestation",
+      "properties": {
+        "pgpSignedAttestation": {
+          "$ref": "PgpSignedAttestation",
+          "description": "A PGP signed attestation."
+        }
+      },
+      "type": "object"
+    },
+    "AuditConfig": {
+      "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditLogConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n    {\n      \"audit_configs\": [\n        {\n          \"service\": \"allServices\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n              \"exempted_members\": [\n                \"user:foo@gmail.com\"\n              ]\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n            },\n            {\n              \"log_type\": \"ADMIN_READ\",\n            }\n          ]\n        },\n        {\n          \"service\": \"fooservice.googleapis.com\"\n          \"audit_log_configs\": [\n            {\n              \"log_type\": \"DATA_READ\",\n            },\n            {\n              \"log_type\": \"DATA_WRITE\",\n              \"exempted_members\": [\n                \"user:bar@gmail.com\"\n              ]\n            }\n          ]\n        }\n      ]\n    }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.",
+      "id": "AuditConfig",
+      "properties": {
+        "auditLogConfigs": {
+          "description": "The configuration for logging of each type of permission.",
+          "items": {
+            "$ref": "AuditLogConfig"
+          },
+          "type": "array"
+        },
+        "service": {
+          "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "AuditLogConfig": {
+      "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n    {\n      \"audit_log_configs\": [\n        {\n          \"log_type\": \"DATA_READ\",\n          \"exempted_members\": [\n            \"user:foo@gmail.com\"\n          ]\n        },\n        {\n          \"log_type\": \"DATA_WRITE\",\n        }\n      ]\n    }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.",
+      "id": "AuditLogConfig",
+      "properties": {
+        "exemptedMembers": {
+          "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "logType": {
+          "description": "The log type that this config enables.",
+          "enum": [
+            "LOG_TYPE_UNSPECIFIED",
+            "ADMIN_READ",
+            "DATA_WRITE",
+            "DATA_READ"
+          ],
+          "enumDescriptions": [
+            "Default case. Should never be this.",
+            "Admin reads. Example: CloudIAM getIamPolicy",
+            "Data writes. Example: CloudSQL Users create",
+            "Data reads. Example: CloudSQL Users list"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Authority": {
+      "description": "Note kind that represents a logical attestation \"role\" or \"authority\". For\nexample, an organization might have one `Authority` for \"QA\" and one for\n\"build\". This note is intended to act strictly as a grouping mechanism for\nthe attached occurrences (Attestations). This grouping mechanism also\nprovides a security boundary, since IAM ACLs gate the ability for a principle\nto attach an occurrence to a given note. It also provides a single point of\nlookup to find all attached attestation occurrences, even if they don't all\nlive in the same project.",
+      "id": "Authority",
+      "properties": {
+        "hint": {
+          "$ref": "Hint",
+          "description": "Hint hints at the purpose of the attestation authority."
+        }
+      },
+      "type": "object"
+    },
+    "Basis": {
+      "description": "Basis describes the base image portion (Note) of the DockerImage\nrelationship. Linked occurrences are derived from this or an\nequivalent image via:\n  FROM \u003cBasis.resource_url\u003e\nOr an equivalent reference, e.g. a tag of the resource_url.",
+      "id": "Basis",
+      "properties": {
+        "fingerprint": {
+          "$ref": "Fingerprint",
+          "description": "Required. Immutable. The fingerprint of the base image."
+        },
+        "resourceUrl": {
+          "description": "Required. Immutable. The resource_url for the resource representing the\nbasis of associated occurrence images.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BatchCreateNotesRequest": {
+      "description": "Request to create notes in batch.",
+      "id": "BatchCreateNotesRequest",
+      "properties": {
+        "notes": {
+          "additionalProperties": {
+            "$ref": "Note"
+          },
+          "description": "The notes to create. Max allowed length is 1000.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "BatchCreateNotesResponse": {
+      "description": "Response for creating notes in batch.",
+      "id": "BatchCreateNotesResponse",
+      "properties": {
+        "notes": {
+          "description": "The notes that were created.",
+          "items": {
+            "$ref": "Note"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BatchCreateOccurrencesRequest": {
+      "description": "Request to create occurrences in batch.",
+      "id": "BatchCreateOccurrencesRequest",
+      "properties": {
+        "occurrences": {
+          "description": "The occurrences to create. Max allowed length is 1000.",
+          "items": {
+            "$ref": "Occurrence"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BatchCreateOccurrencesResponse": {
+      "description": "Response for creating occurrences in batch.",
+      "id": "BatchCreateOccurrencesResponse",
+      "properties": {
+        "occurrences": {
+          "description": "The occurrences that were created.",
+          "items": {
+            "$ref": "Occurrence"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Binding": {
+      "description": "Associates `members` with a `role`.",
+      "id": "Binding",
+      "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."
+        },
+        "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}`: A Google Apps domain name that represents all the\n   users of that domain. For example, `google.com` or `example.com`.\n\n",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "role": {
+          "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Build": {
+      "description": "Note holding the version of the provider's builder and the signature of the\nprovenance message in the build details occurrence.",
+      "id": "Build",
+      "properties": {
+        "builderVersion": {
+          "description": "Required. Immutable. Version of the builder which produced this build.",
+          "type": "string"
+        },
+        "signature": {
+          "$ref": "BuildSignature",
+          "description": "Signature of the build in occurrences pointing to this build note\ncontaining build details."
+        }
+      },
+      "type": "object"
+    },
+    "BuildProvenance": {
+      "description": "Provenance of a build. Contains all information needed to verify the full\ndetails about the build from source to completion.",
+      "id": "BuildProvenance",
+      "properties": {
+        "buildOptions": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Special options applied to this build. This is a catch-all field where\nbuild providers can enter any desired additional details.",
+          "type": "object"
+        },
+        "builderVersion": {
+          "description": "Version string of the builder at the time this build was executed.",
+          "type": "string"
+        },
+        "builtArtifacts": {
+          "description": "Output of the build.",
+          "items": {
+            "$ref": "Artifact"
+          },
+          "type": "array"
+        },
+        "commands": {
+          "description": "Commands requested by the build.",
+          "items": {
+            "$ref": "Command"
+          },
+          "type": "array"
+        },
+        "createTime": {
+          "description": "Time at which the build was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "creator": {
+          "description": "E-mail address of the user who initiated this build. Note that this was the\nuser's e-mail address at the time the build was initiated; this address may\nnot represent the same end-user for all time.",
+          "type": "string"
+        },
+        "endTime": {
+          "description": "Time at which execution of the build was finished.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "id": {
+          "description": "Required. Unique identifier of the build.",
+          "type": "string"
+        },
+        "logsUri": {
+          "description": "URI where any logs for this provenance were written.",
+          "type": "string"
+        },
+        "projectId": {
+          "description": "ID of the project.",
+          "type": "string"
+        },
+        "sourceProvenance": {
+          "$ref": "Source",
+          "description": "Details of the Source input to the build."
+        },
+        "startTime": {
+          "description": "Time at which execution of the build was started.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "triggerId": {
+          "description": "Trigger identifier if the build was triggered automatically; empty if not.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildSignature": {
+      "description": "Message encapsulating the signature of the verified build.",
+      "id": "BuildSignature",
+      "properties": {
+        "keyId": {
+          "description": "An ID for the key used to sign. This could be either an ID for the key\nstored in `public_key` (such as the ID or fingerprint for a PGP key, or the\nCN for a cert), or a reference to an external key (such as a reference to a\nkey in Cloud Key Management Service).",
+          "type": "string"
+        },
+        "keyType": {
+          "description": "The type of the key, either stored in `public_key` or referenced in\n`key_id`.",
+          "enum": [
+            "KEY_TYPE_UNSPECIFIED",
+            "PGP_ASCII_ARMORED",
+            "PKIX_PEM"
+          ],
+          "enumDescriptions": [
+            "`KeyType` is not set.",
+            "`PGP ASCII Armored` public key.",
+            "`PKIX PEM` public key."
+          ],
+          "type": "string"
+        },
+        "publicKey": {
+          "description": "Public key of the builder which can be used to verify that the related\nfindings are valid and unchanged. If `key_type` is empty, this defaults\nto PEM encoded public keys.\n\nThis field may be empty if `key_id` references an external key.\n\nFor Cloud Build based signatures, this is a PEM encoded public\nkey. To verify the Cloud Build signature, place the contents of\nthis field into a file (public.pem). The signature field is base64-decoded\ninto its binary representation in signature.bin, and the provenance bytes\nfrom `BuildDetails` are base64-decoded into a binary representation in\nsigned.bin. OpenSSL can then verify the signature:\n`openssl sha256 -verify public.pem -signature signature.bin signed.bin`",
+          "type": "string"
+        },
+        "signature": {
+          "description": "Required. Signature of the related `BuildProvenance`. In JSON, this is\nbase-64 encoded.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "CloudRepoSourceContext": {
+      "description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud\nSource Repo.",
+      "id": "CloudRepoSourceContext",
+      "properties": {
+        "aliasContext": {
+          "$ref": "AliasContext",
+          "description": "An alias, which may be a branch or tag."
+        },
+        "repoId": {
+          "$ref": "RepoId",
+          "description": "The ID of the repo."
+        },
+        "revisionId": {
+          "description": "A revision ID.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Command": {
+      "description": "Command describes a step performed as part of the build pipeline.",
+      "id": "Command",
+      "properties": {
+        "args": {
+          "description": "Command-line arguments used when executing this command.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "dir": {
+          "description": "Working directory (relative to project source root) used when running this\ncommand.",
+          "type": "string"
+        },
+        "env": {
+          "description": "Environment variables set before running this command.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "id": {
+          "description": "Optional unique identifier for this command, used in wait_for to reference\nthis command as a dependency.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Required. Name of the command, as presented on the command line, or if the\ncommand is packaged as a Docker container, as presented to `docker pull`.",
+          "type": "string"
+        },
+        "waitFor": {
+          "description": "The ID(s) of the command(s) that this command depends on.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Deployable": {
+      "description": "An artifact that can be deployed in some runtime.",
+      "id": "Deployable",
+      "properties": {
+        "resourceUri": {
+          "description": "Required. Resource URI for the artifact being deployed.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Deployment": {
+      "description": "The period during which some deployable was active in a runtime.",
+      "id": "Deployment",
+      "properties": {
+        "address": {
+          "description": "Address of the runtime element hosting this deployment.",
+          "type": "string"
+        },
+        "config": {
+          "description": "Configuration used to create this deployment.",
+          "type": "string"
+        },
+        "deployTime": {
+          "description": "Required. Beginning of the lifetime of this deployment.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "platform": {
+          "description": "Platform hosting this deployment.",
+          "enum": [
+            "PLATFORM_UNSPECIFIED",
+            "GKE",
+            "FLEX",
+            "CUSTOM"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "Google Container Engine.",
+            "Google App Engine: Flexible Environment.",
+            "Custom user-defined platform."
+          ],
+          "type": "string"
+        },
+        "resourceUri": {
+          "description": "Output only. Resource URI for the artifact being deployed taken from\nthe deployable field with the same name.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "undeployTime": {
+          "description": "End of the lifetime of this deployment.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "userEmail": {
+          "description": "Identity of the user that triggered this deployment.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Derived": {
+      "description": "Derived describes the derived image portion (Occurrence) of the DockerImage\nrelationship. This image would be produced from a Dockerfile with FROM\n\u003cDockerImage.Basis in attached Note\u003e.",
+      "id": "Derived",
+      "properties": {
+        "baseResourceUrl": {
+          "description": "Output only. This contains the base image URL for the derived image\noccurrence.",
+          "type": "string"
+        },
+        "distance": {
+          "description": "Output only. The number of layers by which this image differs from the\nassociated image basis.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "fingerprint": {
+          "$ref": "Fingerprint",
+          "description": "Required. The fingerprint of the derived image."
+        },
+        "layerInfo": {
+          "description": "This contains layer-specific metadata, if populated it has length\n\"distance\" and is ordered with [distance] being the layer immediately\nfollowing the base image and [1] being the final layer.",
+          "items": {
+            "$ref": "Layer"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Detail": {
+      "description": "Identifies all appearances of this vulnerability in the package for a\nspecific distro/location. For example: glibc in\ncpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2",
+      "id": "Detail",
+      "properties": {
+        "cpeUri": {
+          "description": "Required. The CPE URI in\n[cpe format](https://cpe.mitre.org/specification/) in which the\nvulnerability manifests. Examples include distro or storage location for\nvulnerable jar.",
+          "type": "string"
+        },
+        "description": {
+          "description": "A vendor-specific description of this note.",
+          "type": "string"
+        },
+        "fixedLocation": {
+          "$ref": "VulnerabilityLocation",
+          "description": "The fix for this specific package version."
+        },
+        "isObsolete": {
+          "description": "Whether this detail is obsolete. Occurrences are expected not to point to\nobsolete details.",
+          "type": "boolean"
+        },
+        "maxAffectedVersion": {
+          "$ref": "Version",
+          "description": "The max version of the package in which the vulnerability exists."
+        },
+        "minAffectedVersion": {
+          "$ref": "Version",
+          "description": "The min version of the package in which the vulnerability exists."
+        },
+        "package": {
+          "description": "Required. The name of the package where the vulnerability was found.",
+          "type": "string"
+        },
+        "packageType": {
+          "description": "The type of package; whether native or non native(ruby gems, node.js\npackages etc).",
+          "type": "string"
+        },
+        "severityName": {
+          "description": "The severity (eg: distro assigned severity) for this vulnerability.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Details": {
+      "description": "Details of an attestation occurrence.",
+      "id": "Details",
+      "properties": {
+        "attestation": {
+          "$ref": "Attestation",
+          "description": "Required. Attestation for the resource."
+        }
+      },
+      "type": "object"
+    },
+    "Discovered": {
+      "description": "Provides information about the analysis status of a discovered resource.",
+      "id": "Discovered",
+      "properties": {
+        "analysisStatus": {
+          "description": "The status of discovery for the resource.",
+          "enum": [
+            "ANALYSIS_STATUS_UNSPECIFIED",
+            "PENDING",
+            "SCANNING",
+            "FINISHED_SUCCESS",
+            "FINISHED_FAILED",
+            "FINISHED_UNSUPPORTED"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "Resource is known but no action has been taken yet.",
+            "Resource is being analyzed.",
+            "Analysis has finished successfully.",
+            "Analysis has finished unsuccessfully, the analysis itself is in a bad\nstate.",
+            "The resource is known not to be supported"
+          ],
+          "type": "string"
+        },
+        "analysisStatusError": {
+          "$ref": "Status",
+          "description": "When an error is encountered this will contain a LocalizedMessage under\ndetails to show to the user. The LocalizedMessage is output only and\npopulated by the API."
+        },
+        "continuousAnalysis": {
+          "description": "Whether the resource is continuously analyzed.",
+          "enum": [
+            "CONTINUOUS_ANALYSIS_UNSPECIFIED",
+            "ACTIVE",
+            "INACTIVE"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "The resource is continuously analyzed.",
+            "The resource is ignored for continuous analysis."
+          ],
+          "type": "string"
+        },
+        "lastAnalysisTime": {
+          "description": "The last time continuous analysis was done for this resource.\nDeprecated, do not use.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Discovery": {
+      "description": "A note that indicates a type of analysis a provider would perform. This note\nexists in a provider's project. A `Discovery` occurrence is created in a\nconsumer's project at the start of analysis.",
+      "id": "Discovery",
+      "properties": {
+        "analysisKind": {
+          "description": "Required. Immutable. The kind of analysis that is handled by this\ndiscovery.",
+          "enum": [
+            "NOTE_KIND_UNSPECIFIED",
+            "VULNERABILITY",
+            "BUILD",
+            "IMAGE",
+            "PACKAGE",
+            "DEPLOYMENT",
+            "DISCOVERY",
+            "ATTESTATION"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "The note and occurrence represent a package vulnerability.",
+            "The note and occurrence assert build provenance.",
+            "This represents an image basis relationship.",
+            "This represents a package installed via a package manager.",
+            "The note and occurrence track deployment events.",
+            "The note and occurrence track the initial discovery status of a resource.",
+            "This represents a logical \"role\" that can attest to artifacts."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Distribution": {
+      "description": "This represents a particular channel of distribution for a given package.\nE.g., Debian's jessie-backports dpkg mirror.",
+      "id": "Distribution",
+      "properties": {
+        "architecture": {
+          "description": "The CPU architecture for which packages in this distribution channel were\nbuilt.",
+          "enum": [
+            "ARCHITECTURE_UNSPECIFIED",
+            "X86",
+            "X64"
+          ],
+          "enumDescriptions": [
+            "Unknown architecture.",
+            "X86 architecture.",
+            "X64 architecture."
+          ],
+          "type": "string"
+        },
+        "cpeUri": {
+          "description": "Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/)\ndenoting the package manager version distributing a package.",
+          "type": "string"
+        },
+        "description": {
+          "description": "The distribution channel-specific description of this package.",
+          "type": "string"
+        },
+        "latestVersion": {
+          "$ref": "Version",
+          "description": "The latest available version of this package in this distribution channel."
+        },
+        "maintainer": {
+          "description": "A freeform string denoting the maintainer of this package.",
+          "type": "string"
+        },
+        "url": {
+          "description": "The distribution channel-specific homepage for this package.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Empty": {
+      "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
+      "id": "Empty",
+      "properties": {},
+      "type": "object"
+    },
+    "Expr": {
+      "description": "Represents an expression text. Example:\n\n    title: \"User account presence\"\n    description: \"Determines whether the request has a user account\"\n    expression: \"size(request.user) \u003e 0\"",
+      "id": "Expr",
+      "properties": {
+        "description": {
+          "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.",
+          "type": "string"
+        },
+        "expression": {
+          "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.",
+          "type": "string"
+        },
+        "location": {
+          "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.",
+          "type": "string"
+        },
+        "title": {
+          "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "FileHashes": {
+      "description": "Container message for hashes of byte content of files, used in source\nmessages to verify integrity of source input to the build.",
+      "id": "FileHashes",
+      "properties": {
+        "fileHash": {
+          "description": "Required. Collection of file hashes.",
+          "items": {
+            "$ref": "Hash"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Fingerprint": {
+      "description": "A set of properties that uniquely identify a given Docker image.",
+      "id": "Fingerprint",
+      "properties": {
+        "v1Name": {
+          "description": "Required. The layer ID of the final layer in the Docker image's v1\nrepresentation.",
+          "type": "string"
+        },
+        "v2Blob": {
+          "description": "Required. The ordered list of v2 blobs that represent a given image.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "v2Name": {
+          "description": "Output only. The name of the image's v2 blobs computed via:\n  [bottom] := v2_blobbottom := sha256(v2_blob[N] + \" \" + v2_name[N+1])\nOnly the name of the final blob is kept.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "FixableTotalByDigest": {
+      "description": "Per resource and severity counts of fixable and total vulnerabilites.",
+      "id": "FixableTotalByDigest",
+      "properties": {
+        "fixableCount": {
+          "description": "The number of fixable vulnerabilities associated with this resource.",
+          "format": "int64",
+          "type": "string"
+        },
+        "resource": {
+          "$ref": "Resource",
+          "description": "The affected resource."
+        },
+        "severity": {
+          "description": "The severity for this count. SEVERITY_UNSPECIFIED indicates total across\nall severities.",
+          "enum": [
+            "SEVERITY_UNSPECIFIED",
+            "MINIMAL",
+            "LOW",
+            "MEDIUM",
+            "HIGH",
+            "CRITICAL"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "Minimal severity.",
+            "Low severity.",
+            "Medium severity.",
+            "High severity.",
+            "Critical severity."
+          ],
+          "type": "string"
+        },
+        "totalCount": {
+          "description": "The total number of vulnerabilities associated with this resource.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GerritSourceContext": {
+      "description": "A SourceContext referring to a Gerrit project.",
+      "id": "GerritSourceContext",
+      "properties": {
+        "aliasContext": {
+          "$ref": "AliasContext",
+          "description": "An alias, which may be a branch or tag."
+        },
+        "gerritProject": {
+          "description": "The full project name within the host. Projects may be nested, so\n\"project/subproject\" is a valid project name. The \"repo name\" is the\nhostURI/project.",
+          "type": "string"
+        },
+        "hostUri": {
+          "description": "The URI of a running Gerrit instance.",
+          "type": "string"
+        },
+        "revisionId": {
+          "description": "A revision (commit) ID.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GetIamPolicyRequest": {
+      "description": "Request message for `GetIamPolicy` method.",
+      "id": "GetIamPolicyRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "GitSourceContext": {
+      "description": "A GitSourceContext denotes a particular revision in a third party Git\nrepository (e.g., GitHub).",
+      "id": "GitSourceContext",
+      "properties": {
+        "revisionId": {
+          "description": "Git commit hash.",
+          "type": "string"
+        },
+        "url": {
+          "description": "Git repository URL.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata": {
+      "description": "Metadata for all operations used and required for all operations\nthat created by Container Analysis Providers",
+      "id": "GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata",
+      "properties": {
+        "createTime": {
+          "description": "Output only. The time this operation was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "endTime": {
+          "description": "Output only. The time that this operation was marked completed or failed.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GrafeasV1beta1BuildDetails": {
+      "description": "Details of a build occurrence.",
+      "id": "GrafeasV1beta1BuildDetails",
+      "properties": {
+        "provenance": {
+          "$ref": "BuildProvenance",
+          "description": "Required. The actual provenance for the build."
+        },
+        "provenanceBytes": {
+          "description": "Serialized JSON representation of the provenance, used in generating the\nbuild signature in the corresponding build note. After verifying the\nsignature, `provenance_bytes` can be unmarshalled and compared to the\nprovenance to confirm that it is unchanged. A base64-encoded string\nrepresentation of the provenance bytes is used for the signature in order\nto interoperate with openssl which expects this format for signature\nverification.\n\nThe serialized form is captured both to avoid ambiguity in how the\nprovenance is marshalled to json as well to prevent incompatibilities with\nfuture changes.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GrafeasV1beta1DeploymentDetails": {
+      "description": "Details of a deployment occurrence.",
+      "id": "GrafeasV1beta1DeploymentDetails",
+      "properties": {
+        "deployment": {
+          "$ref": "Deployment",
+          "description": "Required. Deployment history for the resource."
+        }
+      },
+      "type": "object"
+    },
+    "GrafeasV1beta1DiscoveryDetails": {
+      "description": "Details of a discovery occurrence.",
+      "id": "GrafeasV1beta1DiscoveryDetails",
+      "properties": {
+        "discovered": {
+          "$ref": "Discovered",
+          "description": "Required. Analysis status for the discovered resource."
+        }
+      },
+      "type": "object"
+    },
+    "GrafeasV1beta1ImageDetails": {
+      "description": "Details of an image occurrence.",
+      "id": "GrafeasV1beta1ImageDetails",
+      "properties": {
+        "derivedImage": {
+          "$ref": "Derived",
+          "description": "Required. Immutable. The child image derived from the base image."
+        }
+      },
+      "type": "object"
+    },
+    "GrafeasV1beta1PackageDetails": {
+      "description": "Details of a package occurrence.",
+      "id": "GrafeasV1beta1PackageDetails",
+      "properties": {
+        "installation": {
+          "$ref": "Installation",
+          "description": "Required. Where the package was installed."
+        }
+      },
+      "type": "object"
+    },
+    "GrafeasV1beta1VulnerabilityDetails": {
+      "description": "Details of a vulnerability Occurrence.",
+      "id": "GrafeasV1beta1VulnerabilityDetails",
+      "properties": {
+        "cvssScore": {
+          "description": "Output only. The CVSS score of this vulnerability. CVSS score is on a\nscale of 0-10 where 0 indicates low severity and 10 indicates high\nseverity.",
+          "format": "float",
+          "type": "number"
+        },
+        "longDescription": {
+          "description": "Output only. A detailed description of this vulnerability.",
+          "type": "string"
+        },
+        "packageIssue": {
+          "description": "Required. The set of affected locations and their fixes (if available)\nwithin the associated resource.",
+          "items": {
+            "$ref": "PackageIssue"
+          },
+          "type": "array"
+        },
+        "relatedUrls": {
+          "description": "Output only. URLs related to this vulnerability.",
+          "items": {
+            "$ref": "RelatedUrl"
+          },
+          "type": "array"
+        },
+        "severity": {
+          "description": "Output only. The note provider assigned Severity of the vulnerability.",
+          "enum": [
+            "SEVERITY_UNSPECIFIED",
+            "MINIMAL",
+            "LOW",
+            "MEDIUM",
+            "HIGH",
+            "CRITICAL"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "Minimal severity.",
+            "Low severity.",
+            "Medium severity.",
+            "High severity.",
+            "Critical severity."
+          ],
+          "type": "string"
+        },
+        "shortDescription": {
+          "description": "Output only. A one sentence description of this vulnerability.",
+          "type": "string"
+        },
+        "type": {
+          "description": "The type of package; whether native or non native(ruby gems, node.js\npackages etc)",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Hash": {
+      "description": "Container message for hash values.",
+      "id": "Hash",
+      "properties": {
+        "type": {
+          "description": "Required. The type of hash that was performed.",
+          "enum": [
+            "HASH_TYPE_UNSPECIFIED",
+            "SHA256"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "A SHA-256 hash."
+          ],
+          "type": "string"
+        },
+        "value": {
+          "description": "Required. The hash value.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Hint": {
+      "description": "This submessage provides human-readable hints about the purpose of the\nauthority. Because the name of a note acts as its resource reference, it is\nimportant to disambiguate the canonical name of the Note (which might be a\nUUID for security purposes) from \"readable\" names more suitable for debug\noutput. Note that these hints should not be used to look up authorities in\nsecurity sensitive contexts, such as when looking up attestations to\nverify.",
+      "id": "Hint",
+      "properties": {
+        "humanReadableName": {
+          "description": "Required. The human readable name of this attestation authority, for\nexample \"qa\".",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Installation": {
+      "description": "This represents how a particular software package may be installed on a\nsystem.",
+      "id": "Installation",
+      "properties": {
+        "location": {
+          "description": "Required. All of the places within the filesystem versions of this package\nhave been found.",
+          "items": {
+            "$ref": "Location"
+          },
+          "type": "array"
+        },
+        "name": {
+          "description": "Output only. The name of the installed package.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Layer": {
+      "description": "Layer holds metadata specific to a layer of a Docker image.",
+      "id": "Layer",
+      "properties": {
+        "arguments": {
+          "description": "The recovered arguments to the Dockerfile directive.",
+          "type": "string"
+        },
+        "directive": {
+          "description": "Required. The recovered Dockerfile directive used to construct this layer.",
+          "enum": [
+            "DIRECTIVE_UNSPECIFIED",
+            "MAINTAINER",
+            "RUN",
+            "CMD",
+            "LABEL",
+            "EXPOSE",
+            "ENV",
+            "ADD",
+            "COPY",
+            "ENTRYPOINT",
+            "VOLUME",
+            "USER",
+            "WORKDIR",
+            "ARG",
+            "ONBUILD",
+            "STOPSIGNAL",
+            "HEALTHCHECK",
+            "SHELL"
+          ],
+          "enumDescriptions": [
+            "Default value for unsupported/missing directive.",
+            "https://docs.docker.com/reference/builder/#maintainer",
+            "https://docs.docker.com/reference/builder/#run",
+            "https://docs.docker.com/reference/builder/#cmd",
+            "https://docs.docker.com/reference/builder/#label",
+            "https://docs.docker.com/reference/builder/#expose",
+            "https://docs.docker.com/reference/builder/#env",
+            "https://docs.docker.com/reference/builder/#add",
+            "https://docs.docker.com/reference/builder/#copy",
+            "https://docs.docker.com/reference/builder/#entrypoint",
+            "https://docs.docker.com/reference/builder/#volume",
+            "https://docs.docker.com/reference/builder/#user",
+            "https://docs.docker.com/reference/builder/#workdir",
+            "https://docs.docker.com/reference/builder/#arg",
+            "https://docs.docker.com/reference/builder/#onbuild",
+            "https://docs.docker.com/reference/builder/#stopsignal",
+            "https://docs.docker.com/reference/builder/#healthcheck",
+            "https://docs.docker.com/reference/builder/#shell"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ListNoteOccurrencesResponse": {
+      "description": "Response for listing occurrences for a note.",
+      "id": "ListNoteOccurrencesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "Token to provide to skip to a particular spot in the list.",
+          "type": "string"
+        },
+        "occurrences": {
+          "description": "The occurrences attached to the specified note.",
+          "items": {
+            "$ref": "Occurrence"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListNotesResponse": {
+      "description": "Response for listing notes.",
+      "id": "ListNotesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The next pagination token in the list response. It should be used as\n`page_token` for the following request. An empty value means no more\nresults.",
+          "type": "string"
+        },
+        "notes": {
+          "description": "The notes requested.",
+          "items": {
+            "$ref": "Note"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListOccurrencesResponse": {
+      "description": "Response for listing occurrences.",
+      "id": "ListOccurrencesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The next pagination token in the list response. It should be used as\n`page_token` for the following request. An empty value means no more\nresults.",
+          "type": "string"
+        },
+        "occurrences": {
+          "description": "The occurrences requested.",
+          "items": {
+            "$ref": "Occurrence"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "ListScanConfigsResponse": {
+      "description": "Response for listing scan configurations.",
+      "id": "ListScanConfigsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The next pagination token in the list response. It should be used as\n`page_token` for the following request. An empty value means no more\nresults.",
+          "type": "string"
+        },
+        "scanConfigs": {
+          "description": "The scan configurations requested.",
+          "items": {
+            "$ref": "ScanConfig"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Location": {
+      "description": "An occurrence of a particular package installation found within a system's\nfilesystem. E.g., glibc was found in `/var/lib/dpkg/status`.",
+      "id": "Location",
+      "properties": {
+        "cpeUri": {
+          "description": "Required. The CPE URI in [CPE format](https://cpe.mitre.org/specification/)\ndenoting the package manager version distributing a package.",
+          "type": "string"
+        },
+        "path": {
+          "description": "The path from which we gathered that this package/version is installed.",
+          "type": "string"
+        },
+        "version": {
+          "$ref": "Version",
+          "description": "The version installed at this location."
+        }
+      },
+      "type": "object"
+    },
+    "Note": {
+      "description": "A type of analysis that can be done for a resource.",
+      "id": "Note",
+      "properties": {
+        "attestationAuthority": {
+          "$ref": "Authority",
+          "description": "A note describing an attestation role."
+        },
+        "baseImage": {
+          "$ref": "Basis",
+          "description": "A note describing a base image."
+        },
+        "build": {
+          "$ref": "Build",
+          "description": "A note describing build provenance for a verifiable build."
+        },
+        "createTime": {
+          "description": "Output only. The time this note was created. This field can be used as a\nfilter in list requests.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "deployable": {
+          "$ref": "Deployable",
+          "description": "A note describing something that can be deployed."
+        },
+        "discovery": {
+          "$ref": "Discovery",
+          "description": "A note describing the initial analysis of a resource."
+        },
+        "expirationTime": {
+          "description": "Time of expiration for this note. Empty if note does not expire.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "kind": {
+          "description": "Output only. The type of analysis. This field can be used as a filter in\nlist requests.",
+          "enum": [
+            "NOTE_KIND_UNSPECIFIED",
+            "VULNERABILITY",
+            "BUILD",
+            "IMAGE",
+            "PACKAGE",
+            "DEPLOYMENT",
+            "DISCOVERY",
+            "ATTESTATION"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "The note and occurrence represent a package vulnerability.",
+            "The note and occurrence assert build provenance.",
+            "This represents an image basis relationship.",
+            "This represents a package installed via a package manager.",
+            "The note and occurrence track deployment events.",
+            "The note and occurrence track the initial discovery status of a resource.",
+            "This represents a logical \"role\" that can attest to artifacts."
+          ],
+          "type": "string"
+        },
+        "longDescription": {
+          "description": "A detailed description of this note.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only. The name of the note in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+          "type": "string"
+        },
+        "package": {
+          "$ref": "Package",
+          "description": "A note describing a package hosted by various package managers."
+        },
+        "relatedNoteNames": {
+          "description": "Other notes related to this note.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "relatedUrl": {
+          "description": "URLs associated with this note.",
+          "items": {
+            "$ref": "RelatedUrl"
+          },
+          "type": "array"
+        },
+        "shortDescription": {
+          "description": "A one sentence description of this note.",
+          "type": "string"
+        },
+        "updateTime": {
+          "description": "Output only. The time this note was last updated. This field can be used as\na filter in list requests.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "vulnerability": {
+          "$ref": "Vulnerability",
+          "description": "A note describing a package vulnerability."
+        }
+      },
+      "type": "object"
+    },
+    "Occurrence": {
+      "description": "An instance of an analysis type that has been found on a resource.",
+      "id": "Occurrence",
+      "properties": {
+        "attestation": {
+          "$ref": "Details",
+          "description": "Describes an attestation of an artifact."
+        },
+        "build": {
+          "$ref": "GrafeasV1beta1BuildDetails",
+          "description": "Describes a verifiable build."
+        },
+        "createTime": {
+          "description": "Output only. The time this occurrence was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "deployment": {
+          "$ref": "GrafeasV1beta1DeploymentDetails",
+          "description": "Describes the deployment of an artifact on a runtime."
+        },
+        "derivedImage": {
+          "$ref": "GrafeasV1beta1ImageDetails",
+          "description": "Describes how this resource derives from the basis in the associated\nnote."
+        },
+        "discovered": {
+          "$ref": "GrafeasV1beta1DiscoveryDetails",
+          "description": "Describes when a resource was discovered."
+        },
+        "installation": {
+          "$ref": "GrafeasV1beta1PackageDetails",
+          "description": "Describes the installation of a package on the linked resource."
+        },
+        "kind": {
+          "description": "Output only. This explicitly denotes which of the occurrence details are\nspecified. This field can be used as a filter in list requests.",
+          "enum": [
+            "NOTE_KIND_UNSPECIFIED",
+            "VULNERABILITY",
+            "BUILD",
+            "IMAGE",
+            "PACKAGE",
+            "DEPLOYMENT",
+            "DISCOVERY",
+            "ATTESTATION"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "The note and occurrence represent a package vulnerability.",
+            "The note and occurrence assert build provenance.",
+            "This represents an image basis relationship.",
+            "This represents a package installed via a package manager.",
+            "The note and occurrence track deployment events.",
+            "The note and occurrence track the initial discovery status of a resource.",
+            "This represents a logical \"role\" that can attest to artifacts."
+          ],
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only. The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+          "type": "string"
+        },
+        "noteName": {
+          "description": "Required. Immutable. The analysis note associated with this occurrence, in\nthe form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be\nused as a filter in list requests.",
+          "type": "string"
+        },
+        "remediation": {
+          "description": "A description of actions that can be taken to remedy the note.",
+          "type": "string"
+        },
+        "resource": {
+          "$ref": "Resource",
+          "description": "Required. Immutable. The resource for which the occurrence applies."
+        },
+        "updateTime": {
+          "description": "Output only. The time this occurrence was last updated.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "vulnerability": {
+          "$ref": "GrafeasV1beta1VulnerabilityDetails",
+          "description": "Describes a security vulnerability."
+        }
+      },
+      "type": "object"
+    },
+    "Package": {
+      "description": "This represents a particular package that is distributed over various\nchannels. E.g., glibc (aka libc6) is distributed by many, at various\nversions.",
+      "id": "Package",
+      "properties": {
+        "distribution": {
+          "description": "The various channels by which a package is distributed.",
+          "items": {
+            "$ref": "Distribution"
+          },
+          "type": "array"
+        },
+        "name": {
+          "description": "Required. Immutable. The name of the package.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "PackageIssue": {
+      "description": "This message wraps a location affected by a vulnerability and its\nassociated fix (if one is available).",
+      "id": "PackageIssue",
+      "properties": {
+        "affectedLocation": {
+          "$ref": "VulnerabilityLocation",
+          "description": "Required. The location of the vulnerability."
+        },
+        "fixedLocation": {
+          "$ref": "VulnerabilityLocation",
+          "description": "The location of the available fix for vulnerability."
+        },
+        "severityName": {
+          "description": "The severity (e.g., distro assigned severity) for this vulnerability.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "PgpSignedAttestation": {
+      "description": "An attestation wrapper with a PGP-compatible signature. This message only\nsupports `ATTACHED` signatures, where the payload that is signed is included\nalongside the signature itself in the same file.",
+      "id": "PgpSignedAttestation",
+      "properties": {
+        "contentType": {
+          "description": "Type (for example schema) of the attestation payload that was signed.\nThe verifier must ensure that the provided type is one that the verifier\nsupports, and that the attestation payload is a valid instantiation of that\ntype (for example by validating a JSON schema).",
+          "enum": [
+            "CONTENT_TYPE_UNSPECIFIED",
+            "SIMPLE_SIGNING_JSON"
+          ],
+          "enumDescriptions": [
+            "`ContentType` is not set.",
+            "Atomic format attestation signature. See\nhttps://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7/docs/atomic-signature.md\nThe payload extracted from `signature` is a JSON blob conforming to the\nlinked schema."
+          ],
+          "type": "string"
+        },
+        "pgpKeyId": {
+          "description": "The cryptographic fingerprint of the key used to generate the signature,\nas output by, e.g. `gpg --list-keys`. This should be the version 4, full\n160-bit fingerprint, expressed as a 40 character hexidecimal string. See\nhttps://tools.ietf.org/html/rfc4880#section-12.2 for details.\nImplementations may choose to acknowledge \"LONG\", \"SHORT\", or other\nabbreviated key IDs, but only the full fingerprint is guaranteed to work.\nIn gpg, the full fingerprint can be retrieved from the `fpr` field\nreturned when calling --list-keys with --with-colons.  For example:\n```\ngpg --with-colons --with-fingerprint --force-v4-certs \\\n    --list-keys attester@example.com\ntru::1:1513631572:0:3:1:5\npub:...\u003cSNIP\u003e...\nfpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB:\n```\nAbove, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.",
+          "type": "string"
+        },
+        "signature": {
+          "description": "Required. The raw content of the signature, as output by GNU Privacy Guard\n(GPG) or equivalent. Since this message only supports attached signatures,\nthe payload that was signed must be attached. While the signature format\nsupported is dependent on the verification implementation, currently only\nASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than\n`--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor\n--output=signature.gpg payload.json` will create the signature content\nexpected in this field in `signature.gpg` for the `payload.json`\nattestation payload.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Policy": {
+      "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**JSON Example**\n\n    {\n      \"bindings\": [\n        {\n          \"role\": \"roles/owner\",\n          \"members\": [\n            \"user:mike@example.com\",\n            \"group:admins@example.com\",\n            \"domain:google.com\",\n            \"serviceAccount:my-other-app@appspot.gserviceaccount.com\"\n          ]\n        },\n        {\n          \"role\": \"roles/viewer\",\n          \"members\": [\"user:sean@example.com\"]\n        }\n      ]\n    }\n\n**YAML Example**\n\n    bindings:\n    - members:\n      - user:mike@example.com\n      - group:admins@example.com\n      - domain:google.com\n      - serviceAccount:my-other-app@appspot.gserviceaccount.com\n      role: roles/owner\n    - members:\n      - user:sean@example.com\n      role: roles/viewer\n\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam/docs).",
+      "id": "Policy",
+      "properties": {
+        "auditConfigs": {
+          "description": "Specifies cloud audit logging configuration for this policy.",
+          "items": {
+            "$ref": "AuditConfig"
+          },
+          "type": "array"
+        },
+        "bindings": {
+          "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.",
+          "items": {
+            "$ref": "Binding"
+          },
+          "type": "array"
+        },
+        "etag": {
+          "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.",
+          "format": "byte",
+          "type": "string"
+        },
+        "version": {
+          "description": "Deprecated.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "ProjectRepoId": {
+      "description": "Selects a repo using a Google Cloud Platform project ID (e.g.,\nwinged-cargo-31) and a repo name within that project.",
+      "id": "ProjectRepoId",
+      "properties": {
+        "projectId": {
+          "description": "The ID of the project.",
+          "type": "string"
+        },
+        "repoName": {
+          "description": "The name of the repo. Leave empty for the default repo.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "RelatedUrl": {
+      "description": "Metadata for any related URL information.",
+      "id": "RelatedUrl",
+      "properties": {
+        "label": {
+          "description": "Label to describe usage of the URL.",
+          "type": "string"
+        },
+        "url": {
+          "description": "Specific URL associated with the resource.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "RepoId": {
+      "description": "A unique identifier for a Cloud Repo.",
+      "id": "RepoId",
+      "properties": {
+        "projectRepoId": {
+          "$ref": "ProjectRepoId",
+          "description": "A combination of a project ID and a repo name."
+        },
+        "uid": {
+          "description": "A server-assigned, globally unique identifier.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Resource": {
+      "description": "An entity that can have metadata. For example, a Docker image.",
+      "id": "Resource",
+      "properties": {
+        "contentHash": {
+          "$ref": "Hash",
+          "description": "The hash of the resource content. For example, the Docker digest."
+        },
+        "name": {
+          "description": "The name of the resource. For example, the name of a Docker image -\n\"Debian\".",
+          "type": "string"
+        },
+        "uri": {
+          "description": "Required. The unique URI of the resource. For example,\n`https://gcr.io/project/image@sha256:foo` for a Docker image.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ScanConfig": {
+      "description": "A scan configuration specifies whether Cloud components in a project have a\nparticular type of analysis being run. For example, it can configure whether\nvulnerability scanning is being done on Docker images or not.",
+      "id": "ScanConfig",
+      "properties": {
+        "createTime": {
+          "description": "Output only. The time this scan config was created.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "description": {
+          "description": "Output only. A human-readable description of what the scan configuration\ndoes.",
+          "type": "string"
+        },
+        "enabled": {
+          "description": "Whether the scan is enabled.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "Output only. The name of the scan configuration in the form of\n`projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.",
+          "type": "string"
+        },
+        "updateTime": {
+          "description": "Output only. The time this scan config was last updated.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "SetIamPolicyRequest": {
+      "description": "Request message for `SetIamPolicy` method.",
+      "id": "SetIamPolicyRequest",
+      "properties": {
+        "policy": {
+          "$ref": "Policy",
+          "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them."
+        },
+        "updateMask": {
+          "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.",
+          "format": "google-fieldmask",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Source": {
+      "description": "Source describes the location of the source used for the build.",
+      "id": "Source",
+      "properties": {
+        "additionalContexts": {
+          "description": "If provided, some of the source code used for the build may be found in\nthese locations, in the case where the source repository had multiple\nremotes or submodules. This list will not include the context specified in\nthe context field.",
+          "items": {
+            "$ref": "SourceContext"
+          },
+          "type": "array"
+        },
+        "artifactStorageSourceUri": {
+          "description": "If provided, the input binary artifacts for the build came from this\nlocation.",
+          "type": "string"
+        },
+        "context": {
+          "$ref": "SourceContext",
+          "description": "If provided, the source code used for the build came from this location."
+        },
+        "fileHashes": {
+          "additionalProperties": {
+            "$ref": "FileHashes"
+          },
+          "description": "Hash(es) of the build source, which can be used to verify that the original\nsource integrity was maintained in the build.\n\nThe keys to this map are file paths used as build source and the values\ncontain the hash values for those files.\n\nIf the build source came in a single package such as a gzipped tarfile\n(.tar.gz), the FileHash will be for the single path to that file.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "SourceContext": {
+      "description": "A SourceContext is a reference to a tree of files. A SourceContext together\nwith a path point to a unique revision of a single file or directory.",
+      "id": "SourceContext",
+      "properties": {
+        "cloudRepo": {
+          "$ref": "CloudRepoSourceContext",
+          "description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
+        },
+        "gerrit": {
+          "$ref": "GerritSourceContext",
+          "description": "A SourceContext referring to a Gerrit project."
+        },
+        "git": {
+          "$ref": "GitSourceContext",
+          "description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
+        },
+        "labels": {
+          "additionalProperties": {
+            "type": "string"
+          },
+          "description": "Labels with user defined metadata.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "Status": {
+      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "id": "Status",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "TestIamPermissionsRequest": {
+      "description": "Request message for `TestIamPermissions` method.",
+      "id": "TestIamPermissionsRequest",
+      "properties": {
+        "permissions": {
+          "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "TestIamPermissionsResponse": {
+      "description": "Response message for `TestIamPermissions` method.",
+      "id": "TestIamPermissionsResponse",
+      "properties": {
+        "permissions": {
+          "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "Version": {
+      "description": "Version contains structured information about the version of a package.",
+      "id": "Version",
+      "properties": {
+        "epoch": {
+          "description": "Used to correct mistakes in the version numbering scheme.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "kind": {
+          "description": "Required. Distinguishes between sentinel MIN/MAX versions and normal\nversions.",
+          "enum": [
+            "VERSION_KIND_UNSPECIFIED",
+            "NORMAL",
+            "MINIMUM",
+            "MAXIMUM"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "A standard package version.",
+            "A special version representing negative infinity.",
+            "A special version representing positive infinity."
+          ],
+          "type": "string"
+        },
+        "name": {
+          "description": "Required only when version kind is NORMAL. The main part of the version\nname.",
+          "type": "string"
+        },
+        "revision": {
+          "description": "The iteration of the package build from the above version.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "Vulnerability": {
+      "description": "Vulnerability provides metadata about a security vulnerability in a Note.",
+      "id": "Vulnerability",
+      "properties": {
+        "cvssScore": {
+          "description": "The CVSS score for this vulnerability.",
+          "format": "float",
+          "type": "number"
+        },
+        "details": {
+          "description": "All information about the package to specifically identify this\nvulnerability. One entry per (version range and cpe_uri) the package\nvulnerability has manifested in.",
+          "items": {
+            "$ref": "Detail"
+          },
+          "type": "array"
+        },
+        "severity": {
+          "description": "Note provider assigned impact of the vulnerability.",
+          "enum": [
+            "SEVERITY_UNSPECIFIED",
+            "MINIMAL",
+            "LOW",
+            "MEDIUM",
+            "HIGH",
+            "CRITICAL"
+          ],
+          "enumDescriptions": [
+            "Unknown.",
+            "Minimal severity.",
+            "Low severity.",
+            "Medium severity.",
+            "High severity.",
+            "Critical severity."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "VulnerabilityLocation": {
+      "description": "The location of the vulnerability.",
+      "id": "VulnerabilityLocation",
+      "properties": {
+        "cpeUri": {
+          "description": "Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/)\nformat. Examples include distro or storage location for vulnerable jar.",
+          "type": "string"
+        },
+        "package": {
+          "description": "Required. The package being described.",
+          "type": "string"
+        },
+        "version": {
+          "$ref": "Version",
+          "description": "Required. The version of the package being described."
+        }
+      },
+      "type": "object"
+    },
+    "VulnerabilityOccurrencesSummary": {
+      "description": "A summary of how many vulnerability occurrences there are per resource and\nseverity type.",
+      "id": "VulnerabilityOccurrencesSummary",
+      "properties": {
+        "counts": {
+          "description": "A listing by resource of the number of fixable and total vulnerabilities.",
+          "items": {
+            "$ref": "FixableTotalByDigest"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Container Analysis API",
+  "version": "v1beta1",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/containeranalysis/v1beta1/containeranalysis-gen.go b/containeranalysis/v1beta1/containeranalysis-gen.go
new file mode 100644
index 0000000..428f323
--- /dev/null
+++ b/containeranalysis/v1beta1/containeranalysis-gen.go
@@ -0,0 +1,7158 @@
+// Copyright 2019 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package containeranalysis provides access to the Container Analysis API.
+//
+// See https://cloud.google.com/container-analysis/api/reference/rest/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/containeranalysis/v1beta1"
+//   ...
+//   containeranalysisService, err := containeranalysis.New(oauthHttpClient)
+package containeranalysis // import "google.golang.org/api/containeranalysis/v1beta1"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "containeranalysis:v1beta1"
+const apiName = "containeranalysis"
+const apiVersion = "v1beta1"
+const basePath = "https://containeranalysis.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"
+)
+
+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.Notes = NewProjectsNotesService(s)
+	rs.Occurrences = NewProjectsOccurrencesService(s)
+	rs.ScanConfigs = NewProjectsScanConfigsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Notes *ProjectsNotesService
+
+	Occurrences *ProjectsOccurrencesService
+
+	ScanConfigs *ProjectsScanConfigsService
+}
+
+func NewProjectsNotesService(s *Service) *ProjectsNotesService {
+	rs := &ProjectsNotesService{s: s}
+	rs.Occurrences = NewProjectsNotesOccurrencesService(s)
+	return rs
+}
+
+type ProjectsNotesService struct {
+	s *Service
+
+	Occurrences *ProjectsNotesOccurrencesService
+}
+
+func NewProjectsNotesOccurrencesService(s *Service) *ProjectsNotesOccurrencesService {
+	rs := &ProjectsNotesOccurrencesService{s: s}
+	return rs
+}
+
+type ProjectsNotesOccurrencesService struct {
+	s *Service
+}
+
+func NewProjectsOccurrencesService(s *Service) *ProjectsOccurrencesService {
+	rs := &ProjectsOccurrencesService{s: s}
+	return rs
+}
+
+type ProjectsOccurrencesService struct {
+	s *Service
+}
+
+func NewProjectsScanConfigsService(s *Service) *ProjectsScanConfigsService {
+	rs := &ProjectsScanConfigsService{s: s}
+	return rs
+}
+
+type ProjectsScanConfigsService struct {
+	s *Service
+}
+
+// AliasContext: An alias to a repo revision.
+type AliasContext struct {
+	// Kind: The alias kind.
+	//
+	// Possible values:
+	//   "KIND_UNSPECIFIED" - Unknown.
+	//   "FIXED" - Git tag.
+	//   "MOVABLE" - Git branch.
+	//   "OTHER" - Used to specify non-standard aliases. For example, if a
+	// Git repo has a
+	// ref named "refs/foo/bar".
+	Kind string `json:"kind,omitempty"`
+
+	// Name: The alias name.
+	Name string `json:"name,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 *AliasContext) MarshalJSON() ([]byte, error) {
+	type NoMethod AliasContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Artifact: Artifact describes a build product.
+type Artifact struct {
+	// Checksum: Hash or checksum value of a binary, or Docker Registry 2.0
+	// digest of a
+	// container.
+	Checksum string `json:"checksum,omitempty"`
+
+	// Id: Artifact ID, if any; for container images, this will be a URL by
+	// digest
+	// like `gcr.io/projectID/imagename@sha256:123456`.
+	Id string `json:"id,omitempty"`
+
+	// Names: Related artifact names. This may be the path to a binary or
+	// jar file, or in
+	// the case of a container build, the name used to push the container
+	// image to
+	// Google Container Registry, as presented to `docker push`. Note that
+	// a
+	// single Artifact ID can have multiple names, for example if two tags
+	// are
+	// applied to one image.
+	Names []string `json:"names,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Checksum") 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. "Checksum") 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 *Artifact) MarshalJSON() ([]byte, error) {
+	type NoMethod Artifact
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Attestation: Occurrence that represents a single "attestation". The
+// authenticity of an
+// attestation can be verified using the attached signature. If the
+// verifier
+// trusts the public key of the signer, then verifying the signature
+// is
+// sufficient to establish trust. In this circumstance, the authority to
+// which
+// this attestation is attached is primarily useful for look-up (how to
+// find
+// this attestation if you already know the authority and artifact to
+// be
+// verified) and intent (which authority was this attestation intended
+// to sign
+// for).
+type Attestation struct {
+	// PgpSignedAttestation: A PGP signed attestation.
+	PgpSignedAttestation *PgpSignedAttestation `json:"pgpSignedAttestation,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "PgpSignedAttestation") 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. "PgpSignedAttestation") 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 *Attestation) MarshalJSON() ([]byte, error) {
+	type NoMethod Attestation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AuditConfig: Specifies the audit configuration for a service.
+// The configuration determines which permission types are logged, and
+// what
+// identities, if any, are exempted from logging.
+// An AuditConfig must have one or more AuditLogConfigs.
+//
+// If there are AuditConfigs for both `allServices` and a specific
+// service,
+// the union of the two AuditConfigs is used for that service: the
+// log_types
+// specified in each AuditConfig are enabled, and the exempted_members
+// in each
+// AuditLogConfig are exempted.
+//
+// Example Policy with multiple AuditConfigs:
+//
+//     {
+//       "audit_configs": [
+//         {
+//           "service": "allServices"
+//           "audit_log_configs": [
+//             {
+//               "log_type": "DATA_READ",
+//               "exempted_members": [
+//                 "user:foo@gmail.com"
+//               ]
+//             },
+//             {
+//               "log_type": "DATA_WRITE",
+//             },
+//             {
+//               "log_type": "ADMIN_READ",
+//             }
+//           ]
+//         },
+//         {
+//           "service": "fooservice.googleapis.com"
+//           "audit_log_configs": [
+//             {
+//               "log_type": "DATA_READ",
+//             },
+//             {
+//               "log_type": "DATA_WRITE",
+//               "exempted_members": [
+//                 "user:bar@gmail.com"
+//               ]
+//             }
+//           ]
+//         }
+//       ]
+//     }
+//
+// For fooservice, this policy enables DATA_READ, DATA_WRITE and
+// ADMIN_READ
+// logging. It also exempts foo@gmail.com from DATA_READ logging,
+// and
+// bar@gmail.com from DATA_WRITE logging.
+type AuditConfig struct {
+	// AuditLogConfigs: The configuration for logging of each type of
+	// permission.
+	AuditLogConfigs []*AuditLogConfig `json:"auditLogConfigs,omitempty"`
+
+	// Service: Specifies a service that will be enabled for audit
+	// logging.
+	// For example, `storage.googleapis.com`,
+	// `cloudsql.googleapis.com`.
+	// `allServices` is a special value that covers all services.
+	Service string `json:"service,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AuditLogConfigs") 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. "AuditLogConfigs") 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 *AuditConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod AuditConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// AuditLogConfig: Provides the configuration for logging a type of
+// permissions.
+// Example:
+//
+//     {
+//       "audit_log_configs": [
+//         {
+//           "log_type": "DATA_READ",
+//           "exempted_members": [
+//             "user:foo@gmail.com"
+//           ]
+//         },
+//         {
+//           "log_type": "DATA_WRITE",
+//         }
+//       ]
+//     }
+//
+// This enables 'DATA_READ' and 'DATA_WRITE' logging, while
+// exempting
+// foo@gmail.com from DATA_READ logging.
+type AuditLogConfig struct {
+	// ExemptedMembers: Specifies the identities that do not cause logging
+	// for this type of
+	// permission.
+	// Follows the same format of Binding.members.
+	ExemptedMembers []string `json:"exemptedMembers,omitempty"`
+
+	// LogType: The log type that this config enables.
+	//
+	// Possible values:
+	//   "LOG_TYPE_UNSPECIFIED" - Default case. Should never be this.
+	//   "ADMIN_READ" - Admin reads. Example: CloudIAM getIamPolicy
+	//   "DATA_WRITE" - Data writes. Example: CloudSQL Users create
+	//   "DATA_READ" - Data reads. Example: CloudSQL Users list
+	LogType string `json:"logType,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExemptedMembers") 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. "ExemptedMembers") 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 *AuditLogConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod AuditLogConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Authority: Note kind that represents a logical attestation "role" or
+// "authority". For
+// example, an organization might have one `Authority` for "QA" and one
+// for
+// "build". This note is intended to act strictly as a grouping
+// mechanism for
+// the attached occurrences (Attestations). This grouping mechanism
+// also
+// provides a security boundary, since IAM ACLs gate the ability for a
+// principle
+// to attach an occurrence to a given note. It also provides a single
+// point of
+// lookup to find all attached attestation occurrences, even if they
+// don't all
+// live in the same project.
+type Authority struct {
+	// Hint: Hint hints at the purpose of the attestation authority.
+	Hint *Hint `json:"hint,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Hint") 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. "Hint") 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 *Authority) MarshalJSON() ([]byte, error) {
+	type NoMethod Authority
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Basis: Basis describes the base image portion (Note) of the
+// DockerImage
+// relationship. Linked occurrences are derived from this or
+// an
+// equivalent image via:
+//   FROM <Basis.resource_url>
+// Or an equivalent reference, e.g. a tag of the resource_url.
+type Basis struct {
+	// Fingerprint: Required. Immutable. The fingerprint of the base image.
+	Fingerprint *Fingerprint `json:"fingerprint,omitempty"`
+
+	// ResourceUrl: Required. Immutable. The resource_url for the resource
+	// representing the
+	// basis of associated occurrence images.
+	ResourceUrl string `json:"resourceUrl,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Fingerprint") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Fingerprint") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Basis) MarshalJSON() ([]byte, error) {
+	type NoMethod Basis
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BatchCreateNotesRequest: Request to create notes in batch.
+type BatchCreateNotesRequest struct {
+	// Notes: The notes to create. Max allowed length is 1000.
+	Notes map[string]Note `json:"notes,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Notes") 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. "Notes") 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 *BatchCreateNotesRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod BatchCreateNotesRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BatchCreateNotesResponse: Response for creating notes in batch.
+type BatchCreateNotesResponse struct {
+	// Notes: The notes that were created.
+	Notes []*Note `json:"notes,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Notes") 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. "Notes") 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 *BatchCreateNotesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BatchCreateNotesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BatchCreateOccurrencesRequest: Request to create occurrences in
+// batch.
+type BatchCreateOccurrencesRequest struct {
+	// Occurrences: The occurrences to create. Max allowed length is 1000.
+	Occurrences []*Occurrence `json:"occurrences,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Occurrences") 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. "Occurrences") 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 *BatchCreateOccurrencesRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod BatchCreateOccurrencesRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BatchCreateOccurrencesResponse: Response for creating occurrences in
+// batch.
+type BatchCreateOccurrencesResponse struct {
+	// Occurrences: The occurrences that were created.
+	Occurrences []*Occurrence `json:"occurrences,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Occurrences") 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. "Occurrences") 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 *BatchCreateOccurrencesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BatchCreateOccurrencesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Binding: Associates `members` with a `role`.
+type Binding struct {
+	// Condition: Unimplemented. The condition that is associated with this
+	// binding.
+	// NOTE: an unsatisfied condition will not allow user access via
+	// current
+	// binding. Different bindings, including their conditions, are
+	// examined
+	// independently.
+	Condition *Expr `json:"condition,omitempty"`
+
+	// Members: Specifies the identities requesting access for a Cloud
+	// Platform resource.
+	// `members` can have the following values:
+	//
+	// * `allUsers`: A special identifier that represents anyone who is
+	//    on the internet; with or without a Google account.
+	//
+	// * `allAuthenticatedUsers`: A special identifier that represents
+	// anyone
+	//    who is authenticated with a Google account or a service
+	// account.
+	//
+	// * `user:{emailid}`: An email address that represents a specific
+	// Google
+	//    account. For example, `alice@gmail.com` .
+	//
+	//
+	// * `serviceAccount:{emailid}`: An email address that represents a
+	// service
+	//    account. For example,
+	// `my-other-app@appspot.gserviceaccount.com`.
+	//
+	// * `group:{emailid}`: An email address that represents a Google
+	// group.
+	//    For example, `admins@example.com`.
+	//
+	//
+	// * `domain:{domain}`: A Google Apps domain name that represents all
+	// the
+	//    users of that domain. For example, `google.com` or
+	// `example.com`.
+	//
+	//
+	Members []string `json:"members,omitempty"`
+
+	// Role: Role that is assigned to `members`.
+	// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+	Role string `json:"role,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Condition") 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. "Condition") 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 *Binding) MarshalJSON() ([]byte, error) {
+	type NoMethod Binding
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Build: Note holding the version of the provider's builder and the
+// signature of the
+// provenance message in the build details occurrence.
+type Build struct {
+	// BuilderVersion: Required. Immutable. Version of the builder which
+	// produced this build.
+	BuilderVersion string `json:"builderVersion,omitempty"`
+
+	// Signature: Signature of the build in occurrences pointing to this
+	// build note
+	// containing build details.
+	Signature *BuildSignature `json:"signature,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BuilderVersion") 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. "BuilderVersion") 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 *Build) MarshalJSON() ([]byte, error) {
+	type NoMethod Build
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildProvenance: Provenance of a build. Contains all information
+// needed to verify the full
+// details about the build from source to completion.
+type BuildProvenance struct {
+	// BuildOptions: Special options applied to this build. This is a
+	// catch-all field where
+	// build providers can enter any desired additional details.
+	BuildOptions map[string]string `json:"buildOptions,omitempty"`
+
+	// BuilderVersion: Version string of the builder at the time this build
+	// was executed.
+	BuilderVersion string `json:"builderVersion,omitempty"`
+
+	// BuiltArtifacts: Output of the build.
+	BuiltArtifacts []*Artifact `json:"builtArtifacts,omitempty"`
+
+	// Commands: Commands requested by the build.
+	Commands []*Command `json:"commands,omitempty"`
+
+	// CreateTime: Time at which the build was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Creator: E-mail address of the user who initiated this build. Note
+	// that this was the
+	// user's e-mail address at the time the build was initiated; this
+	// address may
+	// not represent the same end-user for all time.
+	Creator string `json:"creator,omitempty"`
+
+	// EndTime: Time at which execution of the build was finished.
+	EndTime string `json:"endTime,omitempty"`
+
+	// Id: Required. Unique identifier of the build.
+	Id string `json:"id,omitempty"`
+
+	// LogsUri: URI where any logs for this provenance were written.
+	LogsUri string `json:"logsUri,omitempty"`
+
+	// ProjectId: ID of the project.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// SourceProvenance: Details of the Source input to the build.
+	SourceProvenance *Source `json:"sourceProvenance,omitempty"`
+
+	// StartTime: Time at which execution of the build was started.
+	StartTime string `json:"startTime,omitempty"`
+
+	// TriggerId: Trigger identifier if the build was triggered
+	// automatically; empty if not.
+	TriggerId string `json:"triggerId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BuildOptions") 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. "BuildOptions") 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 *BuildProvenance) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildProvenance
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildSignature: Message encapsulating the signature of the verified
+// build.
+type BuildSignature struct {
+	// KeyId: An ID for the key used to sign. This could be either an ID for
+	// the key
+	// stored in `public_key` (such as the ID or fingerprint for a PGP key,
+	// or the
+	// CN for a cert), or a reference to an external key (such as a
+	// reference to a
+	// key in Cloud Key Management Service).
+	KeyId string `json:"keyId,omitempty"`
+
+	// KeyType: The type of the key, either stored in `public_key` or
+	// referenced in
+	// `key_id`.
+	//
+	// Possible values:
+	//   "KEY_TYPE_UNSPECIFIED" - `KeyType` is not set.
+	//   "PGP_ASCII_ARMORED" - `PGP ASCII Armored` public key.
+	//   "PKIX_PEM" - `PKIX PEM` public key.
+	KeyType string `json:"keyType,omitempty"`
+
+	// PublicKey: Public key of the builder which can be used to verify that
+	// the related
+	// findings are valid and unchanged. If `key_type` is empty, this
+	// defaults
+	// to PEM encoded public keys.
+	//
+	// This field may be empty if `key_id` references an external key.
+	//
+	// For Cloud Build based signatures, this is a PEM encoded public
+	// key. To verify the Cloud Build signature, place the contents of
+	// this field into a file (public.pem). The signature field is
+	// base64-decoded
+	// into its binary representation in signature.bin, and the provenance
+	// bytes
+	// from `BuildDetails` are base64-decoded into a binary representation
+	// in
+	// signed.bin. OpenSSL can then verify the signature:
+	// `openssl sha256 -verify public.pem -signature signature.bin
+	// signed.bin`
+	PublicKey string `json:"publicKey,omitempty"`
+
+	// Signature: Required. Signature of the related `BuildProvenance`. In
+	// JSON, this is
+	// base-64 encoded.
+	Signature string `json:"signature,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "KeyId") 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. "KeyId") 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 *BuildSignature) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildSignature
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CloudRepoSourceContext: A CloudRepoSourceContext denotes a particular
+// revision in a Google Cloud
+// Source Repo.
+type CloudRepoSourceContext struct {
+	// AliasContext: An alias, which may be a branch or tag.
+	AliasContext *AliasContext `json:"aliasContext,omitempty"`
+
+	// RepoId: The ID of the repo.
+	RepoId *RepoId `json:"repoId,omitempty"`
+
+	// RevisionId: A revision ID.
+	RevisionId string `json:"revisionId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AliasContext") 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. "AliasContext") 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 *CloudRepoSourceContext) MarshalJSON() ([]byte, error) {
+	type NoMethod CloudRepoSourceContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Command: Command describes a step performed as part of the build
+// pipeline.
+type Command struct {
+	// Args: Command-line arguments used when executing this command.
+	Args []string `json:"args,omitempty"`
+
+	// Dir: Working directory (relative to project source root) used when
+	// running this
+	// command.
+	Dir string `json:"dir,omitempty"`
+
+	// Env: Environment variables set before running this command.
+	Env []string `json:"env,omitempty"`
+
+	// Id: Optional unique identifier for this command, used in wait_for to
+	// reference
+	// this command as a dependency.
+	Id string `json:"id,omitempty"`
+
+	// Name: Required. Name of the command, as presented on the command
+	// line, or if the
+	// command is packaged as a Docker container, as presented to `docker
+	// pull`.
+	Name string `json:"name,omitempty"`
+
+	// WaitFor: The ID(s) of the command(s) that this command depends on.
+	WaitFor []string `json:"waitFor,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Args") 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. "Args") 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 *Command) MarshalJSON() ([]byte, error) {
+	type NoMethod Command
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Deployable: An artifact that can be deployed in some runtime.
+type Deployable struct {
+	// ResourceUri: Required. Resource URI for the artifact being deployed.
+	ResourceUri []string `json:"resourceUri,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ResourceUri") 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. "ResourceUri") 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 *Deployable) MarshalJSON() ([]byte, error) {
+	type NoMethod Deployable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Deployment: The period during which some deployable was active in a
+// runtime.
+type Deployment struct {
+	// Address: Address of the runtime element hosting this deployment.
+	Address string `json:"address,omitempty"`
+
+	// Config: Configuration used to create this deployment.
+	Config string `json:"config,omitempty"`
+
+	// DeployTime: Required. Beginning of the lifetime of this deployment.
+	DeployTime string `json:"deployTime,omitempty"`
+
+	// Platform: Platform hosting this deployment.
+	//
+	// Possible values:
+	//   "PLATFORM_UNSPECIFIED" - Unknown.
+	//   "GKE" - Google Container Engine.
+	//   "FLEX" - Google App Engine: Flexible Environment.
+	//   "CUSTOM" - Custom user-defined platform.
+	Platform string `json:"platform,omitempty"`
+
+	// ResourceUri: Output only. Resource URI for the artifact being
+	// deployed taken from
+	// the deployable field with the same name.
+	ResourceUri []string `json:"resourceUri,omitempty"`
+
+	// UndeployTime: End of the lifetime of this deployment.
+	UndeployTime string `json:"undeployTime,omitempty"`
+
+	// UserEmail: Identity of the user that triggered this deployment.
+	UserEmail string `json:"userEmail,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Address") 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. "Address") 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 *Deployment) MarshalJSON() ([]byte, error) {
+	type NoMethod Deployment
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Derived: Derived describes the derived image portion (Occurrence) of
+// the DockerImage
+// relationship. This image would be produced from a Dockerfile with
+// FROM
+// <DockerImage.Basis in attached Note>.
+type Derived struct {
+	// BaseResourceUrl: Output only. This contains the base image URL for
+	// the derived image
+	// occurrence.
+	BaseResourceUrl string `json:"baseResourceUrl,omitempty"`
+
+	// Distance: Output only. The number of layers by which this image
+	// differs from the
+	// associated image basis.
+	Distance int64 `json:"distance,omitempty"`
+
+	// Fingerprint: Required. The fingerprint of the derived image.
+	Fingerprint *Fingerprint `json:"fingerprint,omitempty"`
+
+	// LayerInfo: This contains layer-specific metadata, if populated it has
+	// length
+	// "distance" and is ordered with [distance] being the layer
+	// immediately
+	// following the base image and [1] being the final layer.
+	LayerInfo []*Layer `json:"layerInfo,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BaseResourceUrl") 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. "BaseResourceUrl") 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 *Derived) MarshalJSON() ([]byte, error) {
+	type NoMethod Derived
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Detail: Identifies all appearances of this vulnerability in the
+// package for a
+// specific distro/location. For example: glibc
+// in
+// cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
+type Detail struct {
+	// CpeUri: Required. The CPE URI in
+	// [cpe format](https://cpe.mitre.org/specification/) in which
+	// the
+	// vulnerability manifests. Examples include distro or storage location
+	// for
+	// vulnerable jar.
+	CpeUri string `json:"cpeUri,omitempty"`
+
+	// Description: A vendor-specific description of this note.
+	Description string `json:"description,omitempty"`
+
+	// FixedLocation: The fix for this specific package version.
+	FixedLocation *VulnerabilityLocation `json:"fixedLocation,omitempty"`
+
+	// IsObsolete: Whether this detail is obsolete. Occurrences are expected
+	// not to point to
+	// obsolete details.
+	IsObsolete bool `json:"isObsolete,omitempty"`
+
+	// MaxAffectedVersion: The max version of the package in which the
+	// vulnerability exists.
+	MaxAffectedVersion *Version `json:"maxAffectedVersion,omitempty"`
+
+	// MinAffectedVersion: The min version of the package in which the
+	// vulnerability exists.
+	MinAffectedVersion *Version `json:"minAffectedVersion,omitempty"`
+
+	// Package: Required. The name of the package where the vulnerability
+	// was found.
+	Package string `json:"package,omitempty"`
+
+	// PackageType: The type of package; whether native or non native(ruby
+	// gems, node.js
+	// packages etc).
+	PackageType string `json:"packageType,omitempty"`
+
+	// SeverityName: The severity (eg: distro assigned severity) for this
+	// vulnerability.
+	SeverityName string `json:"severityName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CpeUri") 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. "CpeUri") 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 *Detail) MarshalJSON() ([]byte, error) {
+	type NoMethod Detail
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Details: Details of an attestation occurrence.
+type Details struct {
+	// Attestation: Required. Attestation for the resource.
+	Attestation *Attestation `json:"attestation,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Attestation") 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. "Attestation") 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 *Details) MarshalJSON() ([]byte, error) {
+	type NoMethod Details
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Discovered: Provides information about the analysis status of a
+// discovered resource.
+type Discovered struct {
+	// AnalysisStatus: The status of discovery for the resource.
+	//
+	// Possible values:
+	//   "ANALYSIS_STATUS_UNSPECIFIED" - Unknown.
+	//   "PENDING" - Resource is known but no action has been taken yet.
+	//   "SCANNING" - Resource is being analyzed.
+	//   "FINISHED_SUCCESS" - Analysis has finished successfully.
+	//   "FINISHED_FAILED" - Analysis has finished unsuccessfully, the
+	// analysis itself is in a bad
+	// state.
+	//   "FINISHED_UNSUPPORTED" - The resource is known not to be supported
+	AnalysisStatus string `json:"analysisStatus,omitempty"`
+
+	// AnalysisStatusError: When an error is encountered this will contain a
+	// LocalizedMessage under
+	// details to show to the user. The LocalizedMessage is output only
+	// and
+	// populated by the API.
+	AnalysisStatusError *Status `json:"analysisStatusError,omitempty"`
+
+	// ContinuousAnalysis: Whether the resource is continuously analyzed.
+	//
+	// Possible values:
+	//   "CONTINUOUS_ANALYSIS_UNSPECIFIED" - Unknown.
+	//   "ACTIVE" - The resource is continuously analyzed.
+	//   "INACTIVE" - The resource is ignored for continuous analysis.
+	ContinuousAnalysis string `json:"continuousAnalysis,omitempty"`
+
+	// LastAnalysisTime: The last time continuous analysis was done for this
+	// resource.
+	// Deprecated, do not use.
+	LastAnalysisTime string `json:"lastAnalysisTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AnalysisStatus") 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. "AnalysisStatus") 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 *Discovered) MarshalJSON() ([]byte, error) {
+	type NoMethod Discovered
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Discovery: A note that indicates a type of analysis a provider would
+// perform. This note
+// exists in a provider's project. A `Discovery` occurrence is created
+// in a
+// consumer's project at the start of analysis.
+type Discovery struct {
+	// AnalysisKind: Required. Immutable. The kind of analysis that is
+	// handled by this
+	// discovery.
+	//
+	// Possible values:
+	//   "NOTE_KIND_UNSPECIFIED" - Unknown.
+	//   "VULNERABILITY" - The note and occurrence represent a package
+	// vulnerability.
+	//   "BUILD" - The note and occurrence assert build provenance.
+	//   "IMAGE" - This represents an image basis relationship.
+	//   "PACKAGE" - This represents a package installed via a package
+	// manager.
+	//   "DEPLOYMENT" - The note and occurrence track deployment events.
+	//   "DISCOVERY" - The note and occurrence track the initial discovery
+	// status of a resource.
+	//   "ATTESTATION" - This represents a logical "role" that can attest to
+	// artifacts.
+	AnalysisKind string `json:"analysisKind,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AnalysisKind") 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. "AnalysisKind") 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 *Discovery) MarshalJSON() ([]byte, error) {
+	type NoMethod Discovery
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Distribution: This represents a particular channel of distribution
+// for a given package.
+// E.g., Debian's jessie-backports dpkg mirror.
+type Distribution struct {
+	// Architecture: The CPU architecture for which packages in this
+	// distribution channel were
+	// built.
+	//
+	// Possible values:
+	//   "ARCHITECTURE_UNSPECIFIED" - Unknown architecture.
+	//   "X86" - X86 architecture.
+	//   "X64" - X64 architecture.
+	Architecture string `json:"architecture,omitempty"`
+
+	// CpeUri: Required. The cpe_uri in [CPE
+	// format](https://cpe.mitre.org/specification/)
+	// denoting the package manager version distributing a package.
+	CpeUri string `json:"cpeUri,omitempty"`
+
+	// Description: The distribution channel-specific description of this
+	// package.
+	Description string `json:"description,omitempty"`
+
+	// LatestVersion: The latest available version of this package in this
+	// distribution channel.
+	LatestVersion *Version `json:"latestVersion,omitempty"`
+
+	// Maintainer: A freeform string denoting the maintainer of this
+	// package.
+	Maintainer string `json:"maintainer,omitempty"`
+
+	// Url: The distribution channel-specific homepage for this package.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Architecture") 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. "Architecture") 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 *Distribution) MarshalJSON() ([]byte, error) {
+	type NoMethod Distribution
+	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:"-"`
+}
+
+// Expr: Represents an expression text. Example:
+//
+//     title: "User account presence"
+//     description: "Determines whether the request has a user account"
+//     expression: "size(request.user) > 0"
+type Expr struct {
+	// Description: An optional description of the expression. This is a
+	// longer text which
+	// describes the expression, e.g. when hovered over it in a UI.
+	Description string `json:"description,omitempty"`
+
+	// Expression: Textual representation of an expression in
+	// Common Expression Language syntax.
+	//
+	// The application context of the containing message determines
+	// which
+	// well-known feature set of CEL is supported.
+	Expression string `json:"expression,omitempty"`
+
+	// Location: An optional string indicating the location of the
+	// expression for error
+	// reporting, e.g. a file name and a position in the file.
+	Location string `json:"location,omitempty"`
+
+	// Title: An optional title for the expression, i.e. a short string
+	// describing
+	// its purpose. This can be used e.g. in UIs which allow to enter
+	// the
+	// expression.
+	Title string `json:"title,omitempty"`
+
+	// 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,
+	// 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. "Description") 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 *Expr) MarshalJSON() ([]byte, error) {
+	type NoMethod Expr
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// FileHashes: Container message for hashes of byte content of files,
+// used in source
+// messages to verify integrity of source input to the build.
+type FileHashes struct {
+	// FileHash: Required. Collection of file hashes.
+	FileHash []*Hash `json:"fileHash,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FileHash") 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. "FileHash") 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 *FileHashes) MarshalJSON() ([]byte, error) {
+	type NoMethod FileHashes
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Fingerprint: A set of properties that uniquely identify a given
+// Docker image.
+type Fingerprint struct {
+	// V1Name: Required. The layer ID of the final layer in the Docker
+	// image's v1
+	// representation.
+	V1Name string `json:"v1Name,omitempty"`
+
+	// V2Blob: Required. The ordered list of v2 blobs that represent a given
+	// image.
+	V2Blob []string `json:"v2Blob,omitempty"`
+
+	// V2Name: Output only. The name of the image's v2 blobs computed via:
+	//   [bottom] := v2_blobbottom := sha256(v2_blob[N] + " " +
+	// v2_name[N+1])
+	// Only the name of the final blob is kept.
+	V2Name string `json:"v2Name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "V1Name") 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. "V1Name") 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 *Fingerprint) MarshalJSON() ([]byte, error) {
+	type NoMethod Fingerprint
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// FixableTotalByDigest: Per resource and severity counts of fixable and
+// total vulnerabilites.
+type FixableTotalByDigest struct {
+	// FixableCount: The number of fixable vulnerabilities associated with
+	// this resource.
+	FixableCount int64 `json:"fixableCount,omitempty,string"`
+
+	// Resource: The affected resource.
+	Resource *Resource `json:"resource,omitempty"`
+
+	// Severity: The severity for this count. SEVERITY_UNSPECIFIED indicates
+	// total across
+	// all severities.
+	//
+	// Possible values:
+	//   "SEVERITY_UNSPECIFIED" - Unknown.
+	//   "MINIMAL" - Minimal severity.
+	//   "LOW" - Low severity.
+	//   "MEDIUM" - Medium severity.
+	//   "HIGH" - High severity.
+	//   "CRITICAL" - Critical severity.
+	Severity string `json:"severity,omitempty"`
+
+	// TotalCount: The total number of vulnerabilities associated with this
+	// resource.
+	TotalCount int64 `json:"totalCount,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "FixableCount") 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. "FixableCount") 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 *FixableTotalByDigest) MarshalJSON() ([]byte, error) {
+	type NoMethod FixableTotalByDigest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GerritSourceContext: A SourceContext referring to a Gerrit project.
+type GerritSourceContext struct {
+	// AliasContext: An alias, which may be a branch or tag.
+	AliasContext *AliasContext `json:"aliasContext,omitempty"`
+
+	// GerritProject: The full project name within the host. Projects may be
+	// nested, so
+	// "project/subproject" is a valid project name. The "repo name" is
+	// the
+	// hostURI/project.
+	GerritProject string `json:"gerritProject,omitempty"`
+
+	// HostUri: The URI of a running Gerrit instance.
+	HostUri string `json:"hostUri,omitempty"`
+
+	// RevisionId: A revision (commit) ID.
+	RevisionId string `json:"revisionId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AliasContext") 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. "AliasContext") 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 *GerritSourceContext) MarshalJSON() ([]byte, error) {
+	type NoMethod GerritSourceContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GetIamPolicyRequest: Request message for `GetIamPolicy` method.
+type GetIamPolicyRequest struct {
+}
+
+// GitSourceContext: A GitSourceContext denotes a particular revision in
+// a third party Git
+// repository (e.g., GitHub).
+type GitSourceContext struct {
+	// RevisionId: Git commit hash.
+	RevisionId string `json:"revisionId,omitempty"`
+
+	// Url: Git repository URL.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "RevisionId") 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. "RevisionId") 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 *GitSourceContext) MarshalJSON() ([]byte, error) {
+	type NoMethod GitSourceContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata: Metadata
+// for all operations used and required for all operations
+// that created by Container Analysis Providers
+type GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata struct {
+	// CreateTime: Output only. The time this operation was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// EndTime: Output only. The time that this operation was marked
+	// completed or failed.
+	EndTime string `json:"endTime,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") 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. "CreateTime") 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 *GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GrafeasV1beta1BuildDetails: Details of a build occurrence.
+type GrafeasV1beta1BuildDetails struct {
+	// Provenance: Required. The actual provenance for the build.
+	Provenance *BuildProvenance `json:"provenance,omitempty"`
+
+	// ProvenanceBytes: Serialized JSON representation of the provenance,
+	// used in generating the
+	// build signature in the corresponding build note. After verifying
+	// the
+	// signature, `provenance_bytes` can be unmarshalled and compared to
+	// the
+	// provenance to confirm that it is unchanged. A base64-encoded
+	// string
+	// representation of the provenance bytes is used for the signature in
+	// order
+	// to interoperate with openssl which expects this format for
+	// signature
+	// verification.
+	//
+	// The serialized form is captured both to avoid ambiguity in how
+	// the
+	// provenance is marshalled to json as well to prevent incompatibilities
+	// with
+	// future changes.
+	ProvenanceBytes string `json:"provenanceBytes,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Provenance") 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. "Provenance") 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 *GrafeasV1beta1BuildDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GrafeasV1beta1BuildDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GrafeasV1beta1DeploymentDetails: Details of a deployment occurrence.
+type GrafeasV1beta1DeploymentDetails struct {
+	// Deployment: Required. Deployment history for the resource.
+	Deployment *Deployment `json:"deployment,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Deployment") 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. "Deployment") 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 *GrafeasV1beta1DeploymentDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GrafeasV1beta1DeploymentDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GrafeasV1beta1DiscoveryDetails: Details of a discovery occurrence.
+type GrafeasV1beta1DiscoveryDetails struct {
+	// Discovered: Required. Analysis status for the discovered resource.
+	Discovered *Discovered `json:"discovered,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Discovered") 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. "Discovered") 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 *GrafeasV1beta1DiscoveryDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GrafeasV1beta1DiscoveryDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GrafeasV1beta1ImageDetails: Details of an image occurrence.
+type GrafeasV1beta1ImageDetails struct {
+	// DerivedImage: Required. Immutable. The child image derived from the
+	// base image.
+	DerivedImage *Derived `json:"derivedImage,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DerivedImage") 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. "DerivedImage") 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 *GrafeasV1beta1ImageDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GrafeasV1beta1ImageDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GrafeasV1beta1PackageDetails: Details of a package occurrence.
+type GrafeasV1beta1PackageDetails struct {
+	// Installation: Required. Where the package was installed.
+	Installation *Installation `json:"installation,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Installation") 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. "Installation") 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 *GrafeasV1beta1PackageDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GrafeasV1beta1PackageDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GrafeasV1beta1VulnerabilityDetails: Details of a vulnerability
+// Occurrence.
+type GrafeasV1beta1VulnerabilityDetails struct {
+	// CvssScore: Output only. The CVSS score of this vulnerability. CVSS
+	// score is on a
+	// scale of 0-10 where 0 indicates low severity and 10 indicates
+	// high
+	// severity.
+	CvssScore float64 `json:"cvssScore,omitempty"`
+
+	// LongDescription: Output only. A detailed description of this
+	// vulnerability.
+	LongDescription string `json:"longDescription,omitempty"`
+
+	// PackageIssue: Required. The set of affected locations and their fixes
+	// (if available)
+	// within the associated resource.
+	PackageIssue []*PackageIssue `json:"packageIssue,omitempty"`
+
+	// RelatedUrls: Output only. URLs related to this vulnerability.
+	RelatedUrls []*RelatedUrl `json:"relatedUrls,omitempty"`
+
+	// Severity: Output only. The note provider assigned Severity of the
+	// vulnerability.
+	//
+	// Possible values:
+	//   "SEVERITY_UNSPECIFIED" - Unknown.
+	//   "MINIMAL" - Minimal severity.
+	//   "LOW" - Low severity.
+	//   "MEDIUM" - Medium severity.
+	//   "HIGH" - High severity.
+	//   "CRITICAL" - Critical severity.
+	Severity string `json:"severity,omitempty"`
+
+	// ShortDescription: Output only. A one sentence description of this
+	// vulnerability.
+	ShortDescription string `json:"shortDescription,omitempty"`
+
+	// Type: The type of package; whether native or non native(ruby gems,
+	// node.js
+	// packages etc)
+	Type string `json:"type,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CvssScore") 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. "CvssScore") 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 *GrafeasV1beta1VulnerabilityDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GrafeasV1beta1VulnerabilityDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *GrafeasV1beta1VulnerabilityDetails) UnmarshalJSON(data []byte) error {
+	type NoMethod GrafeasV1beta1VulnerabilityDetails
+	var s1 struct {
+		CvssScore gensupport.JSONFloat64 `json:"cvssScore"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.CvssScore = float64(s1.CvssScore)
+	return nil
+}
+
+// Hash: Container message for hash values.
+type Hash struct {
+	// Type: Required. The type of hash that was performed.
+	//
+	// Possible values:
+	//   "HASH_TYPE_UNSPECIFIED" - Unknown.
+	//   "SHA256" - A SHA-256 hash.
+	Type string `json:"type,omitempty"`
+
+	// Value: Required. The hash value.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Type") 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. "Type") 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 *Hash) MarshalJSON() ([]byte, error) {
+	type NoMethod Hash
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Hint: This submessage provides human-readable hints about the purpose
+// of the
+// authority. Because the name of a note acts as its resource reference,
+// it is
+// important to disambiguate the canonical name of the Note (which might
+// be a
+// UUID for security purposes) from "readable" names more suitable for
+// debug
+// output. Note that these hints should not be used to look up
+// authorities in
+// security sensitive contexts, such as when looking up attestations
+// to
+// verify.
+type Hint struct {
+	// HumanReadableName: Required. The human readable name of this
+	// attestation authority, for
+	// example "qa".
+	HumanReadableName string `json:"humanReadableName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HumanReadableName")
+	// 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. "HumanReadableName") 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 *Hint) MarshalJSON() ([]byte, error) {
+	type NoMethod Hint
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Installation: This represents how a particular software package may
+// be installed on a
+// system.
+type Installation struct {
+	// Location: Required. All of the places within the filesystem versions
+	// of this package
+	// have been found.
+	Location []*Location `json:"location,omitempty"`
+
+	// Name: Output only. The name of the installed package.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Location") 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. "Location") 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 *Installation) MarshalJSON() ([]byte, error) {
+	type NoMethod Installation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Layer: Layer holds metadata specific to a layer of a Docker image.
+type Layer struct {
+	// Arguments: The recovered arguments to the Dockerfile directive.
+	Arguments string `json:"arguments,omitempty"`
+
+	// Directive: Required. The recovered Dockerfile directive used to
+	// construct this layer.
+	//
+	// Possible values:
+	//   "DIRECTIVE_UNSPECIFIED" - Default value for unsupported/missing
+	// directive.
+	//   "MAINTAINER" -
+	// https://docs.docker.com/reference/builder/#maintainer
+	//   "RUN" - https://docs.docker.com/reference/builder/#run
+	//   "CMD" - https://docs.docker.com/reference/builder/#cmd
+	//   "LABEL" - https://docs.docker.com/reference/builder/#label
+	//   "EXPOSE" - https://docs.docker.com/reference/builder/#expose
+	//   "ENV" - https://docs.docker.com/reference/builder/#env
+	//   "ADD" - https://docs.docker.com/reference/builder/#add
+	//   "COPY" - https://docs.docker.com/reference/builder/#copy
+	//   "ENTRYPOINT" -
+	// https://docs.docker.com/reference/builder/#entrypoint
+	//   "VOLUME" - https://docs.docker.com/reference/builder/#volume
+	//   "USER" - https://docs.docker.com/reference/builder/#user
+	//   "WORKDIR" - https://docs.docker.com/reference/builder/#workdir
+	//   "ARG" - https://docs.docker.com/reference/builder/#arg
+	//   "ONBUILD" - https://docs.docker.com/reference/builder/#onbuild
+	//   "STOPSIGNAL" -
+	// https://docs.docker.com/reference/builder/#stopsignal
+	//   "HEALTHCHECK" -
+	// https://docs.docker.com/reference/builder/#healthcheck
+	//   "SHELL" - https://docs.docker.com/reference/builder/#shell
+	Directive string `json:"directive,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *Layer) MarshalJSON() ([]byte, error) {
+	type NoMethod Layer
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListNoteOccurrencesResponse: Response for listing occurrences for a
+// note.
+type ListNoteOccurrencesResponse struct {
+	// NextPageToken: Token to provide to skip to a particular spot in the
+	// list.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Occurrences: The occurrences attached to the specified note.
+	Occurrences []*Occurrence `json:"occurrences,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 *ListNoteOccurrencesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListNoteOccurrencesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListNotesResponse: Response for listing notes.
+type ListNotesResponse struct {
+	// NextPageToken: The next pagination token in the list response. It
+	// should be used as
+	// `page_token` for the following request. An empty value means no
+	// more
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Notes: The notes requested.
+	Notes []*Note `json:"notes,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 *ListNotesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListNotesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListOccurrencesResponse: Response for listing occurrences.
+type ListOccurrencesResponse struct {
+	// NextPageToken: The next pagination token in the list response. It
+	// should be used as
+	// `page_token` for the following request. An empty value means no
+	// more
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Occurrences: The occurrences requested.
+	Occurrences []*Occurrence `json:"occurrences,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 *ListOccurrencesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod ListOccurrencesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ListScanConfigsResponse: Response for listing scan configurations.
+type ListScanConfigsResponse struct {
+	// NextPageToken: The next pagination token in the list response. It
+	// should be used as
+	// `page_token` for the following request. An empty value means no
+	// more
+	// results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// ScanConfigs: The scan configurations requested.
+	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)
+}
+
+// Location: An occurrence of a particular package installation found
+// within a system's
+// filesystem. E.g., glibc was found in `/var/lib/dpkg/status`.
+type Location struct {
+	// CpeUri: Required. The CPE URI in [CPE
+	// format](https://cpe.mitre.org/specification/)
+	// denoting the package manager version distributing a package.
+	CpeUri string `json:"cpeUri,omitempty"`
+
+	// Path: The path from which we gathered that this package/version is
+	// installed.
+	Path string `json:"path,omitempty"`
+
+	// Version: The version installed at this location.
+	Version *Version `json:"version,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CpeUri") 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. "CpeUri") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Location) MarshalJSON() ([]byte, error) {
+	type NoMethod Location
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Note: A type of analysis that can be done for a resource.
+type Note struct {
+	// AttestationAuthority: A note describing an attestation role.
+	AttestationAuthority *Authority `json:"attestationAuthority,omitempty"`
+
+	// BaseImage: A note describing a base image.
+	BaseImage *Basis `json:"baseImage,omitempty"`
+
+	// Build: A note describing build provenance for a verifiable build.
+	Build *Build `json:"build,omitempty"`
+
+	// CreateTime: Output only. The time this note was created. This field
+	// can be used as a
+	// filter in list requests.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Deployable: A note describing something that can be deployed.
+	Deployable *Deployable `json:"deployable,omitempty"`
+
+	// Discovery: A note describing the initial analysis of a resource.
+	Discovery *Discovery `json:"discovery,omitempty"`
+
+	// ExpirationTime: Time of expiration for this note. Empty if note does
+	// not expire.
+	ExpirationTime string `json:"expirationTime,omitempty"`
+
+	// Kind: Output only. The type of analysis. This field can be used as a
+	// filter in
+	// list requests.
+	//
+	// Possible values:
+	//   "NOTE_KIND_UNSPECIFIED" - Unknown.
+	//   "VULNERABILITY" - The note and occurrence represent a package
+	// vulnerability.
+	//   "BUILD" - The note and occurrence assert build provenance.
+	//   "IMAGE" - This represents an image basis relationship.
+	//   "PACKAGE" - This represents a package installed via a package
+	// manager.
+	//   "DEPLOYMENT" - The note and occurrence track deployment events.
+	//   "DISCOVERY" - The note and occurrence track the initial discovery
+	// status of a resource.
+	//   "ATTESTATION" - This represents a logical "role" that can attest to
+	// artifacts.
+	Kind string `json:"kind,omitempty"`
+
+	// LongDescription: A detailed description of this note.
+	LongDescription string `json:"longDescription,omitempty"`
+
+	// Name: Output only. The name of the note in the form
+	// of
+	// `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
+	Name string `json:"name,omitempty"`
+
+	// Package: A note describing a package hosted by various package
+	// managers.
+	Package *Package `json:"package,omitempty"`
+
+	// RelatedNoteNames: Other notes related to this note.
+	RelatedNoteNames []string `json:"relatedNoteNames,omitempty"`
+
+	// RelatedUrl: URLs associated with this note.
+	RelatedUrl []*RelatedUrl `json:"relatedUrl,omitempty"`
+
+	// ShortDescription: A one sentence description of this note.
+	ShortDescription string `json:"shortDescription,omitempty"`
+
+	// UpdateTime: Output only. The time this note was last updated. This
+	// field can be used as
+	// a filter in list requests.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// Vulnerability: A note describing a package vulnerability.
+	Vulnerability *Vulnerability `json:"vulnerability,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "AttestationAuthority") 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. "AttestationAuthority") 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 *Note) MarshalJSON() ([]byte, error) {
+	type NoMethod Note
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Occurrence: An instance of an analysis type that has been found on a
+// resource.
+type Occurrence struct {
+	// Attestation: Describes an attestation of an artifact.
+	Attestation *Details `json:"attestation,omitempty"`
+
+	// Build: Describes a verifiable build.
+	Build *GrafeasV1beta1BuildDetails `json:"build,omitempty"`
+
+	// CreateTime: Output only. The time this occurrence was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Deployment: Describes the deployment of an artifact on a runtime.
+	Deployment *GrafeasV1beta1DeploymentDetails `json:"deployment,omitempty"`
+
+	// DerivedImage: Describes how this resource derives from the basis in
+	// the associated
+	// note.
+	DerivedImage *GrafeasV1beta1ImageDetails `json:"derivedImage,omitempty"`
+
+	// Discovered: Describes when a resource was discovered.
+	Discovered *GrafeasV1beta1DiscoveryDetails `json:"discovered,omitempty"`
+
+	// Installation: Describes the installation of a package on the linked
+	// resource.
+	Installation *GrafeasV1beta1PackageDetails `json:"installation,omitempty"`
+
+	// Kind: Output only. This explicitly denotes which of the occurrence
+	// details are
+	// specified. This field can be used as a filter in list requests.
+	//
+	// Possible values:
+	//   "NOTE_KIND_UNSPECIFIED" - Unknown.
+	//   "VULNERABILITY" - The note and occurrence represent a package
+	// vulnerability.
+	//   "BUILD" - The note and occurrence assert build provenance.
+	//   "IMAGE" - This represents an image basis relationship.
+	//   "PACKAGE" - This represents a package installed via a package
+	// manager.
+	//   "DEPLOYMENT" - The note and occurrence track deployment events.
+	//   "DISCOVERY" - The note and occurrence track the initial discovery
+	// status of a resource.
+	//   "ATTESTATION" - This represents a logical "role" that can attest to
+	// artifacts.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Output only. The name of the occurrence in the form
+	// of
+	// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
+	Name string `json:"name,omitempty"`
+
+	// NoteName: Required. Immutable. The analysis note associated with this
+	// occurrence, in
+	// the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can
+	// be
+	// used as a filter in list requests.
+	NoteName string `json:"noteName,omitempty"`
+
+	// Remediation: A description of actions that can be taken to remedy the
+	// note.
+	Remediation string `json:"remediation,omitempty"`
+
+	// Resource: Required. Immutable. The resource for which the occurrence
+	// applies.
+	Resource *Resource `json:"resource,omitempty"`
+
+	// UpdateTime: Output only. The time this occurrence was last updated.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// Vulnerability: Describes a security vulnerability.
+	Vulnerability *GrafeasV1beta1VulnerabilityDetails `json:"vulnerability,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Attestation") 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. "Attestation") 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 *Occurrence) MarshalJSON() ([]byte, error) {
+	type NoMethod Occurrence
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Package: This represents a particular package that is distributed
+// over various
+// channels. E.g., glibc (aka libc6) is distributed by many, at
+// various
+// versions.
+type Package struct {
+	// Distribution: The various channels by which a package is distributed.
+	Distribution []*Distribution `json:"distribution,omitempty"`
+
+	// Name: Required. Immutable. The name of the package.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Distribution") 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. "Distribution") 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 *Package) MarshalJSON() ([]byte, error) {
+	type NoMethod Package
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PackageIssue: This message wraps a location affected by a
+// vulnerability and its
+// associated fix (if one is available).
+type PackageIssue struct {
+	// AffectedLocation: Required. The location of the vulnerability.
+	AffectedLocation *VulnerabilityLocation `json:"affectedLocation,omitempty"`
+
+	// FixedLocation: The location of the available fix for vulnerability.
+	FixedLocation *VulnerabilityLocation `json:"fixedLocation,omitempty"`
+
+	// SeverityName: The severity (e.g., distro assigned severity) for this
+	// vulnerability.
+	SeverityName string `json:"severityName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AffectedLocation") 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. "AffectedLocation") 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 *PackageIssue) MarshalJSON() ([]byte, error) {
+	type NoMethod PackageIssue
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// PgpSignedAttestation: An attestation wrapper with a PGP-compatible
+// signature. This message only
+// supports `ATTACHED` signatures, where the payload that is signed is
+// included
+// alongside the signature itself in the same file.
+type PgpSignedAttestation struct {
+	// ContentType: Type (for example schema) of the attestation payload
+	// that was signed.
+	// The verifier must ensure that the provided type is one that the
+	// verifier
+	// supports, and that the attestation payload is a valid instantiation
+	// of that
+	// type (for example by validating a JSON schema).
+	//
+	// Possible values:
+	//   "CONTENT_TYPE_UNSPECIFIED" - `ContentType` is not set.
+	//   "SIMPLE_SIGNING_JSON" - Atomic format attestation signature.
+	// See
+	// https://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276
+	// c3e0f64e77723e7/docs/atomic-signature.md
+	// The payload extracted from `signature` is a JSON blob conforming to
+	// the
+	// linked schema.
+	ContentType string `json:"contentType,omitempty"`
+
+	// PgpKeyId: The cryptographic fingerprint of the key used to generate
+	// the signature,
+	// as output by, e.g. `gpg --list-keys`. This should be the version 4,
+	// full
+	// 160-bit fingerprint, expressed as a 40 character hexidecimal string.
+	// See
+	// https://tools.ietf.org/html/rfc4880#section-12.2 for
+	// details.
+	// Implementations may choose to acknowledge "LONG", "SHORT", or
+	// other
+	// abbreviated key IDs, but only the full fingerprint is guaranteed to
+	// work.
+	// In gpg, the full fingerprint can be retrieved from the `fpr`
+	// field
+	// returned when calling --list-keys with --with-colons.  For
+	// example:
+	// ```
+	// gpg --with-colons --with-fingerprint --force-v4-certs \
+	//     --list-keys
+	// attester@example.com
+	// tru::1:1513631572:0:3:1:5
+	// pub:...<SNIP>...
+	// fpr:::
+	// ::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB:
+	// ```
+	// Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
+	PgpKeyId string `json:"pgpKeyId,omitempty"`
+
+	// Signature: Required. The raw content of the signature, as output by
+	// GNU Privacy Guard
+	// (GPG) or equivalent. Since this message only supports attached
+	// signatures,
+	// the payload that was signed must be attached. While the signature
+	// format
+	// supported is dependent on the verification implementation, currently
+	// only
+	// ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather
+	// than
+	// `--clearsign` to gpg) are supported. Concretely, `gpg --sign
+	// --armor
+	// --output=signature.gpg payload.json` will create the signature
+	// content
+	// expected in this field in `signature.gpg` for the
+	// `payload.json`
+	// attestation payload.
+	Signature string `json:"signature,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 *PgpSignedAttestation) MarshalJSON() ([]byte, error) {
+	type NoMethod PgpSignedAttestation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Policy: Defines an Identity and Access Management (IAM) policy. It is
+// used to
+// specify access control policies for Cloud Platform resources.
+//
+//
+// A `Policy` consists of a list of `bindings`. A `binding` binds a list
+// of
+// `members` to a `role`, where the members can be user accounts, Google
+// groups,
+// Google domains, and service accounts. A `role` is a named list of
+// permissions
+// defined by IAM.
+//
+// **JSON Example**
+//
+//     {
+//       "bindings": [
+//         {
+//           "role": "roles/owner",
+//           "members": [
+//             "user:mike@example.com",
+//             "group:admins@example.com",
+//             "domain:google.com",
+//
+// "serviceAccount:my-other-app@appspot.gserviceaccount.com"
+//           ]
+//         },
+//         {
+//           "role": "roles/viewer",
+//           "members": ["user:sean@example.com"]
+//         }
+//       ]
+//     }
+//
+// **YAML Example**
+//
+//     bindings:
+//     - members:
+//       - user:mike@example.com
+//       - group:admins@example.com
+//       - domain:google.com
+//       - serviceAccount:my-other-app@appspot.gserviceaccount.com
+//       role: roles/owner
+//     - members:
+//       - user:sean@example.com
+//       role: roles/viewer
+//
+//
+// For a description of IAM and its features, see the
+// [IAM developer's guide](https://cloud.google.com/iam/docs).
+type Policy struct {
+	// AuditConfigs: Specifies cloud audit logging configuration for this
+	// policy.
+	AuditConfigs []*AuditConfig `json:"auditConfigs,omitempty"`
+
+	// Bindings: Associates a list of `members` to a `role`.
+	// `bindings` with no members will result in an error.
+	Bindings []*Binding `json:"bindings,omitempty"`
+
+	// Etag: `etag` is used for optimistic concurrency control as a way to
+	// help
+	// prevent simultaneous updates of a policy from overwriting each
+	// other.
+	// It is strongly suggested that systems make use of the `etag` in
+	// the
+	// read-modify-write cycle to perform policy updates in order to avoid
+	// race
+	// conditions: An `etag` is returned in the response to `getIamPolicy`,
+	// and
+	// systems are expected to put that etag in the request to
+	// `setIamPolicy` to
+	// ensure that their change will be applied to the same version of the
+	// policy.
+	//
+	// If no `etag` is provided in the call to `setIamPolicy`, then the
+	// existing
+	// policy is overwritten blindly.
+	Etag string `json:"etag,omitempty"`
+
+	// Version: Deprecated.
+	Version int64 `json:"version,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "AuditConfigs") 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. "AuditConfigs") 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 *Policy) MarshalJSON() ([]byte, error) {
+	type NoMethod Policy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ProjectRepoId: Selects a repo using a Google Cloud Platform project
+// ID (e.g.,
+// winged-cargo-31) and a repo name within that project.
+type ProjectRepoId struct {
+	// ProjectId: The ID of the project.
+	ProjectId string `json:"projectId,omitempty"`
+
+	// RepoName: The name of the repo. Leave empty for the default repo.
+	RepoName string `json:"repoName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ProjectId") 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. "ProjectId") 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 *ProjectRepoId) MarshalJSON() ([]byte, error) {
+	type NoMethod ProjectRepoId
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RelatedUrl: Metadata for any related URL information.
+type RelatedUrl struct {
+	// Label: Label to describe usage of the URL.
+	Label string `json:"label,omitempty"`
+
+	// Url: Specific URL associated with the resource.
+	Url string `json:"url,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Label") 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. "Label") 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 *RelatedUrl) MarshalJSON() ([]byte, error) {
+	type NoMethod RelatedUrl
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RepoId: A unique identifier for a Cloud Repo.
+type RepoId struct {
+	// ProjectRepoId: A combination of a project ID and a repo name.
+	ProjectRepoId *ProjectRepoId `json:"projectRepoId,omitempty"`
+
+	// Uid: A server-assigned, globally unique identifier.
+	Uid string `json:"uid,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ProjectRepoId") 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. "ProjectRepoId") 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 *RepoId) MarshalJSON() ([]byte, error) {
+	type NoMethod RepoId
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Resource: An entity that can have metadata. For example, a Docker
+// image.
+type Resource struct {
+	// ContentHash: The hash of the resource content. For example, the
+	// Docker digest.
+	ContentHash *Hash `json:"contentHash,omitempty"`
+
+	// Name: The name of the resource. For example, the name of a Docker
+	// image -
+	// "Debian".
+	Name string `json:"name,omitempty"`
+
+	// Uri: Required. The unique URI of the resource. For
+	// example,
+	// `https://gcr.io/project/image@sha256:foo` for a Docker image.
+	Uri string `json:"uri,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ContentHash") 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. "ContentHash") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Resource) MarshalJSON() ([]byte, error) {
+	type NoMethod Resource
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ScanConfig: A scan configuration specifies whether Cloud components
+// in a project have a
+// particular type of analysis being run. For example, it can configure
+// whether
+// vulnerability scanning is being done on Docker images or not.
+type ScanConfig struct {
+	// CreateTime: Output only. The time this scan config was created.
+	CreateTime string `json:"createTime,omitempty"`
+
+	// Description: Output only. A human-readable description of what the
+	// scan configuration
+	// does.
+	Description string `json:"description,omitempty"`
+
+	// Enabled: Whether the scan is enabled.
+	Enabled bool `json:"enabled,omitempty"`
+
+	// Name: Output only. The name of the scan configuration in the form
+	// of
+	// `projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.
+	Name string `json:"name,omitempty"`
+
+	// UpdateTime: Output only. The time this scan config was last updated.
+	UpdateTime string `json:"updateTime,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CreateTime") 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. "CreateTime") 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)
+}
+
+// SetIamPolicyRequest: Request message for `SetIamPolicy` method.
+type SetIamPolicyRequest struct {
+	// Policy: REQUIRED: The complete policy to be applied to the
+	// `resource`. The size of
+	// the policy is limited to a few 10s of KB. An empty policy is a
+	// valid policy but certain Cloud Platform services (such as
+	// Projects)
+	// might reject them.
+	Policy *Policy `json:"policy,omitempty"`
+
+	// UpdateMask: OPTIONAL: A FieldMask specifying which fields of the
+	// policy to modify. Only
+	// the fields in the mask will be modified. If no mask is provided,
+	// the
+	// following default mask is used:
+	// paths: "bindings, etag"
+	// This field is only used by Cloud IAM.
+	UpdateMask string `json:"updateMask,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Policy") 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. "Policy") 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 *SetIamPolicyRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod SetIamPolicyRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Source: Source describes the location of the source used for the
+// build.
+type Source struct {
+	// AdditionalContexts: If provided, some of the source code used for the
+	// build may be found in
+	// these locations, in the case where the source repository had
+	// multiple
+	// remotes or submodules. This list will not include the context
+	// specified in
+	// the context field.
+	AdditionalContexts []*SourceContext `json:"additionalContexts,omitempty"`
+
+	// ArtifactStorageSourceUri: If provided, the input binary artifacts for
+	// the build came from this
+	// location.
+	ArtifactStorageSourceUri string `json:"artifactStorageSourceUri,omitempty"`
+
+	// Context: If provided, the source code used for the build came from
+	// this location.
+	Context *SourceContext `json:"context,omitempty"`
+
+	// FileHashes: Hash(es) of the build source, which can be used to verify
+	// that the original
+	// source integrity was maintained in the build.
+	//
+	// The keys to this map are file paths used as build source and the
+	// values
+	// contain the hash values for those files.
+	//
+	// If the build source came in a single package such as a gzipped
+	// tarfile
+	// (.tar.gz), the FileHash will be for the single path to that file.
+	FileHashes map[string]FileHashes `json:"fileHashes,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AdditionalContexts")
+	// 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. "AdditionalContexts") 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 *Source) MarshalJSON() ([]byte, error) {
+	type NoMethod Source
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// SourceContext: A SourceContext is a reference to a tree of files. A
+// SourceContext together
+// with a path point to a unique revision of a single file or directory.
+type SourceContext struct {
+	// CloudRepo: A SourceContext referring to a revision in a Google Cloud
+	// Source Repo.
+	CloudRepo *CloudRepoSourceContext `json:"cloudRepo,omitempty"`
+
+	// Gerrit: A SourceContext referring to a Gerrit project.
+	Gerrit *GerritSourceContext `json:"gerrit,omitempty"`
+
+	// Git: A SourceContext referring to any third party Git repo (e.g.,
+	// GitHub).
+	Git *GitSourceContext `json:"git,omitempty"`
+
+	// Labels: Labels with user defined metadata.
+	Labels map[string]string `json:"labels,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CloudRepo") 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. "CloudRepo") 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 *SourceContext) MarshalJSON() ([]byte, error) {
+	type NoMethod SourceContext
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// 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:
+//
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code, error
+// message,
+// and error details. The error code should be an enum value
+// of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The
+// error message should be a developer-facing English message that
+// helps
+// developers *understand* and *resolve* the error. If a localized
+// user-facing
+// error message is needed, put the localized message in the error
+// details or
+// localize it in the client. The optional error details may contain
+// arbitrary
+// information about the error. There is a predefined set of error
+// detail types
+// in the package `google.rpc` that can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error
+// model, but it
+// is not necessarily the actual wire format. When the `Status` message
+// is
+// exposed in different client libraries and different wire protocols,
+// it can be
+// mapped differently. For example, it will likely be mapped to some
+// exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety
+// of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different
+// environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the
+// client,
+//     it may embed the `Status` in the normal response to indicate the
+// partial
+//     errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step
+// may
+//     have a `Status` message for error reporting.
+//
+// - Batch operations. If a client uses batch request and batch
+// response, the
+//     `Status` message should be used directly inside batch response,
+// one for
+//     each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous
+// operation
+//     results in its response, the status of those operations should
+// be
+//     represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message
+// `Status` could
+//     be used directly after any stripping needed for security/privacy
+// reasons.
+type Status struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There is a
+	// common set of
+	// message types for APIs to use.
+	Details []googleapi.RawMessage `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any
+	// user-facing error message should be localized and sent in
+	// the
+	// google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,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 *Status) MarshalJSON() ([]byte, error) {
+	type NoMethod Status
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TestIamPermissionsRequest: Request message for `TestIamPermissions`
+// method.
+type TestIamPermissionsRequest struct {
+	// Permissions: The set of permissions to check for the `resource`.
+	// Permissions with
+	// wildcards (such as '*' or 'storage.*') are not allowed. For
+	// more
+	// information see
+	// [IAM
+	// Overview](https://cloud.google.com/iam/docs/overview#permissions).
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Permissions") 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. "Permissions") 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 *TestIamPermissionsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod TestIamPermissionsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TestIamPermissionsResponse: Response message for `TestIamPermissions`
+// method.
+type TestIamPermissionsResponse struct {
+	// Permissions: A subset of `TestPermissionsRequest.permissions` that
+	// the caller is
+	// allowed.
+	Permissions []string `json:"permissions,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Permissions") 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. "Permissions") 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 *TestIamPermissionsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod TestIamPermissionsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Version: Version contains structured information about the version of
+// a package.
+type Version struct {
+	// Epoch: Used to correct mistakes in the version numbering scheme.
+	Epoch int64 `json:"epoch,omitempty"`
+
+	// Kind: Required. Distinguishes between sentinel MIN/MAX versions and
+	// normal
+	// versions.
+	//
+	// Possible values:
+	//   "VERSION_KIND_UNSPECIFIED" - Unknown.
+	//   "NORMAL" - A standard package version.
+	//   "MINIMUM" - A special version representing negative infinity.
+	//   "MAXIMUM" - A special version representing positive infinity.
+	Kind string `json:"kind,omitempty"`
+
+	// Name: Required only when version kind is NORMAL. The main part of the
+	// version
+	// name.
+	Name string `json:"name,omitempty"`
+
+	// Revision: The iteration of the package build from the above version.
+	Revision string `json:"revision,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Epoch") 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. "Epoch") 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 *Version) MarshalJSON() ([]byte, error) {
+	type NoMethod Version
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// Vulnerability: Vulnerability provides metadata about a security
+// vulnerability in a Note.
+type Vulnerability struct {
+	// CvssScore: The CVSS score for this vulnerability.
+	CvssScore float64 `json:"cvssScore,omitempty"`
+
+	// Details: All information about the package to specifically identify
+	// this
+	// vulnerability. One entry per (version range and cpe_uri) the
+	// package
+	// vulnerability has manifested in.
+	Details []*Detail `json:"details,omitempty"`
+
+	// Severity: Note provider assigned impact of the vulnerability.
+	//
+	// Possible values:
+	//   "SEVERITY_UNSPECIFIED" - Unknown.
+	//   "MINIMAL" - Minimal severity.
+	//   "LOW" - Low severity.
+	//   "MEDIUM" - Medium severity.
+	//   "HIGH" - High severity.
+	//   "CRITICAL" - Critical severity.
+	Severity string `json:"severity,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CvssScore") 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. "CvssScore") 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 *Vulnerability) MarshalJSON() ([]byte, error) {
+	type NoMethod Vulnerability
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *Vulnerability) UnmarshalJSON(data []byte) error {
+	type NoMethod Vulnerability
+	var s1 struct {
+		CvssScore gensupport.JSONFloat64 `json:"cvssScore"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.CvssScore = float64(s1.CvssScore)
+	return nil
+}
+
+// VulnerabilityLocation: The location of the vulnerability.
+type VulnerabilityLocation struct {
+	// CpeUri: Required. The CPE URI in [cpe
+	// format](https://cpe.mitre.org/specification/)
+	// format. Examples include distro or storage location for vulnerable
+	// jar.
+	CpeUri string `json:"cpeUri,omitempty"`
+
+	// Package: Required. The package being described.
+	Package string `json:"package,omitempty"`
+
+	// Version: Required. The version of the package being described.
+	Version *Version `json:"version,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CpeUri") 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. "CpeUri") 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 *VulnerabilityLocation) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerabilityLocation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// VulnerabilityOccurrencesSummary: A summary of how many vulnerability
+// occurrences there are per resource and
+// severity type.
+type VulnerabilityOccurrencesSummary struct {
+	// Counts: A listing by resource of the number of fixable and total
+	// vulnerabilities.
+	Counts []*FixableTotalByDigest `json:"counts,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Counts") 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. "Counts") 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 *VulnerabilityOccurrencesSummary) MarshalJSON() ([]byte, error) {
+	type NoMethod VulnerabilityOccurrencesSummary
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "containeranalysis.projects.notes.batchCreate":
+
+type ProjectsNotesBatchCreateCall struct {
+	s                       *Service
+	parent                  string
+	batchcreatenotesrequest *BatchCreateNotesRequest
+	urlParams_              gensupport.URLParams
+	ctx_                    context.Context
+	header_                 http.Header
+}
+
+// BatchCreate: Creates new notes in batch.
+func (r *ProjectsNotesService) BatchCreate(parent string, batchcreatenotesrequest *BatchCreateNotesRequest) *ProjectsNotesBatchCreateCall {
+	c := &ProjectsNotesBatchCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.batchcreatenotesrequest = batchcreatenotesrequest
+	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 *ProjectsNotesBatchCreateCall) Fields(s ...googleapi.Field) *ProjectsNotesBatchCreateCall {
+	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 *ProjectsNotesBatchCreateCall) Context(ctx context.Context) *ProjectsNotesBatchCreateCall {
+	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 *ProjectsNotesBatchCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesBatchCreateCall) 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.batchcreatenotesrequest)
+	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, "v1beta1/{+parent}/notes:batchCreate")
+	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 "containeranalysis.projects.notes.batchCreate" call.
+// Exactly one of *BatchCreateNotesResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *BatchCreateNotesResponse.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 *ProjectsNotesBatchCreateCall) Do(opts ...googleapi.CallOption) (*BatchCreateNotesResponse, 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 := &BatchCreateNotesResponse{
+		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 new notes in batch.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes:batchCreate",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.batchCreate",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The name of the project in the form of `projects/[PROJECT_ID]`, under which\nthe notes are to be created.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/notes:batchCreate",
+	//   "request": {
+	//     "$ref": "BatchCreateNotesRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "BatchCreateNotesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.create":
+
+type ProjectsNotesCreateCall struct {
+	s          *Service
+	parent     string
+	note       *Note
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates a new note.
+func (r *ProjectsNotesService) Create(parent string, note *Note) *ProjectsNotesCreateCall {
+	c := &ProjectsNotesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.note = note
+	return c
+}
+
+// NoteId sets the optional parameter "noteId": The ID to use for this
+// note.
+func (c *ProjectsNotesCreateCall) NoteId(noteId string) *ProjectsNotesCreateCall {
+	c.urlParams_.Set("noteId", noteId)
+	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 *ProjectsNotesCreateCall) Fields(s ...googleapi.Field) *ProjectsNotesCreateCall {
+	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 *ProjectsNotesCreateCall) Context(ctx context.Context) *ProjectsNotesCreateCall {
+	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 *ProjectsNotesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesCreateCall) 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.note)
+	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, "v1beta1/{+parent}/notes")
+	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 "containeranalysis.projects.notes.create" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProjectsNotesCreateCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 note.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "noteId": {
+	//       "description": "The ID to use for this note.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The name of the project in the form of `projects/[PROJECT_ID]`, under which\nthe note is to be created.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/notes",
+	//   "request": {
+	//     "$ref": "Note"
+	//   },
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.delete":
+
+type ProjectsNotesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes the specified note.
+func (r *ProjectsNotesService) Delete(name string) *ProjectsNotesDeleteCall {
+	c := &ProjectsNotesDeleteCall{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 *ProjectsNotesDeleteCall) Fields(s ...googleapi.Field) *ProjectsNotesDeleteCall {
+	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 *ProjectsNotesDeleteCall) Context(ctx context.Context) *ProjectsNotesDeleteCall {
+	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 *ProjectsNotesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesDeleteCall) 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, "v1beta1/{+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 "containeranalysis.projects.notes.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 *ProjectsNotesDeleteCall) 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 the specified note.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "containeranalysis.projects.notes.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.get":
+
+type ProjectsNotesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the specified note.
+func (r *ProjectsNotesService) Get(name string) *ProjectsNotesGetCall {
+	c := &ProjectsNotesGetCall{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 *ProjectsNotesGetCall) Fields(s ...googleapi.Field) *ProjectsNotesGetCall {
+	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 *ProjectsNotesGetCall) IfNoneMatch(entityTag string) *ProjectsNotesGetCall {
+	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 *ProjectsNotesGetCall) Context(ctx context.Context) *ProjectsNotesGetCall {
+	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 *ProjectsNotesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesGetCall) 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, "v1beta1/{+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 "containeranalysis.projects.notes.get" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProjectsNotesGetCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 the specified note.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.notes.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.getIamPolicy":
+
+type ProjectsNotesGetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	getiampolicyrequest *GetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a note or an
+// occurrence resource.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a note or occurrence, respectively.
+//
+// The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]`
+// for
+// notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`
+// for
+// occurrences.
+func (r *ProjectsNotesService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ProjectsNotesGetIamPolicyCall {
+	c := &ProjectsNotesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.getiampolicyrequest = getiampolicyrequest
+	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 *ProjectsNotesGetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsNotesGetIamPolicyCall {
+	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 *ProjectsNotesGetIamPolicyCall) Context(ctx context.Context) *ProjectsNotesGetIamPolicyCall {
+	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 *ProjectsNotesGetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesGetIamPolicyCall) 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.getiampolicyrequest)
+	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, "v1beta1/{+resource}:getIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.notes.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsNotesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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 the access control policy for a note or an occurrence resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:getIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.getIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+resource}:getIamPolicy",
+	//   "request": {
+	//     "$ref": "GetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.list":
+
+type ProjectsNotesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists notes for the specified project.
+func (r *ProjectsNotesService) List(parent string) *ProjectsNotesListCall {
+	c := &ProjectsNotesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsNotesListCall) Filter(filter string) *ProjectsNotesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of notes to
+// return in the list. Must be positive. Max allowed page
+// size is 1000. If not specified, page size defaults to 20.
+func (c *ProjectsNotesListCall) PageSize(pageSize int64) *ProjectsNotesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProjectsNotesListCall) PageToken(pageToken string) *ProjectsNotesListCall {
+	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 *ProjectsNotesListCall) Fields(s ...googleapi.Field) *ProjectsNotesListCall {
+	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 *ProjectsNotesListCall) IfNoneMatch(entityTag string) *ProjectsNotesListCall {
+	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 *ProjectsNotesListCall) Context(ctx context.Context) *ProjectsNotesListCall {
+	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 *ProjectsNotesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesListCall) 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, "v1beta1/{+parent}/notes")
+	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 "containeranalysis.projects.notes.list" call.
+// Exactly one of *ListNotesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListNotesResponse.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 *ProjectsNotesListCall) Do(opts ...googleapi.CallOption) (*ListNotesResponse, 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 := &ListNotesResponse{
+		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 notes for the specified project.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.notes.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Number of notes to return in the list. Must be positive. Max allowed page\nsize is 1000. If not specified, page size defaults to 20.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The name of the project to list notes for in the form of\n`projects/[PROJECT_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/notes",
+	//   "response": {
+	//     "$ref": "ListNotesResponse"
+	//   },
+	//   "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 *ProjectsNotesListCall) Pages(ctx context.Context, f func(*ListNotesResponse) 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 "containeranalysis.projects.notes.patch":
+
+type ProjectsNotesPatchCall struct {
+	s          *Service
+	name       string
+	note       *Note
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates the specified note.
+func (r *ProjectsNotesService) Patch(name string, note *Note) *ProjectsNotesPatchCall {
+	c := &ProjectsNotesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.note = note
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": The fields to
+// update.
+func (c *ProjectsNotesPatchCall) UpdateMask(updateMask string) *ProjectsNotesPatchCall {
+	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 *ProjectsNotesPatchCall) Fields(s ...googleapi.Field) *ProjectsNotesPatchCall {
+	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 *ProjectsNotesPatchCall) Context(ctx context.Context) *ProjectsNotesPatchCall {
+	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 *ProjectsNotesPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesPatchCall) 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.note)
+	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, "v1beta1/{+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 "containeranalysis.projects.notes.patch" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProjectsNotesPatchCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 the specified note.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "containeranalysis.projects.notes.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the note in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "The fields to update.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "request": {
+	//     "$ref": "Note"
+	//   },
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.setIamPolicy":
+
+type ProjectsNotesSetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	setiampolicyrequest *SetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// SetIamPolicy: Sets the access control policy on the specified note or
+// occurrence.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a note or an occurrence, respectively.
+//
+// The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]`
+// for
+// notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`
+// for
+// occurrences.
+func (r *ProjectsNotesService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ProjectsNotesSetIamPolicyCall {
+	c := &ProjectsNotesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.setiampolicyrequest = setiampolicyrequest
+	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 *ProjectsNotesSetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsNotesSetIamPolicyCall {
+	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 *ProjectsNotesSetIamPolicyCall) Context(ctx context.Context) *ProjectsNotesSetIamPolicyCall {
+	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 *ProjectsNotesSetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesSetIamPolicyCall) 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.setiampolicyrequest)
+	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, "v1beta1/{+resource}:setIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.notes.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsNotesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Sets the access control policy on the specified note or occurrence.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or an occurrence, respectively.\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:setIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.setIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+resource}:setIamPolicy",
+	//   "request": {
+	//     "$ref": "SetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.testIamPermissions":
+
+type ProjectsNotesTestIamPermissionsCall struct {
+	s                         *Service
+	resource                  string
+	testiampermissionsrequest *TestIamPermissionsRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// TestIamPermissions: Returns the permissions that a caller has on the
+// specified note or
+// occurrence. Requires list permission on the project (for
+// example,
+// `containeranalysis.notes.list`).
+//
+// The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]`
+// for
+// notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`
+// for
+// occurrences.
+func (r *ProjectsNotesService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ProjectsNotesTestIamPermissionsCall {
+	c := &ProjectsNotesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.testiampermissionsrequest = testiampermissionsrequest
+	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 *ProjectsNotesTestIamPermissionsCall) Fields(s ...googleapi.Field) *ProjectsNotesTestIamPermissionsCall {
+	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 *ProjectsNotesTestIamPermissionsCall) Context(ctx context.Context) *ProjectsNotesTestIamPermissionsCall {
+	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 *ProjectsNotesTestIamPermissionsCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesTestIamPermissionsCall) 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.testiampermissionsrequest)
+	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, "v1beta1/{+resource}:testIamPermissions")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.notes.testIamPermissions" call.
+// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *TestIamPermissionsResponse.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 *ProjectsNotesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, 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 := &TestIamPermissionsResponse{
+		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": "Returns the permissions that a caller has on the specified note or\noccurrence. Requires list permission on the project (for example,\n`containeranalysis.notes.list`).\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:testIamPermissions",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.notes.testIamPermissions",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+resource}:testIamPermissions",
+	//   "request": {
+	//     "$ref": "TestIamPermissionsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "TestIamPermissionsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.notes.occurrences.list":
+
+type ProjectsNotesOccurrencesListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists occurrences referencing the specified note. Provider
+// projects can use
+// this method to get all occurrences across consumer projects
+// referencing the
+// specified note.
+func (r *ProjectsNotesOccurrencesService) List(name string) *ProjectsNotesOccurrencesListCall {
+	c := &ProjectsNotesOccurrencesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsNotesOccurrencesListCall) Filter(filter string) *ProjectsNotesOccurrencesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of
+// occurrences to return in the list.
+func (c *ProjectsNotesOccurrencesListCall) PageSize(pageSize int64) *ProjectsNotesOccurrencesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProjectsNotesOccurrencesListCall) PageToken(pageToken string) *ProjectsNotesOccurrencesListCall {
+	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 *ProjectsNotesOccurrencesListCall) Fields(s ...googleapi.Field) *ProjectsNotesOccurrencesListCall {
+	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 *ProjectsNotesOccurrencesListCall) IfNoneMatch(entityTag string) *ProjectsNotesOccurrencesListCall {
+	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 *ProjectsNotesOccurrencesListCall) Context(ctx context.Context) *ProjectsNotesOccurrencesListCall {
+	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 *ProjectsNotesOccurrencesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsNotesOccurrencesListCall) 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, "v1beta1/{+name}/occurrences")
+	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 "containeranalysis.projects.notes.occurrences.list" call.
+// Exactly one of *ListNoteOccurrencesResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *ListNoteOccurrencesResponse.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 *ProjectsNotesOccurrencesListCall) Do(opts ...googleapi.CallOption) (*ListNoteOccurrencesResponse, 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 := &ListNoteOccurrencesResponse{
+		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 occurrences referencing the specified note. Provider projects can use\nthis method to get all occurrences across consumer projects referencing the\nspecified note.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}/occurrences",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.notes.occurrences.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the note to list occurrences for in the form of\n`projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/notes/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Number of occurrences to return in the list.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}/occurrences",
+	//   "response": {
+	//     "$ref": "ListNoteOccurrencesResponse"
+	//   },
+	//   "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 *ProjectsNotesOccurrencesListCall) Pages(ctx context.Context, f func(*ListNoteOccurrencesResponse) 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 "containeranalysis.projects.occurrences.batchCreate":
+
+type ProjectsOccurrencesBatchCreateCall struct {
+	s                             *Service
+	parent                        string
+	batchcreateoccurrencesrequest *BatchCreateOccurrencesRequest
+	urlParams_                    gensupport.URLParams
+	ctx_                          context.Context
+	header_                       http.Header
+}
+
+// BatchCreate: Creates new occurrences in batch.
+func (r *ProjectsOccurrencesService) BatchCreate(parent string, batchcreateoccurrencesrequest *BatchCreateOccurrencesRequest) *ProjectsOccurrencesBatchCreateCall {
+	c := &ProjectsOccurrencesBatchCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.batchcreateoccurrencesrequest = batchcreateoccurrencesrequest
+	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 *ProjectsOccurrencesBatchCreateCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesBatchCreateCall {
+	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 *ProjectsOccurrencesBatchCreateCall) Context(ctx context.Context) *ProjectsOccurrencesBatchCreateCall {
+	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 *ProjectsOccurrencesBatchCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesBatchCreateCall) 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.batchcreateoccurrencesrequest)
+	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, "v1beta1/{+parent}/occurrences:batchCreate")
+	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 "containeranalysis.projects.occurrences.batchCreate" call.
+// Exactly one of *BatchCreateOccurrencesResponse or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *BatchCreateOccurrencesResponse.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 *ProjectsOccurrencesBatchCreateCall) Do(opts ...googleapi.CallOption) (*BatchCreateOccurrencesResponse, 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 := &BatchCreateOccurrencesResponse{
+		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 new occurrences in batch.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences:batchCreate",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.batchCreate",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The name of the project in the form of `projects/[PROJECT_ID]`, under which\nthe occurrences are to be created.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/occurrences:batchCreate",
+	//   "request": {
+	//     "$ref": "BatchCreateOccurrencesRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "BatchCreateOccurrencesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.create":
+
+type ProjectsOccurrencesCreateCall struct {
+	s          *Service
+	parent     string
+	occurrence *Occurrence
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Create: Creates a new occurrence.
+func (r *ProjectsOccurrencesService) Create(parent string, occurrence *Occurrence) *ProjectsOccurrencesCreateCall {
+	c := &ProjectsOccurrencesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.occurrence = occurrence
+	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 *ProjectsOccurrencesCreateCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesCreateCall {
+	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 *ProjectsOccurrencesCreateCall) Context(ctx context.Context) *ProjectsOccurrencesCreateCall {
+	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 *ProjectsOccurrencesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesCreateCall) 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.occurrence)
+	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, "v1beta1/{+parent}/occurrences")
+	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 "containeranalysis.projects.occurrences.create" call.
+// Exactly one of *Occurrence or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Occurrence.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 *ProjectsOccurrencesCreateCall) Do(opts ...googleapi.CallOption) (*Occurrence, 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 := &Occurrence{
+		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 occurrence.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The name of the project in the form of `projects/[PROJECT_ID]`, under which\nthe occurrence is to be created.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/occurrences",
+	//   "request": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "response": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.delete":
+
+type ProjectsOccurrencesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes the specified occurrence. For example, use this
+// method to delete an
+// occurrence when the occurrence is no longer applicable for the
+// given
+// resource.
+func (r *ProjectsOccurrencesService) Delete(name string) *ProjectsOccurrencesDeleteCall {
+	c := &ProjectsOccurrencesDeleteCall{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 *ProjectsOccurrencesDeleteCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesDeleteCall {
+	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 *ProjectsOccurrencesDeleteCall) Context(ctx context.Context) *ProjectsOccurrencesDeleteCall {
+	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 *ProjectsOccurrencesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesDeleteCall) 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, "v1beta1/{+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 "containeranalysis.projects.occurrences.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 *ProjectsOccurrencesDeleteCall) 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 the specified occurrence. For example, use this method to delete an\noccurrence when the occurrence is no longer applicable for the given\nresource.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "containeranalysis.projects.occurrences.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Empty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.get":
+
+type ProjectsOccurrencesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the specified occurrence.
+func (r *ProjectsOccurrencesService) Get(name string) *ProjectsOccurrencesGetCall {
+	c := &ProjectsOccurrencesGetCall{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 *ProjectsOccurrencesGetCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesGetCall {
+	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 *ProjectsOccurrencesGetCall) IfNoneMatch(entityTag string) *ProjectsOccurrencesGetCall {
+	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 *ProjectsOccurrencesGetCall) Context(ctx context.Context) *ProjectsOccurrencesGetCall {
+	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 *ProjectsOccurrencesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesGetCall) 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, "v1beta1/{+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 "containeranalysis.projects.occurrences.get" call.
+// Exactly one of *Occurrence or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Occurrence.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 *ProjectsOccurrencesGetCall) Do(opts ...googleapi.CallOption) (*Occurrence, 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 := &Occurrence{
+		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 the specified occurrence.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.occurrences.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.getIamPolicy":
+
+type ProjectsOccurrencesGetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	getiampolicyrequest *GetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a note or an
+// occurrence resource.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a note or occurrence, respectively.
+//
+// The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]`
+// for
+// notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`
+// for
+// occurrences.
+func (r *ProjectsOccurrencesService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ProjectsOccurrencesGetIamPolicyCall {
+	c := &ProjectsOccurrencesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.getiampolicyrequest = getiampolicyrequest
+	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 *ProjectsOccurrencesGetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesGetIamPolicyCall {
+	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 *ProjectsOccurrencesGetIamPolicyCall) Context(ctx context.Context) *ProjectsOccurrencesGetIamPolicyCall {
+	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 *ProjectsOccurrencesGetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesGetIamPolicyCall) 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.getiampolicyrequest)
+	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, "v1beta1/{+resource}:getIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.occurrences.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsOccurrencesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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 the access control policy for a note or an occurrence resource.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or occurrence, respectively.\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:getIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.getIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+resource}:getIamPolicy",
+	//   "request": {
+	//     "$ref": "GetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.getNotes":
+
+type ProjectsOccurrencesGetNotesCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetNotes: Gets the note attached to the specified occurrence.
+// Consumer projects can
+// use this method to get a note that belongs to a provider project.
+func (r *ProjectsOccurrencesService) GetNotes(name string) *ProjectsOccurrencesGetNotesCall {
+	c := &ProjectsOccurrencesGetNotesCall{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 *ProjectsOccurrencesGetNotesCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesGetNotesCall {
+	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 *ProjectsOccurrencesGetNotesCall) IfNoneMatch(entityTag string) *ProjectsOccurrencesGetNotesCall {
+	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 *ProjectsOccurrencesGetNotesCall) Context(ctx context.Context) *ProjectsOccurrencesGetNotesCall {
+	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 *ProjectsOccurrencesGetNotesCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesGetNotesCall) 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, "v1beta1/{+name}/notes")
+	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 "containeranalysis.projects.occurrences.getNotes" call.
+// Exactly one of *Note or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Note.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 *ProjectsOccurrencesGetNotesCall) Do(opts ...googleapi.CallOption) (*Note, 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 := &Note{
+		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 the note attached to the specified occurrence. Consumer projects can\nuse this method to get a note that belongs to a provider project.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}/notes",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.occurrences.getNotes",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}/notes",
+	//   "response": {
+	//     "$ref": "Note"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.getVulnerabilitySummary":
+
+type ProjectsOccurrencesGetVulnerabilitySummaryCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetVulnerabilitySummary: Gets a summary of the number and severity of
+// occurrences.
+func (r *ProjectsOccurrencesService) GetVulnerabilitySummary(parent string) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	c := &ProjectsOccurrencesGetVulnerabilitySummaryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsOccurrencesGetVulnerabilitySummaryCall) Filter(filter string) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	c.urlParams_.Set("filter", filter)
+	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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) IfNoneMatch(entityTag string) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) Context(ctx context.Context) *ProjectsOccurrencesGetVulnerabilitySummaryCall {
+	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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesGetVulnerabilitySummaryCall) 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, "v1beta1/{+parent}/occurrences:vulnerabilitySummary")
+	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 "containeranalysis.projects.occurrences.getVulnerabilitySummary" call.
+// Exactly one of *VulnerabilityOccurrencesSummary or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *VulnerabilityOccurrencesSummary.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 *ProjectsOccurrencesGetVulnerabilitySummaryCall) Do(opts ...googleapi.CallOption) (*VulnerabilityOccurrencesSummary, 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 := &VulnerabilityOccurrencesSummary{
+		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 summary of the number and severity of occurrences.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences:vulnerabilitySummary",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.occurrences.getVulnerabilitySummary",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The name of the project to get a vulnerability summary for in the form of\n`projects/[PROJECT_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/occurrences:vulnerabilitySummary",
+	//   "response": {
+	//     "$ref": "VulnerabilityOccurrencesSummary"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.list":
+
+type ProjectsOccurrencesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists occurrences for the specified project.
+func (r *ProjectsOccurrencesService) List(parent string) *ProjectsOccurrencesListCall {
+	c := &ProjectsOccurrencesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsOccurrencesListCall) Filter(filter string) *ProjectsOccurrencesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Number of
+// occurrences to return in the list. Must be positive. Max allowed
+// page size is 1000. If not specified, page size defaults to 20.
+func (c *ProjectsOccurrencesListCall) PageSize(pageSize int64) *ProjectsOccurrencesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+func (c *ProjectsOccurrencesListCall) PageToken(pageToken string) *ProjectsOccurrencesListCall {
+	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 *ProjectsOccurrencesListCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesListCall {
+	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 *ProjectsOccurrencesListCall) IfNoneMatch(entityTag string) *ProjectsOccurrencesListCall {
+	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 *ProjectsOccurrencesListCall) Context(ctx context.Context) *ProjectsOccurrencesListCall {
+	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 *ProjectsOccurrencesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesListCall) 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, "v1beta1/{+parent}/occurrences")
+	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 "containeranalysis.projects.occurrences.list" call.
+// Exactly one of *ListOccurrencesResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOccurrencesResponse.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 *ProjectsOccurrencesListCall) Do(opts ...googleapi.CallOption) (*ListOccurrencesResponse, 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 := &ListOccurrencesResponse{
+		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 occurrences for the specified project.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.occurrences.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "Number of occurrences to return in the list. Must be positive. Max allowed\npage size is 1000. If not specified, page size defaults to 20.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The name of the project to list occurrences for in the form of\n`projects/[PROJECT_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/occurrences",
+	//   "response": {
+	//     "$ref": "ListOccurrencesResponse"
+	//   },
+	//   "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 *ProjectsOccurrencesListCall) Pages(ctx context.Context, f func(*ListOccurrencesResponse) 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 "containeranalysis.projects.occurrences.patch":
+
+type ProjectsOccurrencesPatchCall struct {
+	s          *Service
+	name       string
+	occurrence *Occurrence
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Updates the specified occurrence.
+func (r *ProjectsOccurrencesService) Patch(name string, occurrence *Occurrence) *ProjectsOccurrencesPatchCall {
+	c := &ProjectsOccurrencesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.occurrence = occurrence
+	return c
+}
+
+// UpdateMask sets the optional parameter "updateMask": The fields to
+// update.
+func (c *ProjectsOccurrencesPatchCall) UpdateMask(updateMask string) *ProjectsOccurrencesPatchCall {
+	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 *ProjectsOccurrencesPatchCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesPatchCall {
+	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 *ProjectsOccurrencesPatchCall) Context(ctx context.Context) *ProjectsOccurrencesPatchCall {
+	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 *ProjectsOccurrencesPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesPatchCall) 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.occurrence)
+	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, "v1beta1/{+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 "containeranalysis.projects.occurrences.patch" call.
+// Exactly one of *Occurrence or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Occurrence.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 *ProjectsOccurrencesPatchCall) Do(opts ...googleapi.CallOption) (*Occurrence, 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 := &Occurrence{
+		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 the specified occurrence.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "containeranalysis.projects.occurrences.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the occurrence in the form of\n`projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "updateMask": {
+	//       "description": "The fields to update.",
+	//       "format": "google-fieldmask",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "request": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "response": {
+	//     "$ref": "Occurrence"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.setIamPolicy":
+
+type ProjectsOccurrencesSetIamPolicyCall struct {
+	s                   *Service
+	resource            string
+	setiampolicyrequest *SetIamPolicyRequest
+	urlParams_          gensupport.URLParams
+	ctx_                context.Context
+	header_             http.Header
+}
+
+// SetIamPolicy: Sets the access control policy on the specified note or
+// occurrence.
+// Requires `containeranalysis.notes.setIamPolicy`
+// or
+// `containeranalysis.occurrences.setIamPolicy` permission if the
+// resource is
+// a note or an occurrence, respectively.
+//
+// The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]`
+// for
+// notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`
+// for
+// occurrences.
+func (r *ProjectsOccurrencesService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ProjectsOccurrencesSetIamPolicyCall {
+	c := &ProjectsOccurrencesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.setiampolicyrequest = setiampolicyrequest
+	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 *ProjectsOccurrencesSetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesSetIamPolicyCall {
+	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 *ProjectsOccurrencesSetIamPolicyCall) Context(ctx context.Context) *ProjectsOccurrencesSetIamPolicyCall {
+	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 *ProjectsOccurrencesSetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesSetIamPolicyCall) 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.setiampolicyrequest)
+	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, "v1beta1/{+resource}:setIamPolicy")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.occurrences.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *ProjectsOccurrencesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Sets the access control policy on the specified note or occurrence.\nRequires `containeranalysis.notes.setIamPolicy` or\n`containeranalysis.occurrences.setIamPolicy` permission if the resource is\na note or an occurrence, respectively.\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:setIamPolicy",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.setIamPolicy",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+resource}:setIamPolicy",
+	//   "request": {
+	//     "$ref": "SetIamPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.occurrences.testIamPermissions":
+
+type ProjectsOccurrencesTestIamPermissionsCall struct {
+	s                         *Service
+	resource                  string
+	testiampermissionsrequest *TestIamPermissionsRequest
+	urlParams_                gensupport.URLParams
+	ctx_                      context.Context
+	header_                   http.Header
+}
+
+// TestIamPermissions: Returns the permissions that a caller has on the
+// specified note or
+// occurrence. Requires list permission on the project (for
+// example,
+// `containeranalysis.notes.list`).
+//
+// The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]`
+// for
+// notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`
+// for
+// occurrences.
+func (r *ProjectsOccurrencesService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ProjectsOccurrencesTestIamPermissionsCall {
+	c := &ProjectsOccurrencesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resource = resource
+	c.testiampermissionsrequest = testiampermissionsrequest
+	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 *ProjectsOccurrencesTestIamPermissionsCall) Fields(s ...googleapi.Field) *ProjectsOccurrencesTestIamPermissionsCall {
+	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 *ProjectsOccurrencesTestIamPermissionsCall) Context(ctx context.Context) *ProjectsOccurrencesTestIamPermissionsCall {
+	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 *ProjectsOccurrencesTestIamPermissionsCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOccurrencesTestIamPermissionsCall) 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.testiampermissionsrequest)
+	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, "v1beta1/{+resource}:testIamPermissions")
+	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{
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "containeranalysis.projects.occurrences.testIamPermissions" call.
+// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *TestIamPermissionsResponse.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 *ProjectsOccurrencesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, 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 := &TestIamPermissionsResponse{
+		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": "Returns the permissions that a caller has on the specified note or\noccurrence. Requires list permission on the project (for example,\n`containeranalysis.notes.list`).\n\nThe resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for\nnotes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for\noccurrences.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:testIamPermissions",
+	//   "httpMethod": "POST",
+	//   "id": "containeranalysis.projects.occurrences.testIamPermissions",
+	//   "parameterOrder": [
+	//     "resource"
+	//   ],
+	//   "parameters": {
+	//     "resource": {
+	//       "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/occurrences/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+resource}:testIamPermissions",
+	//   "request": {
+	//     "$ref": "TestIamPermissionsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "TestIamPermissionsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.scanConfigs.get":
+
+type ProjectsScanConfigsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the specified scan configuration.
+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, "v1beta1/{+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 "containeranalysis.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 the specified scan configuration.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.scanConfigs.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the scan configuration in the form of\n`projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "containeranalysis.projects.scanConfigs.list":
+
+type ProjectsScanConfigsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists scan configurations for the specified project.
+func (r *ProjectsScanConfigsService) List(parent string) *ProjectsScanConfigsListCall {
+	c := &ProjectsScanConfigsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// Filter sets the optional parameter "filter": The filter expression.
+func (c *ProjectsScanConfigsListCall) Filter(filter string) *ProjectsScanConfigsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The number of scan
+// configs to return in the list.
+func (c *ProjectsScanConfigsListCall) PageSize(pageSize int64) *ProjectsScanConfigsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": Token to provide
+// to skip to a particular spot in the list.
+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, "v1beta1/{+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 "containeranalysis.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 scan configurations for the specified project.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/scanConfigs",
+	//   "httpMethod": "GET",
+	//   "id": "containeranalysis.projects.scanConfigs.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The filter expression.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The number of scan configs to return in the list.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "Token to provide to skip to a particular spot in the list.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The name of the project to list scan configurations for in the form of\n`projects/[PROJECT_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+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 "containeranalysis.projects.scanConfigs.update":
+
+type ProjectsScanConfigsUpdateCall struct {
+	s          *Service
+	name       string
+	scanconfig *ScanConfig
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Update: Updates the specified scan configuration.
+func (r *ProjectsScanConfigsService) Update(name string, scanconfig *ScanConfig) *ProjectsScanConfigsUpdateCall {
+	c := &ProjectsScanConfigsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	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 *ProjectsScanConfigsUpdateCall) Fields(s ...googleapi.Field) *ProjectsScanConfigsUpdateCall {
+	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 *ProjectsScanConfigsUpdateCall) Context(ctx context.Context) *ProjectsScanConfigsUpdateCall {
+	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 *ProjectsScanConfigsUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsScanConfigsUpdateCall) 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, "v1beta1/{+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 "containeranalysis.projects.scanConfigs.update" 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 *ProjectsScanConfigsUpdateCall) 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 the specified scan configuration.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/scanConfigs/{scanConfigsId}",
+	//   "httpMethod": "PUT",
+	//   "id": "containeranalysis.projects.scanConfigs.update",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the scan configuration in the form of\n`projects/[PROJECT_ID]/scanConfigs/[SCAN_CONFIG_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/scanConfigs/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+name}",
+	//   "request": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "response": {
+	//     "$ref": "ScanConfig"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/content/v2.1/content-gen.go b/content/v2.1/content-gen.go
index 870ba17..bf21ad7 100644
--- a/content/v2.1/content-gen.go
+++ b/content/v2.1/content-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/content/v2/content-gen.go b/content/v2/content-gen.go
index 2c2f399..96e8663 100644
--- a/content/v2/content-gen.go
+++ b/content/v2/content-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/customsearch/v1/customsearch-gen.go b/customsearch/v1/customsearch-gen.go
index 87e779d..a9f832f 100644
--- a/customsearch/v1/customsearch-gen.go
+++ b/customsearch/v1/customsearch-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dataflow/v1b3/dataflow-gen.go b/dataflow/v1b3/dataflow-gen.go
index a45ae2f..cc73bda 100644
--- a/dataflow/v1b3/dataflow-gen.go
+++ b/dataflow/v1b3/dataflow-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dataproc/v1/dataproc-gen.go b/dataproc/v1/dataproc-gen.go
index 8898d06..0f1bb4c 100644
--- a/dataproc/v1/dataproc-gen.go
+++ b/dataproc/v1/dataproc-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dataproc/v1beta2/dataproc-gen.go b/dataproc/v1beta2/dataproc-gen.go
index 4e8eb7b..bade8d7 100644
--- a/dataproc/v1beta2/dataproc-gen.go
+++ b/dataproc/v1beta2/dataproc-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/datastore/v1/datastore-gen.go b/datastore/v1/datastore-gen.go
index e8662b7..998d5df 100644
--- a/datastore/v1/datastore-gen.go
+++ b/datastore/v1/datastore-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/datastore/v1beta1/datastore-gen.go b/datastore/v1beta1/datastore-gen.go
index 1564363..b2de8eb 100644
--- a/datastore/v1beta1/datastore-gen.go
+++ b/datastore/v1beta1/datastore-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/datastore/v1beta3/datastore-gen.go b/datastore/v1beta3/datastore-gen.go
index 239b21b..f16b976 100644
--- a/datastore/v1beta3/datastore-gen.go
+++ b/datastore/v1beta3/datastore-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/deploymentmanager/v0.alpha/deploymentmanager-gen.go b/deploymentmanager/v0.alpha/deploymentmanager-gen.go
index 2881b99..bd4e54c 100644
--- a/deploymentmanager/v0.alpha/deploymentmanager-gen.go
+++ b/deploymentmanager/v0.alpha/deploymentmanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/deploymentmanager/v2/deploymentmanager-gen.go b/deploymentmanager/v2/deploymentmanager-gen.go
index de9e110..ca4e4ec 100644
--- a/deploymentmanager/v2/deploymentmanager-gen.go
+++ b/deploymentmanager/v2/deploymentmanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/deploymentmanager/v2beta/deploymentmanager-gen.go b/deploymentmanager/v2beta/deploymentmanager-gen.go
index 56d43b9..44a10c7 100644
--- a/deploymentmanager/v2beta/deploymentmanager-gen.go
+++ b/deploymentmanager/v2beta/deploymentmanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dfareporting/v3.1/dfareporting-gen.go b/dfareporting/v3.1/dfareporting-gen.go
index 03ab223..87c9770 100644
--- a/dfareporting/v3.1/dfareporting-gen.go
+++ b/dfareporting/v3.1/dfareporting-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dfareporting/v3.2/dfareporting-gen.go b/dfareporting/v3.2/dfareporting-gen.go
index 83a6152..ca7848c 100644
--- a/dfareporting/v3.2/dfareporting-gen.go
+++ b/dfareporting/v3.2/dfareporting-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dialogflow/v2/dialogflow-gen.go b/dialogflow/v2/dialogflow-gen.go
index bb81c1b..6c06d73 100644
--- a/dialogflow/v2/dialogflow-gen.go
+++ b/dialogflow/v2/dialogflow-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dialogflow/v2beta1/dialogflow-gen.go b/dialogflow/v2beta1/dialogflow-gen.go
index cfa79a3..f134f20 100644
--- a/dialogflow/v2beta1/dialogflow-gen.go
+++ b/dialogflow/v2beta1/dialogflow-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/digitalassetlinks/v1/digitalassetlinks-gen.go b/digitalassetlinks/v1/digitalassetlinks-gen.go
index fd01b26..3b06469 100644
--- a/digitalassetlinks/v1/digitalassetlinks-gen.go
+++ b/digitalassetlinks/v1/digitalassetlinks-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/discovery/v1/discovery-gen.go b/discovery/v1/discovery-gen.go
index 324d968..3d1f306 100644
--- a/discovery/v1/discovery-gen.go
+++ b/discovery/v1/discovery-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dlp/v2/dlp-api.json b/dlp/v2/dlp-api.json
index 4515b40..6059f21 100644
--- a/dlp/v2/dlp-api.json
+++ b/dlp/v2/dlp-api.json
@@ -1486,7 +1486,7 @@
       }
     }
   },
-  "revision": "20181218",
+  "revision": "20181229",
   "rootUrl": "https://dlp.googleapis.com/",
   "schemas": {
     "GooglePrivacyDlpV2Action": {
@@ -2181,7 +2181,7 @@
       "type": "object"
     },
     "GooglePrivacyDlpV2CryptoHashConfig": {
-      "description": "Pseudonymization method that generates surrogates via cryptographic hashing.\nUses SHA-256.\nThe key size must be either 32 or 64 bytes.\nOutputs a base64 encoded representation of the hashed output\n(for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).\nCurrently, only string and integer values can be hashed.",
+      "description": "Pseudonymization method that generates surrogates via cryptographic hashing.\nUses SHA-256.\nThe key size must be either 32 or 64 bytes.\nOutputs a base64 encoded representation of the hashed output\n(for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).\nCurrently, only string and integer values can be hashed.\nSee https://cloud.google.com/dlp/docs/pseudonymization to learn more.",
       "id": "GooglePrivacyDlpV2CryptoHashConfig",
       "properties": {
         "cryptoKey": {
diff --git a/dlp/v2/dlp-gen.go b/dlp/v2/dlp-gen.go
index 93b5e01..a736902 100644
--- a/dlp/v2/dlp-gen.go
+++ b/dlp/v2/dlp-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -1626,6 +1626,7 @@
 // (for example,
 // L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=).
 // Currently, only string and integer values can be hashed.
+// See https://cloud.google.com/dlp/docs/pseudonymization to learn more.
 type GooglePrivacyDlpV2CryptoHashConfig struct {
 	// CryptoKey: The key used by the hash function.
 	CryptoKey *GooglePrivacyDlpV2CryptoKey `json:"cryptoKey,omitempty"`
diff --git a/dns/v1/dns-gen.go b/dns/v1/dns-gen.go
index 9bee01d..e1bb438 100644
--- a/dns/v1/dns-gen.go
+++ b/dns/v1/dns-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dns/v1beta2/dns-gen.go b/dns/v1beta2/dns-gen.go
index 1f9a71a..e4adbcf 100644
--- a/dns/v1beta2/dns-gen.go
+++ b/dns/v1beta2/dns-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/dns/v2beta1/dns-gen.go b/dns/v2beta1/dns-gen.go
index 9938ea7..69d738f 100644
--- a/dns/v2beta1/dns-gen.go
+++ b/dns/v2beta1/dns-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
index 0498a4d..b0d15d0 100644
--- a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
+++ b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/doubleclicksearch/v2/doubleclicksearch-gen.go b/doubleclicksearch/v2/doubleclicksearch-gen.go
index 6614f5f..43386b3 100644
--- a/doubleclicksearch/v2/doubleclicksearch-gen.go
+++ b/doubleclicksearch/v2/doubleclicksearch-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/drive/v2/drive-gen.go b/drive/v2/drive-gen.go
index e3a4f1a..eb210fb 100644
--- a/drive/v2/drive-gen.go
+++ b/drive/v2/drive-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/drive/v3/drive-gen.go b/drive/v3/drive-gen.go
index 2bd84ea..6a2b987 100644
--- a/drive/v3/drive-gen.go
+++ b/drive/v3/drive-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/driveactivity/v2/driveactivity-gen.go b/driveactivity/v2/driveactivity-gen.go
index 6a8e033..9c65c54 100644
--- a/driveactivity/v2/driveactivity-gen.go
+++ b/driveactivity/v2/driveactivity-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/file/v1beta1/file-gen.go b/file/v1beta1/file-gen.go
index 11ca1bc..46bdecf 100644
--- a/file/v1beta1/file-gen.go
+++ b/file/v1beta1/file-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/firebasedynamiclinks/v1/firebasedynamiclinks-api.json b/firebasedynamiclinks/v1/firebasedynamiclinks-api.json
index 220e734..f33a7de 100644
--- a/firebasedynamiclinks/v1/firebasedynamiclinks-api.json
+++ b/firebasedynamiclinks/v1/firebasedynamiclinks-api.json
@@ -223,7 +223,7 @@
       }
     }
   },
-  "revision": "20181127",
+  "revision": "20190105",
   "rootUrl": "https://firebasedynamiclinks.googleapis.com/",
   "schemas": {
     "AnalyticsInfo": {
@@ -772,6 +772,10 @@
           "description": "Optional invitation ID, for only invite typed requested FDL links.",
           "type": "string"
         },
+        "iosMinAppVersion": {
+          "description": "FDL input value of the \"\u0026imv=\" parameter, minimum app version to be\nreturned to Google Firebase SDK running on iOS-9.",
+          "type": "string"
+        },
         "resolvedLink": {
           "description": "The entire FDL, expanded from a short link. It is the same as the\nrequested_link, if it is long.",
           "type": "string"
diff --git a/firebasedynamiclinks/v1/firebasedynamiclinks-gen.go b/firebasedynamiclinks/v1/firebasedynamiclinks-gen.go
index 0a8da79..a0f67b1 100644
--- a/firebasedynamiclinks/v1/firebasedynamiclinks-gen.go
+++ b/firebasedynamiclinks/v1/firebasedynamiclinks-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -1001,6 +1001,11 @@
 	// FDL links.
 	InvitationId string `json:"invitationId,omitempty"`
 
+	// IosMinAppVersion: FDL input value of the "&imv=" parameter, minimum
+	// app version to be
+	// returned to Google Firebase SDK running on iOS-9.
+	IosMinAppVersion string `json:"iosMinAppVersion,omitempty"`
+
 	// ResolvedLink: The entire FDL, expanded from a short link. It is the
 	// same as the
 	// requested_link, if it is long.
diff --git a/firebasehosting/v1beta1/firebasehosting-gen.go b/firebasehosting/v1beta1/firebasehosting-gen.go
index 1611bf0..6bd4d6f 100644
--- a/firebasehosting/v1beta1/firebasehosting-gen.go
+++ b/firebasehosting/v1beta1/firebasehosting-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/firebaserules/v1/firebaserules-gen.go b/firebaserules/v1/firebaserules-gen.go
index 0d10bee..ffd0bcb 100644
--- a/firebaserules/v1/firebaserules-gen.go
+++ b/firebaserules/v1/firebaserules-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/firestore/v1/firestore-gen.go b/firestore/v1/firestore-gen.go
index b1715a2..cbcc61f 100644
--- a/firestore/v1/firestore-gen.go
+++ b/firestore/v1/firestore-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/firestore/v1beta1/firestore-gen.go b/firestore/v1beta1/firestore-gen.go
index 8afcefd..44b297c 100644
--- a/firestore/v1beta1/firestore-gen.go
+++ b/firestore/v1beta1/firestore-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/firestore/v1beta2/firestore-gen.go b/firestore/v1beta2/firestore-gen.go
index 6717513..ffd01df 100644
--- a/firestore/v1beta2/firestore-gen.go
+++ b/firestore/v1beta2/firestore-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/fitness/v1/fitness-gen.go b/fitness/v1/fitness-gen.go
index 9a1581b..b324754 100644
--- a/fitness/v1/fitness-gen.go
+++ b/fitness/v1/fitness-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/fusiontables/v1/fusiontables-gen.go b/fusiontables/v1/fusiontables-gen.go
index 610c6df..20a1304 100644
--- a/fusiontables/v1/fusiontables-gen.go
+++ b/fusiontables/v1/fusiontables-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/fusiontables/v2/fusiontables-gen.go b/fusiontables/v2/fusiontables-gen.go
index dadd3b9..81becb5 100644
--- a/fusiontables/v2/fusiontables-gen.go
+++ b/fusiontables/v2/fusiontables-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/games/v1/games-gen.go b/games/v1/games-gen.go
index 21802cd..c239ae1 100644
--- a/games/v1/games-gen.go
+++ b/games/v1/games-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/gamesconfiguration/v1configuration/gamesconfiguration-gen.go b/gamesconfiguration/v1configuration/gamesconfiguration-gen.go
index 1d395cd..85b212d 100644
--- a/gamesconfiguration/v1configuration/gamesconfiguration-gen.go
+++ b/gamesconfiguration/v1configuration/gamesconfiguration-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/gamesmanagement/v1management/gamesmanagement-gen.go b/gamesmanagement/v1management/gamesmanagement-gen.go
index 52319f1..7760a36 100644
--- a/gamesmanagement/v1management/gamesmanagement-gen.go
+++ b/gamesmanagement/v1management/gamesmanagement-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/genomics/v1/genomics-gen.go b/genomics/v1/genomics-gen.go
index 65636da..83fbe4a 100644
--- a/genomics/v1/genomics-gen.go
+++ b/genomics/v1/genomics-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/genomics/v1alpha2/genomics-gen.go b/genomics/v1alpha2/genomics-gen.go
index 62ef84b..3270fe6 100644
--- a/genomics/v1alpha2/genomics-gen.go
+++ b/genomics/v1alpha2/genomics-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/genomics/v2alpha1/genomics-gen.go b/genomics/v2alpha1/genomics-gen.go
index 7f58d01..a4bd954 100644
--- a/genomics/v2alpha1/genomics-gen.go
+++ b/genomics/v2alpha1/genomics-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/gmail/v1/gmail-gen.go b/gmail/v1/gmail-gen.go
index 8321aec..44be7d5 100644
--- a/gmail/v1/gmail-gen.go
+++ b/gmail/v1/gmail-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/groupsmigration/v1/groupsmigration-gen.go b/groupsmigration/v1/groupsmigration-gen.go
index ff6ff42..3751786 100644
--- a/groupsmigration/v1/groupsmigration-gen.go
+++ b/groupsmigration/v1/groupsmigration-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/groupssettings/v1/groupssettings-gen.go b/groupssettings/v1/groupssettings-gen.go
index 526c769..8cc0a5c 100644
--- a/groupssettings/v1/groupssettings-gen.go
+++ b/groupssettings/v1/groupssettings-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/iam/v1/iam-gen.go b/iam/v1/iam-gen.go
index 8645f10..04f7be0 100644
--- a/iam/v1/iam-gen.go
+++ b/iam/v1/iam-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/iamcredentials/v1/iamcredentials-gen.go b/iamcredentials/v1/iamcredentials-gen.go
index 6a17364..68437eb 100644
--- a/iamcredentials/v1/iamcredentials-gen.go
+++ b/iamcredentials/v1/iamcredentials-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/iap/v1/iap-gen.go b/iap/v1/iap-gen.go
index af65473..9f4c319 100644
--- a/iap/v1/iap-gen.go
+++ b/iap/v1/iap-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/iap/v1beta1/iap-gen.go b/iap/v1beta1/iap-gen.go
index b5f92f5..31c442b 100644
--- a/iap/v1beta1/iap-gen.go
+++ b/iap/v1beta1/iap-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/identitytoolkit/v3/identitytoolkit-gen.go b/identitytoolkit/v3/identitytoolkit-gen.go
index a47f266..3b7a487 100644
--- a/identitytoolkit/v3/identitytoolkit-gen.go
+++ b/identitytoolkit/v3/identitytoolkit-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/indexing/v3/indexing-gen.go b/indexing/v3/indexing-gen.go
index 3e018e8..a348a1b 100644
--- a/indexing/v3/indexing-gen.go
+++ b/indexing/v3/indexing-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/jobs/v2/jobs-gen.go b/jobs/v2/jobs-gen.go
index e6db2a5..46c946e 100644
--- a/jobs/v2/jobs-gen.go
+++ b/jobs/v2/jobs-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/jobs/v3/jobs-gen.go b/jobs/v3/jobs-gen.go
index c61c63a..06f39ed 100644
--- a/jobs/v3/jobs-gen.go
+++ b/jobs/v3/jobs-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/jobs/v3p1beta1/jobs-gen.go b/jobs/v3p1beta1/jobs-gen.go
index 4fe6252..29e80ca 100644
--- a/jobs/v3p1beta1/jobs-gen.go
+++ b/jobs/v3p1beta1/jobs-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/kgsearch/v1/kgsearch-gen.go b/kgsearch/v1/kgsearch-gen.go
index 1e464a0..f49030a 100644
--- a/kgsearch/v1/kgsearch-gen.go
+++ b/kgsearch/v1/kgsearch-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/language/v1/language-gen.go b/language/v1/language-gen.go
index 91ae564..4b5379f 100644
--- a/language/v1/language-gen.go
+++ b/language/v1/language-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/language/v1beta1/language-gen.go b/language/v1beta1/language-gen.go
index f7f5d95..57b42ea 100644
--- a/language/v1beta1/language-gen.go
+++ b/language/v1beta1/language-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/language/v1beta2/language-gen.go b/language/v1beta2/language-gen.go
index 3718284..6acc533 100644
--- a/language/v1beta2/language-gen.go
+++ b/language/v1beta2/language-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/libraryagent/v1/libraryagent-api.json b/libraryagent/v1/libraryagent-api.json
new file mode 100644
index 0000000..9996a6e
--- /dev/null
+++ b/libraryagent/v1/libraryagent-api.json
@@ -0,0 +1,363 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://libraryagent.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Libraryagent",
+  "description": "A simple Google Example Library API.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/docs/quota",
+  "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": "libraryagent:v1",
+  "kind": "discovery#restDescription",
+  "name": "libraryagent",
+  "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": {
+    "shelves": {
+      "methods": {
+        "get": {
+          "description": "Gets a shelf. Returns NOT_FOUND if the shelf does not exist.",
+          "flatPath": "v1/shelves/{shelvesId}",
+          "httpMethod": "GET",
+          "id": "libraryagent.shelves.get",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name of the shelf to retrieve.",
+              "location": "path",
+              "pattern": "^shelves/[^/]+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1/{+name}",
+          "response": {
+            "$ref": "GoogleExampleLibraryagentV1Shelf"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "list": {
+          "description": "Lists shelves. The order is unspecified but deterministic. Newly created\nshelves will not necessarily be added to the end of this list.",
+          "flatPath": "v1/shelves",
+          "httpMethod": "GET",
+          "id": "libraryagent.shelves.list",
+          "parameterOrder": [],
+          "parameters": {
+            "pageSize": {
+              "description": "Requested page size. Server may return fewer shelves than requested.\nIf unspecified, server will pick an appropriate default.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListShelvesResponse.next_page_token\nreturned from the previous call to `ListShelves` method.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1/shelves",
+          "response": {
+            "$ref": "GoogleExampleLibraryagentV1ListShelvesResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      },
+      "resources": {
+        "books": {
+          "methods": {
+            "borrow": {
+              "description": "Borrow a book from the library. Returns the book if it is borrowed\nsuccessfully. Returns NOT_FOUND if the book does not exist in the library.\nReturns quota exceeded error if the amount of books borrowed exceeds\nallocation quota in any dimensions.",
+              "flatPath": "v1/shelves/{shelvesId}/books/{booksId}:borrow",
+              "httpMethod": "POST",
+              "id": "libraryagent.shelves.books.borrow",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the book to borrow.",
+                  "location": "path",
+                  "pattern": "^shelves/[^/]+/books/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1/{+name}:borrow",
+              "response": {
+                "$ref": "GoogleExampleLibraryagentV1Book"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "get": {
+              "description": "Gets a book. Returns NOT_FOUND if the book does not exist.",
+              "flatPath": "v1/shelves/{shelvesId}/books/{booksId}",
+              "httpMethod": "GET",
+              "id": "libraryagent.shelves.books.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the book to retrieve.",
+                  "location": "path",
+                  "pattern": "^shelves/[^/]+/books/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1/{+name}",
+              "response": {
+                "$ref": "GoogleExampleLibraryagentV1Book"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists books in a shelf. The order is unspecified but deterministic. Newly\ncreated books will not necessarily be added to the end of this list.\nReturns NOT_FOUND if the shelf does not exist.",
+              "flatPath": "v1/shelves/{shelvesId}/books",
+              "httpMethod": "GET",
+              "id": "libraryagent.shelves.books.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "pageSize": {
+                  "description": "Requested page size. Server may return fewer books than requested.\nIf unspecified, server will pick an appropriate default.",
+                  "format": "int32",
+                  "location": "query",
+                  "type": "integer"
+                },
+                "pageToken": {
+                  "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBooksResponse.next_page_token.\nreturned from the previous call to `ListBooks` method.",
+                  "location": "query",
+                  "type": "string"
+                },
+                "parent": {
+                  "description": "The name of the shelf whose books we'd like to list.",
+                  "location": "path",
+                  "pattern": "^shelves/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1/{+parent}/books",
+              "response": {
+                "$ref": "GoogleExampleLibraryagentV1ListBooksResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "return": {
+              "description": "Return a book to the library. Returns the book if it is returned to the\nlibrary successfully.\nReturns error if the book does not belong to the library\nor the users didn't borrow before.",
+              "flatPath": "v1/shelves/{shelvesId}/books/{booksId}:return",
+              "httpMethod": "POST",
+              "id": "libraryagent.shelves.books.return",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the book to return.",
+                  "location": "path",
+                  "pattern": "^shelves/[^/]+/books/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1/{+name}:return",
+              "response": {
+                "$ref": "GoogleExampleLibraryagentV1Book"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20190107",
+  "rootUrl": "https://libraryagent.googleapis.com/",
+  "schemas": {
+    "GoogleExampleLibraryagentV1Book": {
+      "description": "A single book in the library.",
+      "id": "GoogleExampleLibraryagentV1Book",
+      "properties": {
+        "author": {
+          "description": "The name of the book author.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The resource name of the book.\nBook names have the form `shelves/{shelf_id}/books/{book_id}`.\nThe name is ignored when creating a book.",
+          "type": "string"
+        },
+        "read": {
+          "description": "Value indicating whether the book has been read.",
+          "type": "boolean"
+        },
+        "title": {
+          "description": "The title of the book.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleExampleLibraryagentV1ListBooksResponse": {
+      "description": "Response message for LibraryAgent.ListBooks.",
+      "id": "GoogleExampleLibraryagentV1ListBooksResponse",
+      "properties": {
+        "books": {
+          "description": "The list of books.",
+          "items": {
+            "$ref": "GoogleExampleLibraryagentV1Book"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "A token to retrieve next page of results.\nPass this value in the\nListBooksRequest.page_token\nfield in the subsequent call to `ListBooks` method to retrieve the next\npage of results.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleExampleLibraryagentV1ListShelvesResponse": {
+      "description": "Response message for LibraryAgent.ListShelves.",
+      "id": "GoogleExampleLibraryagentV1ListShelvesResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "A token to retrieve next page of results.\nPass this value in the\nListShelvesRequest.page_token\nfield in the subsequent call to `ListShelves` method to retrieve the next\npage of results.",
+          "type": "string"
+        },
+        "shelves": {
+          "description": "The list of shelves.",
+          "items": {
+            "$ref": "GoogleExampleLibraryagentV1Shelf"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleExampleLibraryagentV1Shelf": {
+      "description": "A Shelf contains a collection of books with a theme.",
+      "id": "GoogleExampleLibraryagentV1Shelf",
+      "properties": {
+        "name": {
+          "description": "Output only. The resource name of the shelf.\nShelf names have the form `shelves/{shelf_id}`.\nThe name is ignored when creating a shelf.",
+          "type": "string"
+        },
+        "theme": {
+          "description": "The theme of the shelf",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Library Agent API",
+  "version": "v1",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/libraryagent/v1/libraryagent-gen.go b/libraryagent/v1/libraryagent-gen.go
new file mode 100644
index 0000000..e8b0990
--- /dev/null
+++ b/libraryagent/v1/libraryagent-gen.go
@@ -0,0 +1,1203 @@
+// Copyright 2019 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package libraryagent provides access to the Library Agent API.
+//
+// See https://cloud.google.com/docs/quota
+//
+// Usage example:
+//
+//   import "google.golang.org/api/libraryagent/v1"
+//   ...
+//   libraryagentService, err := libraryagent.New(oauthHttpClient)
+package libraryagent // import "google.golang.org/api/libraryagent/v1"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "libraryagent:v1"
+const apiName = "libraryagent"
+const apiVersion = "v1"
+const basePath = "https://libraryagent.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"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Shelves = NewShelvesService(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Shelves *ShelvesService
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewShelvesService(s *Service) *ShelvesService {
+	rs := &ShelvesService{s: s}
+	rs.Books = NewShelvesBooksService(s)
+	return rs
+}
+
+type ShelvesService struct {
+	s *Service
+
+	Books *ShelvesBooksService
+}
+
+func NewShelvesBooksService(s *Service) *ShelvesBooksService {
+	rs := &ShelvesBooksService{s: s}
+	return rs
+}
+
+type ShelvesBooksService struct {
+	s *Service
+}
+
+// GoogleExampleLibraryagentV1Book: A single book in the library.
+type GoogleExampleLibraryagentV1Book struct {
+	// Author: The name of the book author.
+	Author string `json:"author,omitempty"`
+
+	// Name: The resource name of the book.
+	// Book names have the form `shelves/{shelf_id}/books/{book_id}`.
+	// The name is ignored when creating a book.
+	Name string `json:"name,omitempty"`
+
+	// Read: Value indicating whether the book has been read.
+	Read bool `json:"read,omitempty"`
+
+	// Title: The title of the book.
+	Title string `json:"title,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Author") 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. "Author") 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 *GoogleExampleLibraryagentV1Book) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleExampleLibraryagentV1Book
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleExampleLibraryagentV1ListBooksResponse: Response message for
+// LibraryAgent.ListBooks.
+type GoogleExampleLibraryagentV1ListBooksResponse struct {
+	// Books: The list of books.
+	Books []*GoogleExampleLibraryagentV1Book `json:"books,omitempty"`
+
+	// NextPageToken: A token to retrieve next page of results.
+	// Pass this value in the
+	// ListBooksRequest.page_token
+	// field in the subsequent call to `ListBooks` method to retrieve the
+	// next
+	// page of 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. "Books") 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. "Books") 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 *GoogleExampleLibraryagentV1ListBooksResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleExampleLibraryagentV1ListBooksResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleExampleLibraryagentV1ListShelvesResponse: Response message for
+// LibraryAgent.ListShelves.
+type GoogleExampleLibraryagentV1ListShelvesResponse struct {
+	// NextPageToken: A token to retrieve next page of results.
+	// Pass this value in the
+	// ListShelvesRequest.page_token
+	// field in the subsequent call to `ListShelves` method to retrieve the
+	// next
+	// page of results.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Shelves: The list of shelves.
+	Shelves []*GoogleExampleLibraryagentV1Shelf `json:"shelves,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 *GoogleExampleLibraryagentV1ListShelvesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleExampleLibraryagentV1ListShelvesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleExampleLibraryagentV1Shelf: A Shelf contains a collection of
+// books with a theme.
+type GoogleExampleLibraryagentV1Shelf struct {
+	// Name: Output only. The resource name of the shelf.
+	// Shelf names have the form `shelves/{shelf_id}`.
+	// The name is ignored when creating a shelf.
+	Name string `json:"name,omitempty"`
+
+	// Theme: The theme of the shelf
+	Theme string `json:"theme,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// 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 *GoogleExampleLibraryagentV1Shelf) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleExampleLibraryagentV1Shelf
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "libraryagent.shelves.get":
+
+type ShelvesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a shelf. Returns NOT_FOUND if the shelf does not exist.
+func (r *ShelvesService) Get(name string) *ShelvesGetCall {
+	c := &ShelvesGetCall{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 *ShelvesGetCall) Fields(s ...googleapi.Field) *ShelvesGetCall {
+	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 *ShelvesGetCall) IfNoneMatch(entityTag string) *ShelvesGetCall {
+	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 *ShelvesGetCall) Context(ctx context.Context) *ShelvesGetCall {
+	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 *ShelvesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ShelvesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "libraryagent.shelves.get" call.
+// Exactly one of *GoogleExampleLibraryagentV1Shelf or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *GoogleExampleLibraryagentV1Shelf.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 *ShelvesGetCall) Do(opts ...googleapi.CallOption) (*GoogleExampleLibraryagentV1Shelf, 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 := &GoogleExampleLibraryagentV1Shelf{
+		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 shelf. Returns NOT_FOUND if the shelf does not exist.",
+	//   "flatPath": "v1/shelves/{shelvesId}",
+	//   "httpMethod": "GET",
+	//   "id": "libraryagent.shelves.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the shelf to retrieve.",
+	//       "location": "path",
+	//       "pattern": "^shelves/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleExampleLibraryagentV1Shelf"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "libraryagent.shelves.list":
+
+type ShelvesListCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists shelves. The order is unspecified but deterministic.
+// Newly created
+// shelves will not necessarily be added to the end of this list.
+func (r *ShelvesService) List() *ShelvesListCall {
+	c := &ShelvesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Requested page size.
+// Server may return fewer shelves than requested.
+// If unspecified, server will pick an appropriate default.
+func (c *ShelvesListCall) PageSize(pageSize int64) *ShelvesListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A token
+// identifying a page of results the server should return.
+// Typically, this is the value
+// of
+// ListShelvesResponse.next_page_token
+// returned from the previous call to `ListShelves` method.
+func (c *ShelvesListCall) PageToken(pageToken string) *ShelvesListCall {
+	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 *ShelvesListCall) Fields(s ...googleapi.Field) *ShelvesListCall {
+	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 *ShelvesListCall) IfNoneMatch(entityTag string) *ShelvesListCall {
+	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 *ShelvesListCall) Context(ctx context.Context) *ShelvesListCall {
+	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 *ShelvesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ShelvesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/shelves")
+	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 "libraryagent.shelves.list" call.
+// Exactly one of *GoogleExampleLibraryagentV1ListShelvesResponse or
+// error will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *GoogleExampleLibraryagentV1ListShelvesResponse.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 *ShelvesListCall) Do(opts ...googleapi.CallOption) (*GoogleExampleLibraryagentV1ListShelvesResponse, 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 := &GoogleExampleLibraryagentV1ListShelvesResponse{
+		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 shelves. The order is unspecified but deterministic. Newly created\nshelves will not necessarily be added to the end of this list.",
+	//   "flatPath": "v1/shelves",
+	//   "httpMethod": "GET",
+	//   "id": "libraryagent.shelves.list",
+	//   "parameterOrder": [],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "Requested page size. Server may return fewer shelves than requested.\nIf unspecified, server will pick an appropriate default.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListShelvesResponse.next_page_token\nreturned from the previous call to `ListShelves` method.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/shelves",
+	//   "response": {
+	//     "$ref": "GoogleExampleLibraryagentV1ListShelvesResponse"
+	//   },
+	//   "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 *ShelvesListCall) Pages(ctx context.Context, f func(*GoogleExampleLibraryagentV1ListShelvesResponse) 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 "libraryagent.shelves.books.borrow":
+
+type ShelvesBooksBorrowCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Borrow: Borrow a book from the library. Returns the book if it is
+// borrowed
+// successfully. Returns NOT_FOUND if the book does not exist in the
+// library.
+// Returns quota exceeded error if the amount of books borrowed
+// exceeds
+// allocation quota in any dimensions.
+func (r *ShelvesBooksService) Borrow(name string) *ShelvesBooksBorrowCall {
+	c := &ShelvesBooksBorrowCall{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 *ShelvesBooksBorrowCall) Fields(s ...googleapi.Field) *ShelvesBooksBorrowCall {
+	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 *ShelvesBooksBorrowCall) Context(ctx context.Context) *ShelvesBooksBorrowCall {
+	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 *ShelvesBooksBorrowCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ShelvesBooksBorrowCall) 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, "v1/{+name}:borrow")
+	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 "libraryagent.shelves.books.borrow" call.
+// Exactly one of *GoogleExampleLibraryagentV1Book or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *GoogleExampleLibraryagentV1Book.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 *ShelvesBooksBorrowCall) Do(opts ...googleapi.CallOption) (*GoogleExampleLibraryagentV1Book, 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 := &GoogleExampleLibraryagentV1Book{
+		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": "Borrow a book from the library. Returns the book if it is borrowed\nsuccessfully. Returns NOT_FOUND if the book does not exist in the library.\nReturns quota exceeded error if the amount of books borrowed exceeds\nallocation quota in any dimensions.",
+	//   "flatPath": "v1/shelves/{shelvesId}/books/{booksId}:borrow",
+	//   "httpMethod": "POST",
+	//   "id": "libraryagent.shelves.books.borrow",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the book to borrow.",
+	//       "location": "path",
+	//       "pattern": "^shelves/[^/]+/books/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:borrow",
+	//   "response": {
+	//     "$ref": "GoogleExampleLibraryagentV1Book"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "libraryagent.shelves.books.get":
+
+type ShelvesBooksGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets a book. Returns NOT_FOUND if the book does not exist.
+func (r *ShelvesBooksService) Get(name string) *ShelvesBooksGetCall {
+	c := &ShelvesBooksGetCall{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 *ShelvesBooksGetCall) Fields(s ...googleapi.Field) *ShelvesBooksGetCall {
+	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 *ShelvesBooksGetCall) IfNoneMatch(entityTag string) *ShelvesBooksGetCall {
+	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 *ShelvesBooksGetCall) Context(ctx context.Context) *ShelvesBooksGetCall {
+	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 *ShelvesBooksGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ShelvesBooksGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "libraryagent.shelves.books.get" call.
+// Exactly one of *GoogleExampleLibraryagentV1Book or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *GoogleExampleLibraryagentV1Book.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 *ShelvesBooksGetCall) Do(opts ...googleapi.CallOption) (*GoogleExampleLibraryagentV1Book, 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 := &GoogleExampleLibraryagentV1Book{
+		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 book. Returns NOT_FOUND if the book does not exist.",
+	//   "flatPath": "v1/shelves/{shelvesId}/books/{booksId}",
+	//   "httpMethod": "GET",
+	//   "id": "libraryagent.shelves.books.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the book to retrieve.",
+	//       "location": "path",
+	//       "pattern": "^shelves/[^/]+/books/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleExampleLibraryagentV1Book"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "libraryagent.shelves.books.list":
+
+type ShelvesBooksListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists books in a shelf. The order is unspecified but
+// deterministic. Newly
+// created books will not necessarily be added to the end of this
+// list.
+// Returns NOT_FOUND if the shelf does not exist.
+func (r *ShelvesBooksService) List(parent string) *ShelvesBooksListCall {
+	c := &ShelvesBooksListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": Requested page size.
+// Server may return fewer books than requested.
+// If unspecified, server will pick an appropriate default.
+func (c *ShelvesBooksListCall) PageSize(pageSize int64) *ShelvesBooksListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A token
+// identifying a page of results the server should return.
+// Typically, this is the value
+// of
+// ListBooksResponse.next_page_token.
+// returned from the previous call to `ListBooks` method.
+func (c *ShelvesBooksListCall) PageToken(pageToken string) *ShelvesBooksListCall {
+	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 *ShelvesBooksListCall) Fields(s ...googleapi.Field) *ShelvesBooksListCall {
+	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 *ShelvesBooksListCall) IfNoneMatch(entityTag string) *ShelvesBooksListCall {
+	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 *ShelvesBooksListCall) Context(ctx context.Context) *ShelvesBooksListCall {
+	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 *ShelvesBooksListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ShelvesBooksListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/books")
+	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 "libraryagent.shelves.books.list" call.
+// Exactly one of *GoogleExampleLibraryagentV1ListBooksResponse or error
+// will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *GoogleExampleLibraryagentV1ListBooksResponse.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 *ShelvesBooksListCall) Do(opts ...googleapi.CallOption) (*GoogleExampleLibraryagentV1ListBooksResponse, 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 := &GoogleExampleLibraryagentV1ListBooksResponse{
+		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 books in a shelf. The order is unspecified but deterministic. Newly\ncreated books will not necessarily be added to the end of this list.\nReturns NOT_FOUND if the shelf does not exist.",
+	//   "flatPath": "v1/shelves/{shelvesId}/books",
+	//   "httpMethod": "GET",
+	//   "id": "libraryagent.shelves.books.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "pageSize": {
+	//       "description": "Requested page size. Server may return fewer books than requested.\nIf unspecified, server will pick an appropriate default.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBooksResponse.next_page_token.\nreturned from the previous call to `ListBooks` method.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "parent": {
+	//       "description": "The name of the shelf whose books we'd like to list.",
+	//       "location": "path",
+	//       "pattern": "^shelves/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+parent}/books",
+	//   "response": {
+	//     "$ref": "GoogleExampleLibraryagentV1ListBooksResponse"
+	//   },
+	//   "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 *ShelvesBooksListCall) Pages(ctx context.Context, f func(*GoogleExampleLibraryagentV1ListBooksResponse) 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 "libraryagent.shelves.books.return":
+
+type ShelvesBooksReturnCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Return: Return a book to the library. Returns the book if it is
+// returned to the
+// library successfully.
+// Returns error if the book does not belong to the library
+// or the users didn't borrow before.
+func (r *ShelvesBooksService) Return(name string) *ShelvesBooksReturnCall {
+	c := &ShelvesBooksReturnCall{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 *ShelvesBooksReturnCall) Fields(s ...googleapi.Field) *ShelvesBooksReturnCall {
+	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 *ShelvesBooksReturnCall) Context(ctx context.Context) *ShelvesBooksReturnCall {
+	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 *ShelvesBooksReturnCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ShelvesBooksReturnCall) 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, "v1/{+name}:return")
+	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 "libraryagent.shelves.books.return" call.
+// Exactly one of *GoogleExampleLibraryagentV1Book or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *GoogleExampleLibraryagentV1Book.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 *ShelvesBooksReturnCall) Do(opts ...googleapi.CallOption) (*GoogleExampleLibraryagentV1Book, 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 := &GoogleExampleLibraryagentV1Book{
+		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": "Return a book to the library. Returns the book if it is returned to the\nlibrary successfully.\nReturns error if the book does not belong to the library\nor the users didn't borrow before.",
+	//   "flatPath": "v1/shelves/{shelvesId}/books/{booksId}:return",
+	//   "httpMethod": "POST",
+	//   "id": "libraryagent.shelves.books.return",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the book to return.",
+	//       "location": "path",
+	//       "pattern": "^shelves/[^/]+/books/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:return",
+	//   "response": {
+	//     "$ref": "GoogleExampleLibraryagentV1Book"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/licensing/v1/licensing-gen.go b/licensing/v1/licensing-gen.go
index 708c580..98268fa 100644
--- a/licensing/v1/licensing-gen.go
+++ b/licensing/v1/licensing-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/logging/v2/logging-gen.go b/logging/v2/logging-gen.go
index 9eab8ea..ebadc6d 100644
--- a/logging/v2/logging-gen.go
+++ b/logging/v2/logging-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/logging/v2beta1/logging-gen.go b/logging/v2beta1/logging-gen.go
index cc1a9e6..83e0c16 100644
--- a/logging/v2beta1/logging-gen.go
+++ b/logging/v2beta1/logging-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/manufacturers/v1/manufacturers-gen.go b/manufacturers/v1/manufacturers-gen.go
index 5ace45a..52c0f18 100644
--- a/manufacturers/v1/manufacturers-gen.go
+++ b/manufacturers/v1/manufacturers-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/mirror/v1/mirror-gen.go b/mirror/v1/mirror-gen.go
index bd90b8a..5aa5baa 100644
--- a/mirror/v1/mirror-gen.go
+++ b/mirror/v1/mirror-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/ml/v1/ml-gen.go b/ml/v1/ml-gen.go
index 2d9bc91..7c1a921 100644
--- a/ml/v1/ml-gen.go
+++ b/ml/v1/ml-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/monitoring/v1/monitoring-gen.go b/monitoring/v1/monitoring-gen.go
index 2e8d488..cc0cdc8 100644
--- a/monitoring/v1/monitoring-gen.go
+++ b/monitoring/v1/monitoring-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/monitoring/v3/monitoring-gen.go b/monitoring/v3/monitoring-gen.go
index f9bc2fa..1d1dad1 100644
--- a/monitoring/v3/monitoring-gen.go
+++ b/monitoring/v3/monitoring-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/oauth2/v1/oauth2-gen.go b/oauth2/v1/oauth2-gen.go
index 66bad73..e0da4f7 100644
--- a/oauth2/v1/oauth2-gen.go
+++ b/oauth2/v1/oauth2-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/oauth2/v2/oauth2-gen.go b/oauth2/v2/oauth2-gen.go
index 4a1eea3..11df4db 100644
--- a/oauth2/v2/oauth2-gen.go
+++ b/oauth2/v2/oauth2-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/oslogin/v1/oslogin-gen.go b/oslogin/v1/oslogin-gen.go
index 73030c3..dcc6c7b 100644
--- a/oslogin/v1/oslogin-gen.go
+++ b/oslogin/v1/oslogin-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/oslogin/v1alpha/oslogin-gen.go b/oslogin/v1alpha/oslogin-gen.go
index aa398af..043ede2 100644
--- a/oslogin/v1alpha/oslogin-gen.go
+++ b/oslogin/v1alpha/oslogin-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/oslogin/v1beta/oslogin-api.json b/oslogin/v1beta/oslogin-api.json
index 90041a1..7154a6f 100644
--- a/oslogin/v1beta/oslogin-api.json
+++ b/oslogin/v1beta/oslogin-api.json
@@ -23,7 +23,7 @@
   "canonicalName": "Cloud OS Login",
   "description": "Manages OS login configuration for Google account users.",
   "discoveryVersion": "v1",
-  "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
+  "documentationLink": "https://cloud.google.com/compute/docs/oslogin/",
   "fullyEncodeReservedExpansion": true,
   "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
@@ -313,7 +313,7 @@
       }
     }
   },
-  "revision": "20181023",
+  "revision": "20190107",
   "rootUrl": "https://oslogin.googleapis.com/",
   "schemas": {
     "Empty": {
diff --git a/oslogin/v1beta/oslogin-gen.go b/oslogin/v1beta/oslogin-gen.go
index 9742db2..a8b26f8 100644
--- a/oslogin/v1beta/oslogin-gen.go
+++ b/oslogin/v1beta/oslogin-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -8,7 +8,7 @@
 //
 // This package is DEPRECATED. Use package cloud.google.com/go/oslogin/apiv1 instead.
 //
-// See https://cloud.google.com/compute/docs/oslogin/rest/
+// See https://cloud.google.com/compute/docs/oslogin/
 //
 // Usage example:
 //
diff --git a/pagespeedonline/v1/pagespeedonline-gen.go b/pagespeedonline/v1/pagespeedonline-gen.go
index 0b05793..4f6a84b 100644
--- a/pagespeedonline/v1/pagespeedonline-gen.go
+++ b/pagespeedonline/v1/pagespeedonline-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/pagespeedonline/v2/pagespeedonline-gen.go b/pagespeedonline/v2/pagespeedonline-gen.go
index 9364f6c..1c9312b 100644
--- a/pagespeedonline/v2/pagespeedonline-gen.go
+++ b/pagespeedonline/v2/pagespeedonline-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/pagespeedonline/v4/pagespeedonline-gen.go b/pagespeedonline/v4/pagespeedonline-gen.go
index a1c7bbd..8a234a5 100644
--- a/pagespeedonline/v4/pagespeedonline-gen.go
+++ b/pagespeedonline/v4/pagespeedonline-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/pagespeedonline/v5/pagespeedonline-gen.go b/pagespeedonline/v5/pagespeedonline-gen.go
index 889e62a..b74f424 100644
--- a/pagespeedonline/v5/pagespeedonline-gen.go
+++ b/pagespeedonline/v5/pagespeedonline-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/people/v1/people-gen.go b/people/v1/people-gen.go
index 7a16695..0878e06 100644
--- a/people/v1/people-gen.go
+++ b/people/v1/people-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/playcustomapp/v1/playcustomapp-gen.go b/playcustomapp/v1/playcustomapp-gen.go
index e01cbdd..ad86168 100644
--- a/playcustomapp/v1/playcustomapp-gen.go
+++ b/playcustomapp/v1/playcustomapp-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/plus/v1/plus-gen.go b/plus/v1/plus-gen.go
index d2d26e3..73c438f 100644
--- a/plus/v1/plus-gen.go
+++ b/plus/v1/plus-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/plusdomains/v1/plusdomains-gen.go b/plusdomains/v1/plusdomains-gen.go
index 16dc458..4a12dc8 100644
--- a/plusdomains/v1/plusdomains-gen.go
+++ b/plusdomains/v1/plusdomains-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/poly/v1/poly-gen.go b/poly/v1/poly-gen.go
index f6b0907..c4e1d8e 100644
--- a/poly/v1/poly-gen.go
+++ b/poly/v1/poly-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/proximitybeacon/v1beta1/proximitybeacon-gen.go b/proximitybeacon/v1beta1/proximitybeacon-gen.go
index 542a110..13a035b 100644
--- a/proximitybeacon/v1beta1/proximitybeacon-gen.go
+++ b/proximitybeacon/v1beta1/proximitybeacon-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/pubsub/v1/pubsub-gen.go b/pubsub/v1/pubsub-gen.go
index 17c8920..e9ab91b 100644
--- a/pubsub/v1/pubsub-gen.go
+++ b/pubsub/v1/pubsub-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/pubsub/v1beta1a/pubsub-gen.go b/pubsub/v1beta1a/pubsub-gen.go
index d0d9e75..1c3a72e 100644
--- a/pubsub/v1beta1a/pubsub-gen.go
+++ b/pubsub/v1beta1a/pubsub-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/pubsub/v1beta2/pubsub-gen.go b/pubsub/v1beta2/pubsub-gen.go
index fddf7da..6fed255 100644
--- a/pubsub/v1beta2/pubsub-gen.go
+++ b/pubsub/v1beta2/pubsub-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/redis/v1/redis-gen.go b/redis/v1/redis-gen.go
index 4e1493f..6c925dd 100644
--- a/redis/v1/redis-gen.go
+++ b/redis/v1/redis-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/redis/v1beta1/redis-gen.go b/redis/v1beta1/redis-gen.go
index 9414fe9..626768a 100644
--- a/redis/v1beta1/redis-gen.go
+++ b/redis/v1beta1/redis-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/remotebuildexecution/v1/remotebuildexecution-api.json b/remotebuildexecution/v1/remotebuildexecution-api.json
new file mode 100644
index 0000000..aed23e0
--- /dev/null
+++ b/remotebuildexecution/v1/remotebuildexecution-api.json
@@ -0,0 +1,1961 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://remotebuildexecution.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Remote Build Execution",
+  "description": "Supplies a Remote Execution API service for tools such as bazel.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/remote-build-execution/docs/",
+  "fullyEncodeReservedExpansion": true,
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "id": "remotebuildexecution:v1",
+  "kind": "discovery#restDescription",
+  "name": "remotebuildexecution",
+  "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": {
+    "media": {
+      "methods": {
+        "download": {
+          "description": "Downloads media. Download is supported\non the URI `/v1/media/{+name}?alt=media`.",
+          "flatPath": "v1/media/{mediaId}",
+          "httpMethod": "GET",
+          "id": "remotebuildexecution.media.download",
+          "parameterOrder": [
+            "resourceName"
+          ],
+          "parameters": {
+            "resourceName": {
+              "description": "Name of the media that is being downloaded.  See\nReadRequest.resource_name.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1/media/{+resourceName}",
+          "response": {
+            "$ref": "GoogleBytestreamMedia"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ],
+          "supportsMediaDownload": true
+        },
+        "upload": {
+          "description": "Uploads media. Upload is supported on\nthe URI `/upload/v1/media/{+name}`.",
+          "flatPath": "v1/media/{mediaId}",
+          "httpMethod": "POST",
+          "id": "remotebuildexecution.media.upload",
+          "mediaUpload": {
+            "accept": [
+              "*/*"
+            ],
+            "protocols": {
+              "simple": {
+                "multipart": true,
+                "path": "/upload/v1/media/{+resourceName}"
+              }
+            }
+          },
+          "parameterOrder": [
+            "resourceName"
+          ],
+          "parameters": {
+            "resourceName": {
+              "description": "Name of the media that is being downloaded.  See\nReadRequest.resource_name.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1/media/{+resourceName}",
+          "request": {
+            "$ref": "GoogleBytestreamMedia"
+          },
+          "response": {
+            "$ref": "GoogleBytestreamMedia"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ],
+          "supportsMediaUpload": true
+        }
+      }
+    },
+    "operations": {
+      "methods": {
+        "cancel": {
+          "description": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+          "flatPath": "v1/operations/{operationsId}:cancel",
+          "httpMethod": "POST",
+          "id": "remotebuildexecution.operations.cancel",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name of the operation resource to be cancelled.",
+              "location": "path",
+              "pattern": "^operations/.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1/{+name}:cancel",
+          "request": {
+            "$ref": "GoogleLongrunningCancelOperationRequest"
+          },
+          "response": {
+            "$ref": "GoogleProtobufEmpty"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "delete": {
+          "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
+          "flatPath": "v1/operations/{operationsId}",
+          "httpMethod": "DELETE",
+          "id": "remotebuildexecution.operations.delete",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name of the operation resource to be deleted.",
+              "location": "path",
+              "pattern": "^operations/.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v1/{+name}",
+          "response": {
+            "$ref": "GoogleProtobufEmpty"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "list": {
+          "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+          "flatPath": "v1/operations",
+          "httpMethod": "GET",
+          "id": "remotebuildexecution.operations.list",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "The standard list filter.",
+              "location": "query",
+              "type": "string"
+            },
+            "name": {
+              "description": "The name of the operation's parent resource.",
+              "location": "path",
+              "pattern": "^operations$",
+              "required": true,
+              "type": "string"
+            },
+            "pageSize": {
+              "description": "The standard list page size.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "The standard list page token.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1/{+name}",
+          "response": {
+            "$ref": "GoogleLongrunningListOperationsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      }
+    },
+    "projects": {
+      "resources": {
+        "operations": {
+          "methods": {
+            "get": {
+              "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+              "flatPath": "v1/projects/{projectsId}/operations/{operationsId}",
+              "httpMethod": "GET",
+              "id": "remotebuildexecution.projects.operations.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the operation resource.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/operations/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1/{+name}",
+              "response": {
+                "$ref": "GoogleLongrunningOperation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          }
+        }
+      }
+    },
+    "v1": {
+      "methods": {
+        "watch": {
+          "description": "Start a streaming RPC to get watch information from the server.",
+          "flatPath": "v1:watch",
+          "httpMethod": "GET",
+          "id": "remotebuildexecution.watch",
+          "parameterOrder": [],
+          "parameters": {
+            "resumeMarker": {
+              "description": "The `resume_marker` specifies how much of the existing underlying state is\ndelivered to the client when the watch request is received by the\nsystem. The client can set this marker in one of the following ways to get\ndifferent semantics:\n\n*   Parameter is not specified or has the value \"\".\n    Semantics: Fetch initial state.\n    The client wants the entity's initial state to be delivered. See the\n    description in \"Initial State\".\n\n*   Parameter is set to the string \"now\" (UTF-8 encoding).\n    Semantics: Fetch new changes only.\n    The client just wants to get the changes received by the system after\n    the watch point. The system may deliver changes from before the watch\n    point as well.\n\n*   Parameter is set to a value received in an earlier\n    `Change.resume_marker` field while watching the same entity.\n    Semantics: Resume from a specific point.\n    The client wants to receive the changes from a specific point; this\n    value must correspond to a value received in the `Change.resume_marker`\n    field. The system may deliver changes from before the `resume_marker`\n    as well. If the system cannot resume the stream from this point (e.g.,\n    if it is too far behind in the stream), it can raise the\n    `FAILED_PRECONDITION` error.\n\nAn implementation MUST support an unspecified parameter and the\nempty string \"\" marker (initial state fetching) and the \"now\" marker.\nIt need not support resuming from a specific point.",
+              "format": "byte",
+              "location": "query",
+              "type": "string"
+            },
+            "target": {
+              "description": "The `target` value **must** be a valid URL path pointing to an entity\nto watch. Note that the service name **must** be\nremoved from the target field (e.g., the target field must say\n\"/foo/bar\", not \"myservice.googleapis.com/foo/bar\"). A client is\nalso allowed to pass system-specific parameters in the URL that\nare only obeyed by some implementations. Some parameters will be\nimplementation-specific. However, some have predefined meaning\nand are listed here:\n\n * recursive = true|false [default=false]\n   If set to true, indicates that the client wants to watch all elements\n   of entities in the subtree rooted at the entity's name in `target`. For\n   descendants that are not the immediate children of the target, the\n   `Change.element` will contain slashes.\n\n   Note that some namespaces and entities will not support recursive\n   watching. When watching such an entity, a client must not set recursive\n   to true. Otherwise, it will receive an `UNIMPLEMENTED` error.\n\nNormal URL encoding must be used inside `target`.  For example, if a query\nparameter name or value, or the non-query parameter portion of `target`\ncontains a special character, it must be %-encoded.  We recommend that\nclients and servers use their runtime's URL library to produce and consume\ntarget values.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "v1:watch",
+          "response": {
+            "$ref": "GoogleWatcherV1ChangeBatch"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      }
+    }
+  },
+  "revision": "20190103",
+  "rootUrl": "https://remotebuildexecution.googleapis.com/",
+  "schemas": {
+    "BuildBazelRemoteExecutionV2Action": {
+      "description": "An `Action` captures all the information about an execution which is required\nto reproduce it.\n\n`Action`s are the core component of the [Execution] service. A single\n`Action` represents a repeatable action that can be performed by the\nexecution service. `Action`s can be succinctly identified by the digest of\ntheir wire format encoding and, once an `Action` has been executed, will be\ncached in the action cache. Future requests can then use the cached result\nrather than needing to run afresh.\n\nWhen a server completes execution of an\nAction, it MAY choose to\ncache the result in\nthe ActionCache unless\n`do_not_cache` is `true`. Clients SHOULD expect the server to do so. By\ndefault, future calls to\nExecute the same\n`Action` will also serve their results from the cache. Clients must take care\nto understand the caching behaviour. Ideally, all `Action`s will be\nreproducible so that serving a result from cache is always desirable and\ncorrect.",
+      "id": "BuildBazelRemoteExecutionV2Action",
+      "properties": {
+        "commandDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the Command\nto run, which MUST be present in the\nContentAddressableStorage."
+        },
+        "doNotCache": {
+          "description": "If true, then the `Action`'s result cannot be cached.",
+          "type": "boolean"
+        },
+        "inputRootDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the root\nDirectory for the input\nfiles. The files in the directory tree are available in the correct\nlocation on the build machine before the command is executed. The root\ndirectory, as well as every subdirectory and content blob referred to, MUST\nbe in the\nContentAddressableStorage."
+        },
+        "timeout": {
+          "description": "A timeout after which the execution should be killed. If the timeout is\nabsent, then the client is specifying that the execution should continue\nas long as the server will let it. The server SHOULD impose a timeout if\nthe client does not specify one, however, if the client does specify a\ntimeout that is longer than the server's maximum timeout, the server MUST\nreject the request.\n\nThe timeout is a part of the\nAction message, and\ntherefore two `Actions` with different timeouts are different, even if they\nare otherwise identical. This is because, if they were not, running an\n`Action` with a lower timeout than is required might result in a cache hit\nfrom an execution run with a longer timeout, hiding the fact that the\ntimeout is too short. By encoding it directly in the `Action`, a lower\ntimeout will result in a cache miss and the execution timeout will fail\nimmediately, rather than whenever the cache entry gets evicted.",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ActionResult": {
+      "description": "An ActionResult represents the result of an\nAction being run.",
+      "id": "BuildBazelRemoteExecutionV2ActionResult",
+      "properties": {
+        "executionMetadata": {
+          "$ref": "BuildBazelRemoteExecutionV2ExecutedActionMetadata",
+          "description": "The details of the execution that originally produced this result."
+        },
+        "exitCode": {
+          "description": "The exit code of the command.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputDirectories": {
+          "description": "The output directories of the action. For each output directory requested\nin the `output_directories` field of the Action, if the corresponding\ndirectory existed after the action completed, a single entry will be\npresent in the output list, which will contain the digest of a\nTree message containing the\ndirectory tree, and the path equal exactly to the corresponding Action\noutput_directories member.\n\nAs an example, suppose the Action had an output directory `a/b/dir` and the\nexecution produced the following contents in `a/b/dir`: a file named `bar`\nand a directory named `foo` with an executable file named `baz`. Then,\noutput_directory will contain (hashes shortened for readability):\n\n```json\n// OutputDirectory proto:\n{\n  path: \"a/b/dir\"\n  tree_digest: {\n    hash: \"4a73bc9d03...\",\n    size: 55\n  }\n}\n// Tree proto with hash \"4a73bc9d03...\" and size 55:\n{\n  root: {\n    files: [\n      {\n        name: \"bar\",\n        digest: {\n          hash: \"4a73bc9d03...\",\n          size: 65534\n        }\n      }\n    ],\n    directories: [\n      {\n        name: \"foo\",\n        digest: {\n          hash: \"4cf2eda940...\",\n          size: 43\n        }\n      }\n    ]\n  }\n  children : {\n    // (Directory proto with hash \"4cf2eda940...\" and size 43)\n    files: [\n      {\n        name: \"baz\",\n        digest: {\n          hash: \"b2c941073e...\",\n          size: 1294,\n        },\n        is_executable: true\n      }\n    ]\n  }\n}\n```",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputDirectory"
+          },
+          "type": "array"
+        },
+        "outputDirectorySymlinks": {
+          "description": "The output directories of the action that are symbolic links to other\ndirectories. Those may be links to other output directories, or input\ndirectories, or even absolute paths outside of the working directory,\nif the server supports\nSymlinkAbsolutePathStrategy.ALLOWED.\nFor each output directory requested in the `output_directories` field of\nthe Action, if the directory file existed after\nthe action completed, a single entry will be present either in this field,\nor in the `output_directories` field, if the directory was not a symbolic link.\n\nIf the action does not produce the requested output, or produces a\nfile where a directory is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputSymlink"
+          },
+          "type": "array"
+        },
+        "outputFileSymlinks": {
+          "description": "The output files of the action that are symbolic links to other files. Those\nmay be links to other output files, or input files, or even absolute paths\noutside of the working directory, if the server supports\nSymlinkAbsolutePathStrategy.ALLOWED.\nFor each output file requested in the `output_files` field of the Action,\nif the corresponding file existed after\nthe action completed, a single entry will be present either in this field,\nor in the `output_files` field, if the file was not a symbolic link.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputSymlink"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "The output files of the action. For each output file requested in the\n`output_files` field of the Action, if the corresponding file existed after\nthe action completed, a single entry will be present either in this field,\nor in the output_file_symlinks field, if the file was a symbolic link to\nanother file.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputFile"
+          },
+          "type": "array"
+        },
+        "stderrDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest for a blob containing the standard error of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stderr_raw` for when this will be set."
+        },
+        "stderrRaw": {
+          "description": "The standard error buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stderr_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        },
+        "stdoutDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest for a blob containing the standard output of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stdout_raw` for when this will be set."
+        },
+        "stdoutRaw": {
+          "description": "The standard output buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stdout_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Command": {
+      "description": "A `Command` is the actual command executed by a worker running an\nAction and specifications of its\nenvironment.\n\nExcept as otherwise required, the environment (such as which system\nlibraries or binaries are available, and what filesystems are mounted where)\nis defined by and specific to the implementation of the remote execution API.",
+      "id": "BuildBazelRemoteExecutionV2Command",
+      "properties": {
+        "arguments": {
+          "description": "The arguments to the command. The first argument must be the path to the\nexecutable, which must be either a relative path, in which case it is\nevaluated with respect to the input root, or an absolute path.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "The environment variables to set when running the program. The worker may\nprovide its own default environment variables; these defaults can be\noverridden using this field. Additional variables can also be specified.\n\nIn order to ensure that equivalent `Command`s always hash to the same\nvalue, the environment variables MUST be lexicographically sorted by name.\nSorting of strings is done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2CommandEnvironmentVariable"
+          },
+          "type": "array"
+        },
+        "outputDirectories": {
+          "description": "A list of the output directories that the client expects to retrieve from\nthe action. Only the contents of the indicated directories (recursively\nincluding the contents of their subdirectories) will be\nreturned, as well as files listed in `output_files`. Other files that may\nbe created during command execution are discarded.\n\nThe paths are relative to the working directory of the action execution.\nThe paths are specified using a single forward slash (`/`) as a path\nseparator, even if the execution platform natively uses a different\nseparator. The path MUST NOT include a trailing slash, nor a leading slash,\nbeing a relative path. The special value of empty string is allowed,\nalthough not recommended, and can be used to capture the entire working\ndirectory tree, including inputs.\n\nIn order to ensure consistent hashing of the same Action, the output paths\nMUST be sorted lexicographically by code point (or, equivalently, by UTF-8\nbytes).\n\nAn output directory cannot be duplicated, be a parent of another output\ndirectory, be a parent of a listed output file, or have the same path as\nany of the listed output files.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "A list of the output files that the client expects to retrieve from the\naction. Only the listed files, as well as directories listed in\n`output_directories`, will be returned to the client as output.\nOther files that may be created during command execution are discarded.\n\nThe paths are relative to the working directory of the action execution.\nThe paths are specified using a single forward slash (`/`) as a path\nseparator, even if the execution platform natively uses a different\nseparator. The path MUST NOT include a trailing slash, nor a leading slash,\nbeing a relative path.\n\nIn order to ensure consistent hashing of the same Action, the output paths\nMUST be sorted lexicographically by code point (or, equivalently, by UTF-8\nbytes).\n\nAn output file cannot be duplicated, be a parent of another output file, be\na child of a listed output directory, or have the same path as any of the\nlisted output directories.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "platform": {
+          "$ref": "BuildBazelRemoteExecutionV2Platform",
+          "description": "The platform requirements for the execution environment. The server MAY\nchoose to execute the action on any worker satisfying the requirements, so\nthe client SHOULD ensure that running the action on any such worker will\nhave the same result."
+        },
+        "workingDirectory": {
+          "description": "The working directory, relative to the input root, for the command to run\nin. It must be a directory which exists in the input tree. If it is left\nempty, then the action is run in the input root.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2CommandEnvironmentVariable": {
+      "description": "An `EnvironmentVariable` is one variable to set in the running program's\nenvironment.",
+      "id": "BuildBazelRemoteExecutionV2CommandEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The variable name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The variable value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Digest": {
+      "description": "A content digest. A digest for a given blob consists of the size of the blob\nand its hash. The hash algorithm to use is defined by the server, but servers\nSHOULD use SHA-256.\n\nThe size is considered to be an integral part of the digest and cannot be\nseparated. That is, even if the `hash` field is correctly specified but\n`size_bytes` is not, the server MUST reject the request.\n\nThe reason for including the size in the digest is as follows: in a great\nmany cases, the server needs to know the size of the blob it is about to work\nwith prior to starting an operation with it, such as flattening Merkle tree\nstructures or streaming it to a worker. Technically, the server could\nimplement a separate metadata store, but this results in a significantly more\ncomplicated implementation as opposed to having the client specify the size\nup-front (or storing the size along with the digest in every message where\ndigests are embedded). This does mean that the API leaks some implementation\ndetails of (what we consider to be) a reasonable server implementation, but\nwe consider this to be a worthwhile tradeoff.\n\nWhen a `Digest` is used to refer to a proto message, it always refers to the\nmessage in binary encoded form. To ensure consistent hashing, clients and\nservers MUST ensure that they serialize messages according to the following\nrules, even if there are alternate valid encodings for the same message.\n- Fields are serialized in tag order.\n- There are no unknown fields.\n- There are no duplicate fields.\n- Fields are serialized according to the default semantics for their type.\n\nMost protocol buffer implementations will always follow these rules when\nserializing, but care should be taken to avoid shortcuts. For instance,\nconcatenating two messages to merge them may produce duplicate fields.",
+      "id": "BuildBazelRemoteExecutionV2Digest",
+      "properties": {
+        "hash": {
+          "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the blob, in bytes.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Directory": {
+      "description": "A `Directory` represents a directory node in a file tree, containing zero or\nmore children FileNodes,\nDirectoryNodes and\nSymlinkNodes.\nEach `Node` contains its name in the directory, either the digest of its\ncontent (either a file blob or a `Directory` proto) or a symlink target, as\nwell as possibly some metadata about the file or directory.\n\nIn order to ensure that two equivalent directory trees hash to the same\nvalue, the following restrictions MUST be obeyed when constructing a\na `Directory`:\n  - Every child in the directory must have a path of exactly one segment.\n    Multiple levels of directory hierarchy may not be collapsed.\n  - Each child in the directory must have a unique path segment (file name).\n  - The files, directories and symlinks in the directory must each be sorted\n    in lexicographical order by path. The path strings must be sorted by code\n    point, equivalently, by UTF-8 bytes.\n\nA `Directory` that obeys the restrictions is said to be in canonical form.\n\nAs an example, the following could be used for a file named `bar` and a\ndirectory named `foo` with an executable file named `baz` (hashes shortened\nfor readability):\n\n```json\n// (Directory proto)\n{\n  files: [\n    {\n      name: \"bar\",\n      digest: {\n        hash: \"4a73bc9d03...\",\n        size: 65534\n      }\n    }\n  ],\n  directories: [\n    {\n      name: \"foo\",\n      digest: {\n        hash: \"4cf2eda940...\",\n        size: 43\n      }\n    }\n  ]\n}\n\n// (Directory proto with hash \"4cf2eda940...\" and size 43)\n{\n  files: [\n    {\n      name: \"baz\",\n      digest: {\n        hash: \"b2c941073e...\",\n        size: 1294,\n      },\n      is_executable: true\n    }\n  ]\n}\n```",
+      "id": "BuildBazelRemoteExecutionV2Directory",
+      "properties": {
+        "directories": {
+          "description": "The subdirectories in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2DirectoryNode"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2FileNode"
+          },
+          "type": "array"
+        },
+        "symlinks": {
+          "description": "The symlinks in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2SymlinkNode"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2DirectoryNode": {
+      "description": "A `DirectoryNode` represents a child of a\nDirectory which is itself\na `Directory` and its associated metadata.",
+      "id": "BuildBazelRemoteExecutionV2DirectoryNode",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the\nDirectory object\nrepresented. See Digest\nfor information about how to take the digest of a proto message."
+        },
+        "name": {
+          "description": "The name of the directory.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecuteOperationMetadata": {
+      "description": "Metadata about an ongoing\nexecution, which\nwill be contained in the metadata\nfield of the\nOperation.",
+      "id": "BuildBazelRemoteExecutionV2ExecuteOperationMetadata",
+      "properties": {
+        "actionDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the Action\nbeing executed."
+        },
+        "stage": {
+          "enum": [
+            "UNKNOWN",
+            "CACHE_CHECK",
+            "QUEUED",
+            "EXECUTING",
+            "COMPLETED"
+          ],
+          "enumDescriptions": [
+            "",
+            "Checking the result against the cache.",
+            "Currently idle, awaiting a free machine to execute.",
+            "Currently being executed by a worker.",
+            "Finished execution."
+          ],
+          "type": "string"
+        },
+        "stderrStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard error.",
+          "type": "string"
+        },
+        "stdoutStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard output.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecuteResponse": {
+      "description": "The response message for\nExecution.Execute,\nwhich will be contained in the response\nfield of the\nOperation.",
+      "id": "BuildBazelRemoteExecutionV2ExecuteResponse",
+      "properties": {
+        "cachedResult": {
+          "description": "True if the result was served from cache, false if it was executed.",
+          "type": "boolean"
+        },
+        "result": {
+          "$ref": "BuildBazelRemoteExecutionV2ActionResult",
+          "description": "The result of the action."
+        },
+        "serverLogs": {
+          "additionalProperties": {
+            "$ref": "BuildBazelRemoteExecutionV2LogFile"
+          },
+          "description": "An optional list of additional log outputs the server wishes to provide. A\nserver can use this to return execution-specific logs however it wishes.\nThis is intended primarily to make it easier for users to debug issues that\nmay be outside of the actual job execution, such as by identifying the\nworker executing the action or by providing logs from the worker's setup\nphase. The keys SHOULD be human readable so that a client can display them\nto a user.",
+          "type": "object"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "If the status has a code other than `OK`, it indicates that the action did\nnot finish execution. For example, if the operation times out during\nexecution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST\nuse this field for errors in execution, rather than the error field on the\n`Operation` object.\n\nIf the status code is other than `OK`, then the result MUST NOT be cached.\nFor an error status, the `result` field is optional; the server may\npopulate the output-, stdout-, and stderr-related fields if it has any\ninformation available, such as the stdout and stderr of a timed-out action."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecutedActionMetadata": {
+      "description": "ExecutedActionMetadata contains details about a completed execution.",
+      "id": "BuildBazelRemoteExecutionV2ExecutedActionMetadata",
+      "properties": {
+        "executionCompletedTimestamp": {
+          "description": "When the worker completed executing the action command.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "executionStartTimestamp": {
+          "description": "When the worker started executing the action command.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "inputFetchCompletedTimestamp": {
+          "description": "When the worker finished fetching action inputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "inputFetchStartTimestamp": {
+          "description": "When the worker started fetching action inputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "outputUploadCompletedTimestamp": {
+          "description": "When the worker finished uploading action outputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "outputUploadStartTimestamp": {
+          "description": "When the worker started uploading action outputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "queuedTimestamp": {
+          "description": "When was the action added to the queue.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "worker": {
+          "description": "The name of the worker which ran the execution.",
+          "type": "string"
+        },
+        "workerCompletedTimestamp": {
+          "description": "When the worker completed the action, including all stages.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "workerStartTimestamp": {
+          "description": "When the worker received the action.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2FileNode": {
+      "description": "A `FileNode` represents a single file and associated metadata.",
+      "id": "BuildBazelRemoteExecutionV2FileNode",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "The name of the file.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2LogFile": {
+      "description": "A `LogFile` is a log stored in the CAS.",
+      "id": "BuildBazelRemoteExecutionV2LogFile",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the log contents."
+        },
+        "humanReadable": {
+          "description": "This is a hint as to the purpose of the log, and is set to true if the log\nis human-readable text that can be usefully displayed to a user, and false\notherwise. For instance, if a command-line client wishes to print the\nserver logs to the terminal for a failed action, this allows it to avoid\ndisplaying a binary file.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputDirectory": {
+      "description": "An `OutputDirectory` is the output in an `ActionResult` corresponding to a\ndirectory's full contents rather than a single file.",
+      "id": "BuildBazelRemoteExecutionV2OutputDirectory",
+      "properties": {
+        "path": {
+          "description": "The full path of the directory relative to the working directory. The path\nseparator is a forward slash `/`. Since this is a relative path, it MUST\nNOT begin with a leading forward slash. The empty string value is allowed,\nand it denotes the entire working directory.",
+          "type": "string"
+        },
+        "treeDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the encoded\nTree proto containing the\ndirectory's contents."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputFile": {
+      "description": "An `OutputFile` is similar to a\nFileNode, but it is used as an\noutput in an `ActionResult`. It allows a full file path rather than\nonly a name.\n\n`OutputFile` is binary-compatible with `FileNode`.",
+      "id": "BuildBazelRemoteExecutionV2OutputFile",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The full path of the file relative to the working directory, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputSymlink": {
+      "description": "An `OutputSymlink` is similar to a\nSymlink, but it is used as an\noutput in an `ActionResult`.\n\n`OutputSymlink` is binary-compatible with `SymlinkNode`.",
+      "id": "BuildBazelRemoteExecutionV2OutputSymlink",
+      "properties": {
+        "path": {
+          "description": "The full path of the symlink relative to the working directory, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        },
+        "target": {
+          "description": "The target path of the symlink. The path separator is a forward slash `/`.\nThe target path can be relative to the parent directory of the symlink or\nit can be an absolute path starting with `/`. Support for absolute paths\ncan be checked using the Capabilities\nAPI. The canonical form forbids the substrings `/./` and `//` in the target\npath. `..` components are allowed anywhere in the target path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Platform": {
+      "description": "A `Platform` is a set of requirements, such as hardware, operating system, or\ncompiler toolchain, for an\nAction's execution\nenvironment. A `Platform` is represented as a series of key-value pairs\nrepresenting the properties that are required of the platform.",
+      "id": "BuildBazelRemoteExecutionV2Platform",
+      "properties": {
+        "properties": {
+          "description": "The properties that make up this platform. In order to ensure that\nequivalent `Platform`s always hash to the same value, the properties MUST\nbe lexicographically sorted by name, and then by value. Sorting of strings\nis done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2PlatformProperty"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2PlatformProperty": {
+      "description": "A single property for the environment. The server is responsible for\nspecifying the property `name`s that it accepts. If an unknown `name` is\nprovided in the requirements for an\nAction, the server SHOULD\nreject the execution request. If permitted by the server, the same `name`\nmay occur multiple times.\n\nThe server is also responsible for specifying the interpretation of\nproperty `value`s. For instance, a property describing how much RAM must be\navailable may be interpreted as allowing a worker with 16GB to fulfill a\nrequest for 8GB, while a property describing the OS environment on which\nthe action must be performed may require an exact match with the worker's\nOS.\n\nThe server MAY use the `value` of one or more properties to determine how\nit sets up the execution environment, such as by making specific system\nfiles available to the worker.",
+      "id": "BuildBazelRemoteExecutionV2PlatformProperty",
+      "properties": {
+        "name": {
+          "description": "The property name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The property value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2RequestMetadata": {
+      "description": "An optional Metadata to attach to any RPC request to tell the server about an\nexternal context of the request. The server may use this for logging or other\npurposes. To use it, the client attaches the header to the call using the\ncanonical proto serialization:\nname: build.bazel.remote.execution.v2.requestmetadata-bin\ncontents: the base64 encoded binary RequestMetadata message.",
+      "id": "BuildBazelRemoteExecutionV2RequestMetadata",
+      "properties": {
+        "actionId": {
+          "description": "An identifier that ties multiple requests to the same action.\nFor example, multiple requests to the CAS, Action Cache, and Execution\nAPI are used in order to compile foo.cc.",
+          "type": "string"
+        },
+        "correlatedInvocationsId": {
+          "description": "An identifier to tie multiple tool invocations together. For example,\nruns of foo_test, bar_test and baz_test on a post-submit of a given patch.",
+          "type": "string"
+        },
+        "toolDetails": {
+          "$ref": "BuildBazelRemoteExecutionV2ToolDetails",
+          "description": "The details for the tool invoking the requests."
+        },
+        "toolInvocationId": {
+          "description": "An identifier that ties multiple actions together to a final result.\nFor example, multiple actions are required to build and run foo_test.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2SymlinkNode": {
+      "description": "A `SymlinkNode` represents a symbolic link.",
+      "id": "BuildBazelRemoteExecutionV2SymlinkNode",
+      "properties": {
+        "name": {
+          "description": "The name of the symlink.",
+          "type": "string"
+        },
+        "target": {
+          "description": "The target path of the symlink. The path separator is a forward slash `/`.\nThe target path can be relative to the parent directory of the symlink or\nit can be an absolute path starting with `/`. Support for absolute paths\ncan be checked using the Capabilities\nAPI. The canonical form forbids the substrings `/./` and `//` in the target\npath. `..` components are allowed anywhere in the target path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ToolDetails": {
+      "description": "Details for the tool used to call the API.",
+      "id": "BuildBazelRemoteExecutionV2ToolDetails",
+      "properties": {
+        "toolName": {
+          "description": "Name of the tool, e.g. bazel.",
+          "type": "string"
+        },
+        "toolVersion": {
+          "description": "Version of the tool used for the request, e.g. 5.0.3.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Tree": {
+      "description": "A `Tree` contains all the\nDirectory protos in a\nsingle directory Merkle tree, compressed into one message.",
+      "id": "BuildBazelRemoteExecutionV2Tree",
+      "properties": {
+        "children": {
+          "description": "All the child directories: the directories referred to by the root and,\nrecursively, all its children. In order to reconstruct the directory tree,\nthe client must take the digests of each of the child directories and then\nbuild up a tree starting from the `root`.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2Directory"
+          },
+          "type": "array"
+        },
+        "root": {
+          "$ref": "BuildBazelRemoteExecutionV2Directory",
+          "description": "The root directory in the tree."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleBytestreamMedia": {
+      "description": "Media resource.",
+      "id": "GoogleBytestreamMedia",
+      "properties": {
+        "resourceName": {
+          "description": "Name of the media resource.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildbotCommandDurations": {
+      "description": "CommandDuration contains the various duration metrics tracked when a bot\nperforms a command.",
+      "id": "GoogleDevtoolsRemotebuildbotCommandDurations",
+      "properties": {
+        "dockerPrep": {
+          "description": "The time spent preparing the command to be run in a Docker container\n(includes pulling the Docker image, if necessary).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "download": {
+          "description": "The time spent downloading the input files and constructing the working\ndirectory.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "execution": {
+          "description": "The time spent executing the command (i.e., doing useful work).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "isoPrepDone": {
+          "description": "The timestamp when preparation is done and bot starts downloading files.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "overall": {
+          "description": "The time spent completing the command, in total.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "stdout": {
+          "description": "The time spent uploading the stdout logs.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "upload": {
+          "description": "The time spent uploading the output files.",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildbotCommandEvents": {
+      "description": "CommandEvents contains counters for the number of warnings and errors\nthat occurred during the execution of a command.",
+      "id": "GoogleDevtoolsRemotebuildbotCommandEvents",
+      "properties": {
+        "dockerCacheHit": {
+          "description": "Indicates whether we are using a cached Docker image (true) or had to pull\nthe Docker image (false) for this command.",
+          "type": "boolean"
+        },
+        "numErrors": {
+          "description": "The number of errors reported.",
+          "format": "uint64",
+          "type": "string"
+        },
+        "numWarnings": {
+          "description": "The number of warnings reported.",
+          "format": "uint64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest": {
+      "description": "The request used for `CreateInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest",
+      "properties": {
+        "instance": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance",
+          "description": "Specifies the instance to create.\nThe name in the instance, if specified in the instance, is ignored."
+        },
+        "instanceId": {
+          "description": "ID of the created instance.\nA valid `instance_id` must:\nbe 6-50 characters long,\ncontains only lowercase letters, digits, hyphens and underscores,\nstart with a lowercase letter, and\nend with a lowercase letter or a digit.",
+          "type": "string"
+        },
+        "parent": {
+          "description": "Resource name of the project containing the instance.\nFormat: `projects/[PROJECT_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest": {
+      "description": "The request used for `CreateWorkerPool`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the instance in which to create the new worker pool.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        },
+        "poolId": {
+          "description": "ID of the created worker pool.\nA valid pool ID must:\nbe 6-50 characters long,\ncontain only lowercase letters, digits, hyphens and underscores,\nstart with a lowercase letter, and\nend with a lowercase letter or a digit.",
+          "type": "string"
+        },
+        "workerPool": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+          "description": "Specifies the worker pool to create.\nThe name in the worker pool, if specified, is ignored."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest": {
+      "description": "The request used for `DeleteInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the instance to delete.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest": {
+      "description": "The request used for DeleteWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the worker pool to delete.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest": {
+      "description": "The request used for `GetInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the instance to retrieve.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest": {
+      "description": "The request used for GetWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the worker pool to retrieve.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance": {
+      "description": "Instance conceptually encapsulates all Remote Build Execution resources\nfor remote builds.\nAn instance consists of storage and compute resources (for example,\n`ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for\nrunning remote builds.\nAll Remote Build Execution API calls are scoped to an instance.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance",
+      "properties": {
+        "location": {
+          "description": "The location is a GCP region. Currently only `us-central1` is supported.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only. Instance resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.\nName should not be populated when creating an instance since it is provided\nin the `instance_id` field.",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. State of the instance.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "CREATING",
+            "RUNNING",
+            "INACTIVE"
+          ],
+          "enumDescriptions": [
+            "Not a valid state, but the default value of the enum.",
+            "The instance is in state `CREATING` once `CreateInstance` is called and\nbefore the instance is ready for use.",
+            "The instance is in state `RUNNING` when it is ready for use.",
+            "An `INACTIVE` instance indicates that there is a problem that needs to be\nfixed. Such instances cannot be used for execution and instances that\nremain in this state for a significant period of time will be removed\npermanently."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the project.\nFormat: `projects/[PROJECT_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse",
+      "properties": {
+        "instances": {
+          "description": "The list of instances in a given project.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the instance.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse",
+      "properties": {
+        "workerPools": {
+          "description": "The list of worker pools in a given instance.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest": {
+      "description": "The request used for UpdateWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest",
+      "properties": {
+        "updateMask": {
+          "description": "The update mask applies to worker_pool. For the `FieldMask` definition,\nsee https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask\nIf an empty update_mask is provided, only the non-default valued field in\nthe worker pool field will be updated. Note that in order to update a field\nto the default value (zero, false, empty string) an explicit update_mask\nmust be provided.",
+          "format": "google-fieldmask",
+          "type": "string"
+        },
+        "workerPool": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+          "description": "Specifies the worker pool to update."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig": {
+      "description": "Defines the configuration to be used for a creating workers in\nthe worker pool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
+      "properties": {
+        "diskSizeGb": {
+          "description": "Required. Size of the disk attached to the worker, in GB.\nSee https://cloud.google.com/compute/docs/disks/",
+          "format": "int64",
+          "type": "string"
+        },
+        "diskType": {
+          "description": "Required. Disk Type to use for the worker.\nSee [Storage options](https://cloud.google.com/compute/docs/disks/#introduction).\nCurrently only `pd-standard` is supported.",
+          "type": "string"
+        },
+        "machineType": {
+          "description": "Required. Machine type of the worker, such as n1-standard-2.\nSee https://cloud.google.com/compute/docs/machine-types for a list of\nsupported machine types.",
+          "type": "string"
+        },
+        "minCpuPlatform": {
+          "description": "Minimum CPU platform to use when creating the worker.\nSee [CPU Platforms](https://cloud.google.com/compute/docs/cpu-platforms).",
+          "type": "string"
+        },
+        "reserved": {
+          "description": "Output only. `reserved=true` means the worker is reserved and won't be\npreempted.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool": {
+      "description": "A worker pool resource in the Remote Build Execution API.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+      "properties": {
+        "name": {
+          "description": "WorkerPool resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.\nname should not be populated when creating a worker pool since it is\nprovided in the `poolId` field.",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. State of the worker pool.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "CREATING",
+            "RUNNING",
+            "UPDATING",
+            "DELETING",
+            "INACTIVE"
+          ],
+          "enumDescriptions": [
+            "Not a valid state, but the default value of the enum.",
+            "The worker pool is in state `CREATING` once `CreateWorkerPool` is called\nand before all requested workers are ready.",
+            "The worker pool is in state `RUNNING` when all its workers are ready for\nuse.",
+            "The worker pool is in state `UPDATING` once `UpdateWorkerPool` is called\nand before the new configuration has all the requested workers ready for\nuse, and no older configuration has any workers. At that point the state\ntransitions to `RUNNING`.",
+            "The worker pool is in state `DELETING` once the `Delete` method is called\nand before the deletion completes.",
+            "The worker pool is in state `INACTIVE` when the instance hosting the\nworker pool in not running."
+          ],
+          "type": "string"
+        },
+        "workerConfig": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
+          "description": "Specifies the properties, such as machine type and disk size, used for\ncreating workers in a worker pool."
+        },
+        "workerCount": {
+          "description": "The desired number of workers in the worker pool. Must be a value between\n0 and 1000.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testActionResult": {
+      "description": "An ActionResult represents the result of an\nAction being run.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testActionResult",
+      "properties": {
+        "exitCode": {
+          "description": "The exit code of the command.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputDirectories": {
+          "description": "The output directories of the action. For each output directory requested\nin the `output_directories` field of the Action, if the corresponding\ndirectory existed after the action completed, a single entry will be\npresent in the output list, which will contain the digest of\na Tree message containing\nthe directory tree, and the path equal exactly to the corresponding Action\noutput_directories member.\nAs an example, suppose the Action had an output directory `a/b/dir` and the\nexecution produced the following contents in `a/b/dir`: a file named `bar`\nand a directory named `foo` with an executable file named `baz`. Then,\noutput_directory will contain (hashes shortened for readability):\n\n```json\n// OutputDirectory proto:\n{\n  path: \"a/b/dir\"\n  tree_digest: {\n    hash: \"4a73bc9d03...\",\n    size: 55\n  }\n}\n// Tree proto with hash \"4a73bc9d03...\" and size 55:\n{\n  root: {\n    files: [\n      {\n        name: \"bar\",\n        digest: {\n          hash: \"4a73bc9d03...\",\n          size: 65534\n        }\n      }\n    ],\n    directories: [\n      {\n        name: \"foo\",\n        digest: {\n          hash: \"4cf2eda940...\",\n          size: 43\n        }\n      }\n    ]\n  }\n  children : {\n    // (Directory proto with hash \"4cf2eda940...\" and size 43)\n    files: [\n      {\n        name: \"baz\",\n        digest: {\n          hash: \"b2c941073e...\",\n          size: 1294,\n        },\n        is_executable: true\n      }\n    ]\n  }\n}\n```",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testOutputDirectory"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "The output files of the action. For each output file requested in the\n`output_files` field of the Action, if the corresponding file existed after\nthe action completed, a single entry will be present in the output list.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testOutputFile"
+          },
+          "type": "array"
+        },
+        "stderrDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest for a blob containing the standard error of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stderr_raw` for when this will be set."
+        },
+        "stderrRaw": {
+          "description": "The standard error buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stderr_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        },
+        "stdoutDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest for a blob containing the standard output of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stdout_raw` for when this will be set."
+        },
+        "stdoutRaw": {
+          "description": "The standard output buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stdout_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testCommand": {
+      "description": "A `Command` is the actual command executed by a worker running an\nAction.\n\nExcept as otherwise required, the environment (such as which system\nlibraries or binaries are available, and what filesystems are mounted where)\nis defined by and specific to the implementation of the remote execution API.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testCommand",
+      "properties": {
+        "arguments": {
+          "description": "The arguments to the command. The first argument must be the path to the\nexecutable, which must be either a relative path, in which case it is\nevaluated with respect to the input root, or an absolute path.\n\nThe working directory will always be the input root.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "The environment variables to set when running the program. The worker may\nprovide its own default environment variables; these defaults can be\noverridden using this field. Additional variables can also be specified.\n\nIn order to ensure that equivalent `Command`s always hash to the same\nvalue, the environment variables MUST be lexicographically sorted by name.\nSorting of strings is done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable": {
+      "description": "An `EnvironmentVariable` is one variable to set in the running program's\nenvironment.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The variable name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The variable value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDigest": {
+      "description": "A content digest. A digest for a given blob consists of the size of the blob\nand its hash. The hash algorithm to use is defined by the server, but servers\nSHOULD use SHA-256.\n\nThe size is considered to be an integral part of the digest and cannot be\nseparated. That is, even if the `hash` field is correctly specified but\n`size_bytes` is not, the server MUST reject the request.\n\nThe reason for including the size in the digest is as follows: in a great\nmany cases, the server needs to know the size of the blob it is about to work\nwith prior to starting an operation with it, such as flattening Merkle tree\nstructures or streaming it to a worker. Technically, the server could\nimplement a separate metadata store, but this results in a significantly more\ncomplicated implementation as opposed to having the client specify the size\nup-front (or storing the size along with the digest in every message where\ndigests are embedded). This does mean that the API leaks some implementation\ndetails of (what we consider to be) a reasonable server implementation, but\nwe consider this to be a worthwhile tradeoff.\n\nWhen a `Digest` is used to refer to a proto message, it always refers to the\nmessage in binary encoded form. To ensure consistent hashing, clients and\nservers MUST ensure that they serialize messages according to the following\nrules, even if there are alternate valid encodings for the same message.\n- Fields are serialized in tag order.\n- There are no unknown fields.\n- There are no duplicate fields.\n- Fields are serialized according to the default semantics for their type.\n\nMost protocol buffer implementations will always follow these rules when\nserializing, but care should be taken to avoid shortcuts. For instance,\nconcatenating two messages to merge them may produce duplicate fields.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDigest",
+      "properties": {
+        "hash": {
+          "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the blob, in bytes.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDirectory": {
+      "description": "A `Directory` represents a directory node in a file tree, containing zero or\nmore children FileNodes\nand DirectoryNodes.\nEach `Node` contains its name in the directory, the digest of its content\n(either a file blob or a `Directory` proto), as well as possibly some\nmetadata about the file or directory.\n\nIn order to ensure that two equivalent directory trees hash to the same\nvalue, the following restrictions MUST be obeyed when constructing a\na `Directory`:\n  - Every child in the directory must have a path of exactly one segment.\n    Multiple levels of directory hierarchy may not be collapsed.\n  - Each child in the directory must have a unique path segment (file name).\n  - The files and directories in the directory must each be sorted in\n    lexicographical order by path. The path strings must be sorted by code\n    point, equivalently, by UTF-8 bytes.\n\nA `Directory` that obeys the restrictions is said to be in canonical form.\n\nAs an example, the following could be used for a file named `bar` and a\ndirectory named `foo` with an executable file named `baz` (hashes shortened\nfor readability):\n\n```json\n// (Directory proto)\n{\n  files: [\n    {\n      name: \"bar\",\n      digest: {\n        hash: \"4a73bc9d03...\",\n        size: 65534\n      }\n    }\n  ],\n  directories: [\n    {\n      name: \"foo\",\n      digest: {\n        hash: \"4cf2eda940...\",\n        size: 43\n      }\n    }\n  ]\n}\n\n// (Directory proto with hash \"4cf2eda940...\" and size 43)\n{\n  files: [\n    {\n      name: \"baz\",\n      digest: {\n        hash: \"b2c941073e...\",\n        size: 1294,\n      },\n      is_executable: true\n    }\n  ]\n}\n```",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDirectory",
+      "properties": {
+        "directories": {
+          "description": "The subdirectories in the directory.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectoryNode"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in the directory.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testFileNode"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDirectoryNode": {
+      "description": "A `DirectoryNode` represents a child of a\nDirectory which is itself\na `Directory` and its associated metadata.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDirectoryNode",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the\nDirectory object\nrepresented. See Digest\nfor information about how to take the digest of a proto message."
+        },
+        "name": {
+          "description": "The name of the directory.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata": {
+      "description": "Metadata about an ongoing\nexecution, which\nwill be contained in the metadata\nfield of the\nOperation.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata",
+      "properties": {
+        "actionDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the Action\nbeing executed."
+        },
+        "stage": {
+          "enum": [
+            "UNKNOWN",
+            "CACHE_CHECK",
+            "QUEUED",
+            "EXECUTING",
+            "COMPLETED"
+          ],
+          "enumDescriptions": [
+            "",
+            "Checking the result against the cache.",
+            "Currently idle, awaiting a free machine to execute.",
+            "Currently being executed by a worker.",
+            "Finished execution."
+          ],
+          "type": "string"
+        },
+        "stderrStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard error.",
+          "type": "string"
+        },
+        "stdoutStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard output.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testExecuteResponse": {
+      "description": "The response message for\nExecution.Execute,\nwhich will be contained in the response\nfield of the\nOperation.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testExecuteResponse",
+      "properties": {
+        "cachedResult": {
+          "description": "True if the result was served from cache, false if it was executed.",
+          "type": "boolean"
+        },
+        "result": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testActionResult",
+          "description": "The result of the action."
+        },
+        "serverLogs": {
+          "additionalProperties": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testLogFile"
+          },
+          "description": "An optional list of additional log outputs the server wishes to provide. A\nserver can use this to return execution-specific logs however it wishes.\nThis is intended primarily to make it easier for users to debug issues that\nmay be outside of the actual job execution, such as by identifying the\nworker executing the action or by providing logs from the worker's setup\nphase. The keys SHOULD be human readable so that a client can display them\nto a user.",
+          "type": "object"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "If the status has a code other than `OK`, it indicates that the action did\nnot finish execution. For example, if the operation times out during\nexecution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST\nuse this field for errors in execution, rather than the error field on the\n`Operation` object.\n\nIf the status code is other than `OK`, then the result MUST NOT be cached.\nFor an error status, the `result` field is optional; the server may\npopulate the output-, stdout-, and stderr-related fields if it has any\ninformation available, such as the stdout and stderr of a timed-out action."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testFileNode": {
+      "description": "A `FileNode` represents a single file and associated metadata.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testFileNode",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "The name of the file.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testLogFile": {
+      "description": "A `LogFile` is a log stored in the CAS.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testLogFile",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the log contents."
+        },
+        "humanReadable": {
+          "description": "This is a hint as to the purpose of the log, and is set to true if the log\nis human-readable text that can be usefully displayed to a user, and false\notherwise. For instance, if a command-line client wishes to print the\nserver logs to the terminal for a failed action, this allows it to avoid\ndisplaying a binary file.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testOutputDirectory": {
+      "description": "An `OutputDirectory` is the output in an `ActionResult` corresponding to a\ndirectory's full contents rather than a single file.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testOutputDirectory",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "DEPRECATED: This field is deprecated and should no longer be used."
+        },
+        "path": {
+          "description": "The full path of the directory relative to the working directory. The path\nseparator is a forward slash `/`. Since this is a relative path, it MUST\nNOT begin with a leading forward slash. The empty string value is allowed,\nand it denotes the entire working directory.",
+          "type": "string"
+        },
+        "treeDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the encoded\nTree proto containing the\ndirectory's contents."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testOutputFile": {
+      "description": "An `OutputFile` is similar to a\nFileNode, but it is\ntailored for output as part of an `ActionResult`. It allows a full file path\nrather than only a name, and allows the server to include content inline.\n\n`OutputFile` is binary-compatible with `FileNode`.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testOutputFile",
+      "properties": {
+        "content": {
+          "description": "The raw content of the file.\n\nThis field may be used by the server to provide the content of a file\ninline in an\nActionResult and\navoid requiring that the client make a separate call to\n[ContentAddressableStorage.GetBlob] to retrieve it.\n\nThe client SHOULD NOT assume that it will get raw content with any request,\nand always be prepared to retrieve it via `digest`.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The full path of the file relative to the input root, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testRequestMetadata": {
+      "description": "An optional Metadata to attach to any RPC request to tell the server about an\nexternal context of the request. The server may use this for logging or other\npurposes. To use it, the client attaches the header to the call using the\ncanonical proto serialization:\nname: google.devtools.remoteexecution.v1test.requestmetadata-bin\ncontents: the base64 encoded binary RequestMetadata message.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testRequestMetadata",
+      "properties": {
+        "actionId": {
+          "description": "An identifier that ties multiple requests to the same action.\nFor example, multiple requests to the CAS, Action Cache, and Execution\nAPI are used in order to compile foo.cc.",
+          "type": "string"
+        },
+        "correlatedInvocationsId": {
+          "description": "An identifier to tie multiple tool invocations together. For example,\nruns of foo_test, bar_test and baz_test on a post-submit of a given patch.",
+          "type": "string"
+        },
+        "toolDetails": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testToolDetails",
+          "description": "The details for the tool invoking the requests."
+        },
+        "toolInvocationId": {
+          "description": "An identifier that ties multiple actions together to a final result.\nFor example, multiple actions are required to build and run foo_test.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testToolDetails": {
+      "description": "Details for the tool used to call the API.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testToolDetails",
+      "properties": {
+        "toolName": {
+          "description": "Name of the tool, e.g. bazel.",
+          "type": "string"
+        },
+        "toolVersion": {
+          "description": "Version of the tool used for the request, e.g. 5.0.3.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testTree": {
+      "description": "A `Tree` contains all the\nDirectory protos in a\nsingle directory Merkle tree, compressed into one message.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testTree",
+      "properties": {
+        "children": {
+          "description": "All the child directories: the directories referred to by the root and,\nrecursively, all its children. In order to reconstruct the directory tree,\nthe client must take the digests of each of the child directories and then\nbuild up a tree starting from the `root`.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectory"
+          },
+          "type": "array"
+        },
+        "root": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectory",
+          "description": "The root directory in the tree."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2AdminTemp": {
+      "description": "AdminTemp is a prelimiary set of administration tasks. It's called \"Temp\"\nbecause we do not yet know the best way to represent admin tasks; it's\npossible that this will be entirely replaced in later versions of this API.\nIf this message proves to be sufficient, it will be renamed in the alpha or\nbeta release of this API.\n\nThis message (suitably marshalled into a protobuf.Any) can be used as the\ninline_assignment field in a lease; the lease assignment field should simply\nbe `\"admin\"` in these cases.\n\nThis message is heavily based on Swarming administration tasks from the LUCI\nproject (http://github.com/luci/luci-py/appengine/swarming).",
+      "id": "GoogleDevtoolsRemoteworkersV1test2AdminTemp",
+      "properties": {
+        "arg": {
+          "description": "The argument to the admin action; see `Command` for semantics.",
+          "type": "string"
+        },
+        "command": {
+          "description": "The admin action; see `Command` for legal values.",
+          "enum": [
+            "UNSPECIFIED",
+            "BOT_UPDATE",
+            "BOT_RESTART",
+            "BOT_TERMINATE",
+            "HOST_RESTART"
+          ],
+          "enumDescriptions": [
+            "Illegal value.",
+            "Download and run a new version of the bot. `arg` will be a resource\naccessible via `ByteStream.Read` to obtain the new bot code.",
+            "Restart the bot without downloading a new version. `arg` will be a\nmessage to log.",
+            "Shut down the bot. `arg` will be a task resource name (similar to those\nin tasks.proto) that the bot can use to tell the server that it is\nterminating.",
+            "Restart the host computer. `arg` will be a message to log."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Blob": {
+      "description": "Describes a blob of binary content with its digest.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Blob",
+      "properties": {
+        "contents": {
+          "description": "The contents of the blob.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The digest of the blob. This should be verified by the receiver."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandOutputs": {
+      "description": "DEPRECATED - use CommandResult instead.\nDescribes the actual outputs from the task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandOutputs",
+      "properties": {
+        "exitCode": {
+          "description": "exit_code is only fully reliable if the status' code is OK. If the task\nexceeded its deadline or was cancelled, the process may still produce an\nexit code as it is cancelled, and this will be populated, but a successful\n(zero) is unlikely to be correct unless the status code is OK.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The output files. The blob referenced by the digest should contain\none of the following (implementation-dependent):\n   * A marshalled DirectoryMetadata of the returned filesystem\n   * A LUCI-style .isolated file"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandOverhead": {
+      "description": "DEPRECATED - use CommandResult instead.\nCan be used as part of CompleteRequest.metadata, or are part of a more\nsophisticated message.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandOverhead",
+      "properties": {
+        "duration": {
+          "description": "The elapsed time between calling Accept and Complete. The server will also\nhave its own idea of what this should be, but this excludes the overhead of\nthe RPCs and the bot response time.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "overhead": {
+          "description": "The amount of time *not* spent executing the command (ie\nuploading/downloading files).",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandResult": {
+      "description": "All information about the execution of a command, suitable for providing as\nthe Bots interface's `Lease.result` field.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandResult",
+      "properties": {
+        "duration": {
+          "description": "The elapsed time between calling Accept and Complete. The server will also\nhave its own idea of what this should be, but this excludes the overhead of\nthe RPCs and the bot response time.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "exitCode": {
+          "description": "The exit code of the process. An exit code of \"0\" should only be trusted if\n`status` has a code of OK (otherwise it may simply be unset).",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The output files. The blob referenced by the digest should contain\none of the following (implementation-dependent):\n   * A marshalled DirectoryMetadata of the returned filesystem\n   * A LUCI-style .isolated file"
+        },
+        "overhead": {
+          "description": "The amount of time *not* spent executing the command (ie\nuploading/downloading files).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "statistics": {
+          "description": "Implementation-dependent statistics about the task. Both servers and bots\nmay define messages which can be encoded here; bots are free to provide\nstatistics in multiple formats, and servers are free to choose one or more\nof the values to process and ignore others. In particular, it is *not*\nconsidered an error for the bot to provide the server with a field that it\ndoesn't know about.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "An overall status for the command. For example, if the command timed out,\nthis might have a code of DEADLINE_EXCEEDED; if it was killed by the OS for\nmemory exhaustion, it might have a code of RESOURCE_EXHAUSTED."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTask": {
+      "description": "Describes a shell-style task to execute, suitable for providing as the Bots\ninterface's `Lease.payload` field.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTask",
+      "properties": {
+        "expectedOutputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs",
+          "description": "The expected outputs from the task."
+        },
+        "inputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs",
+          "description": "The inputs to the task."
+        },
+        "timeouts": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts",
+          "description": "The timeouts of this task."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs": {
+      "description": "Describes the inputs to a shell-style task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs",
+      "properties": {
+        "arguments": {
+          "description": "The command itself to run (e.g., argv).\n\nThis field should be passed directly to the underlying operating system,\nand so it must be sensible to that operating system. For example, on\nWindows, the first argument might be \"C:\\Windows\\System32\\ping.exe\" -\nthat is, using drive letters and backslashes. A command for a *nix\nsystem, on the other hand, would use forward slashes.\n\nAll other fields in the RWAPI must consistently use forward slashes,\nsince those fields may be interpretted by both the service and the bot.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "All environment variables required by the task.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The input filesystem to be set up prior to the task beginning. The\ncontents should be a repeated set of FileMetadata messages though other\nformats are allowed if better for the implementation (eg, a LUCI-style\n.isolated file).\n\nThis field is repeated since implementations might want to cache the\nmetadata, in which case it may be useful to break up portions of the\nfilesystem that change frequently (eg, specific input files) from those\nthat don't (eg, standard header files).",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest"
+          },
+          "type": "array"
+        },
+        "inlineBlobs": {
+          "description": "Inline contents for blobs expected to be needed by the bot to execute the\ntask. For example, contents of entries in `files` or blobs that are\nindirectly referenced by an entry there.\n\nThe bot should check against this list before downloading required task\ninputs to reduce the number of communications between itself and the\nremote CAS server.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2Blob"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable": {
+      "description": "An environment variable required by this task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The envvar name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The envvar value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs": {
+      "description": "Describes the expected outputs of the command.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs",
+      "properties": {
+        "directories": {
+          "description": "A list of expected directories, relative to the execution root. All paths\nMUST be delimited by forward slashes.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "A list of expected files, relative to the execution root. All paths\nMUST be delimited by forward slashes.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "stderrDestination": {
+          "description": "The destination to which any stderr should be sent. The method by which\nthe bot should send the stream contents to that destination is not\ndefined in this API. As examples, the destination could be a file\nreferenced in the `files` field in this message, or it could be a URI\nthat must be written via the ByteStream API.",
+          "type": "string"
+        },
+        "stdoutDestination": {
+          "description": "The destination to which any stdout should be sent. The method by which\nthe bot should send the stream contents to that destination is not\ndefined in this API. As examples, the destination could be a file\nreferenced in the `files` field in this message, or it could be a URI\nthat must be written via the ByteStream API.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts": {
+      "description": "Describes the timeouts associated with this task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts",
+      "properties": {
+        "execution": {
+          "description": "This specifies the maximum time that the task can run, excluding the\ntime required to download inputs or upload outputs. That is, the worker\nwill terminate the task if it runs longer than this.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "idle": {
+          "description": "This specifies the maximum amount of time the task can be idle - that is,\ngo without generating some output in either stdout or stderr. If the\nprocess is silent for more than the specified time, the worker will\nterminate the task.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "shutdown": {
+          "description": "If the execution or IO timeouts are exceeded, the worker will try to\ngracefully terminate the task and return any existing logs. However,\ntasks may be hard-frozen in which case this process will fail. This\ntimeout specifies how long to wait for a terminated task to shut down\ngracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.\nSIGKILL on *nix, CTRL_BREAK_EVENT on Windows).",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Digest": {
+      "description": "The CommandTask and CommandResult messages assume the existence of a service\nthat can serve blobs of content, identified by a hash and size known as a\n\"digest.\" The method by which these blobs may be retrieved is not specified\nhere, but a model implementation is in the Remote Execution API's\n\"ContentAddressibleStorage\" interface.\n\nIn the context of the RWAPI, a Digest will virtually always refer to the\ncontents of a file or a directory. The latter is represented by the\nbyte-encoded Directory message.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Digest",
+      "properties": {
+        "hash": {
+          "description": "A string-encoded hash (eg \"1a2b3c\", not the byte array [0x1a, 0x2b, 0x3c])\nusing an implementation-defined hash algorithm (eg SHA-256).",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the contents. While this is not strictly required as part of an\nidentifier (after all, any given hash will have exactly one canonical\nsize), it's useful in almost all cases when one might want to send or\nretrieve blobs of content and is included here for this reason.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Directory": {
+      "description": "The contents of a directory. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Directory",
+      "properties": {
+        "directories": {
+          "description": "Any subdirectories",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in this directory",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2FileMetadata"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata": {
+      "description": "The metadata for a directory. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "A pointer to the contents of the directory, in the form of a marshalled\nDirectory message."
+        },
+        "path": {
+          "description": "The path of the directory, as in FileMetadata.path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2FileMetadata": {
+      "description": "The metadata for a file. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2FileMetadata",
+      "properties": {
+        "contents": {
+          "description": "If the file is small enough, its contents may also or alternatively be\nlisted here.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "A pointer to the contents of the file. The method by which a client\nretrieves the contents from a CAS system is not defined here."
+        },
+        "isExecutable": {
+          "description": "Properties of the file",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The path of this file. If this message is part of the\nCommandOutputs.outputs fields, the path is relative to the execution root\nand must correspond to an entry in CommandTask.outputs.files. If this\nmessage is part of a Directory message, then the path is relative to the\nroot of that directory. All paths MUST be delimited by forward slashes.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleLongrunningCancelOperationRequest": {
+      "description": "The request message for Operations.CancelOperation.",
+      "id": "GoogleLongrunningCancelOperationRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "GoogleLongrunningListOperationsResponse": {
+      "description": "The response message for Operations.ListOperations.",
+      "id": "GoogleLongrunningListOperationsResponse",
+      "properties": {
+        "nextPageToken": {
+          "description": "The standard List next-page token.",
+          "type": "string"
+        },
+        "operations": {
+          "description": "A list of operations that matches the specified filter in the request.",
+          "items": {
+            "$ref": "GoogleLongrunningOperation"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleLongrunningOperation": {
+      "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+      "id": "GoogleLongrunningOperation",
+      "properties": {
+        "done": {
+          "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+          "type": "boolean"
+        },
+        "error": {
+          "$ref": "GoogleRpcStatus",
+          "description": "The error result of the operation in case of failure or cancellation."
+        },
+        "metadata": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+          "type": "object"
+        },
+        "name": {
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "type": "string"
+        },
+        "response": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+          "type": "object"
+        }
+      },
+      "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"
+    },
+    "GoogleRpcStatus": {
+      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "id": "GoogleRpcStatus",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleWatcherV1Change": {
+      "description": "A Change indicates the most recent state of an element.",
+      "id": "GoogleWatcherV1Change",
+      "properties": {
+        "continued": {
+          "description": "If true, this Change is followed by more Changes that are in the same group\nas this Change.",
+          "type": "boolean"
+        },
+        "data": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "The actual change data. This field is present only when `state() == EXISTS`\nor `state() == ERROR`. Please see google.protobuf.Any about how to use\nthe Any type.",
+          "type": "object"
+        },
+        "element": {
+          "description": "Name of the element, interpreted relative to the entity's actual\nname. \"\" refers to the entity itself. The element name is a valid\nUTF-8 string.",
+          "type": "string"
+        },
+        "resumeMarker": {
+          "description": "If present, provides a compact representation of all the messages that have\nbeen received by the caller for the given entity, e.g., it could be a\nsequence number or a multi-part timestamp/version vector. This marker can\nbe provided in the Request message, allowing the caller to resume the stream\nwatching at a specific point without fetching the initial state.",
+          "format": "byte",
+          "type": "string"
+        },
+        "state": {
+          "description": "The state of the `element`.",
+          "enum": [
+            "EXISTS",
+            "DOES_NOT_EXIST",
+            "INITIAL_STATE_SKIPPED",
+            "ERROR"
+          ],
+          "enumDescriptions": [
+            "The element exists and its full value is included in data.",
+            "The element does not exist.",
+            "Element may or may not exist. Used only for initial state delivery when\nthe client is not interested in fetching the initial state. See the\n\"Initial State\" section above.",
+            "The element may exist, but some error has occurred. More information is\navailable in the data field - the value is a serialized Status\nproto (from google.rpc.Status)"
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleWatcherV1ChangeBatch": {
+      "description": "A batch of Change messages.",
+      "id": "GoogleWatcherV1ChangeBatch",
+      "properties": {
+        "changes": {
+          "description": "A list of Change messages.",
+          "items": {
+            "$ref": "GoogleWatcherV1Change"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Remote Build Execution API",
+  "version": "v1",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/remotebuildexecution/v1/remotebuildexecution-gen.go b/remotebuildexecution/v1/remotebuildexecution-gen.go
new file mode 100644
index 0000000..1cdcf4f
--- /dev/null
+++ b/remotebuildexecution/v1/remotebuildexecution-gen.go
@@ -0,0 +1,5421 @@
+// Copyright 2019 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package remotebuildexecution provides access to the Remote Build Execution API.
+//
+// See https://cloud.google.com/remote-build-execution/docs/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/remotebuildexecution/v1"
+//   ...
+//   remotebuildexecutionService, err := remotebuildexecution.New(oauthHttpClient)
+package remotebuildexecution // import "google.golang.org/api/remotebuildexecution/v1"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "remotebuildexecution:v1"
+const apiName = "remotebuildexecution"
+const apiVersion = "v1"
+const basePath = "https://remotebuildexecution.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"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.Media = NewMediaService(s)
+	s.Operations = NewOperationsService(s)
+	s.Projects = NewProjectsService(s)
+	s.V1 = NewV1Service(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	Media *MediaService
+
+	Operations *OperationsService
+
+	Projects *ProjectsService
+
+	V1 *V1Service
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewMediaService(s *Service) *MediaService {
+	rs := &MediaService{s: s}
+	return rs
+}
+
+type MediaService struct {
+	s *Service
+}
+
+func NewOperationsService(s *Service) *OperationsService {
+	rs := &OperationsService{s: s}
+	return rs
+}
+
+type OperationsService struct {
+	s *Service
+}
+
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.Operations = NewProjectsOperationsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Operations *ProjectsOperationsService
+}
+
+func NewProjectsOperationsService(s *Service) *ProjectsOperationsService {
+	rs := &ProjectsOperationsService{s: s}
+	return rs
+}
+
+type ProjectsOperationsService struct {
+	s *Service
+}
+
+func NewV1Service(s *Service) *V1Service {
+	rs := &V1Service{s: s}
+	return rs
+}
+
+type V1Service struct {
+	s *Service
+}
+
+// BuildBazelRemoteExecutionV2Action: An `Action` captures all the
+// information about an execution which is required
+// to reproduce it.
+//
+// `Action`s are the core component of the [Execution] service. A
+// single
+// `Action` represents a repeatable action that can be performed by
+// the
+// execution service. `Action`s can be succinctly identified by the
+// digest of
+// their wire format encoding and, once an `Action` has been executed,
+// will be
+// cached in the action cache. Future requests can then use the cached
+// result
+// rather than needing to run afresh.
+//
+// When a server completes execution of an
+// Action, it MAY choose to
+// cache the result in
+// the ActionCache unless
+// `do_not_cache` is `true`. Clients SHOULD expect the server to do so.
+// By
+// default, future calls to
+// Execute the same
+// `Action` will also serve their results from the cache. Clients must
+// take care
+// to understand the caching behaviour. Ideally, all `Action`s will
+// be
+// reproducible so that serving a result from cache is always desirable
+// and
+// correct.
+type BuildBazelRemoteExecutionV2Action struct {
+	// CommandDigest: The digest of the Command
+	// to run, which MUST be present in the
+	// ContentAddressableStorage.
+	CommandDigest *BuildBazelRemoteExecutionV2Digest `json:"commandDigest,omitempty"`
+
+	// DoNotCache: If true, then the `Action`'s result cannot be cached.
+	DoNotCache bool `json:"doNotCache,omitempty"`
+
+	// InputRootDigest: The digest of the root
+	// Directory for the input
+	// files. The files in the directory tree are available in the
+	// correct
+	// location on the build machine before the command is executed. The
+	// root
+	// directory, as well as every subdirectory and content blob referred
+	// to, MUST
+	// be in the
+	// ContentAddressableStorage.
+	InputRootDigest *BuildBazelRemoteExecutionV2Digest `json:"inputRootDigest,omitempty"`
+
+	// Timeout: A timeout after which the execution should be killed. If the
+	// timeout is
+	// absent, then the client is specifying that the execution should
+	// continue
+	// as long as the server will let it. The server SHOULD impose a timeout
+	// if
+	// the client does not specify one, however, if the client does specify
+	// a
+	// timeout that is longer than the server's maximum timeout, the server
+	// MUST
+	// reject the request.
+	//
+	// The timeout is a part of the
+	// Action message, and
+	// therefore two `Actions` with different timeouts are different, even
+	// if they
+	// are otherwise identical. This is because, if they were not, running
+	// an
+	// `Action` with a lower timeout than is required might result in a
+	// cache hit
+	// from an execution run with a longer timeout, hiding the fact that
+	// the
+	// timeout is too short. By encoding it directly in the `Action`, a
+	// lower
+	// timeout will result in a cache miss and the execution timeout will
+	// fail
+	// immediately, rather than whenever the cache entry gets evicted.
+	Timeout string `json:"timeout,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CommandDigest") 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. "CommandDigest") 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 *BuildBazelRemoteExecutionV2Action) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Action
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ActionResult: An ActionResult represents
+// the result of an
+// Action being run.
+type BuildBazelRemoteExecutionV2ActionResult struct {
+	// ExecutionMetadata: The details of the execution that originally
+	// produced this result.
+	ExecutionMetadata *BuildBazelRemoteExecutionV2ExecutedActionMetadata `json:"executionMetadata,omitempty"`
+
+	// ExitCode: The exit code of the command.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// OutputDirectories: The output directories of the action. For each
+	// output directory requested
+	// in the `output_directories` field of the Action, if the
+	// corresponding
+	// directory existed after the action completed, a single entry will
+	// be
+	// present in the output list, which will contain the digest of a
+	// Tree message containing the
+	// directory tree, and the path equal exactly to the corresponding
+	// Action
+	// output_directories member.
+	//
+	// As an example, suppose the Action had an output directory `a/b/dir`
+	// and the
+	// execution produced the following contents in `a/b/dir`: a file named
+	// `bar`
+	// and a directory named `foo` with an executable file named `baz`.
+	// Then,
+	// output_directory will contain (hashes shortened for
+	// readability):
+	//
+	// ```json
+	// // OutputDirectory proto:
+	// {
+	//   path: "a/b/dir"
+	//   tree_digest: {
+	//     hash: "4a73bc9d03...",
+	//     size: 55
+	//   }
+	// }
+	// // Tree proto with hash "4a73bc9d03..." and size 55:
+	// {
+	//   root: {
+	//     files: [
+	//       {
+	//         name: "bar",
+	//         digest: {
+	//           hash: "4a73bc9d03...",
+	//           size: 65534
+	//         }
+	//       }
+	//     ],
+	//     directories: [
+	//       {
+	//         name: "foo",
+	//         digest: {
+	//           hash: "4cf2eda940...",
+	//           size: 43
+	//         }
+	//       }
+	//     ]
+	//   }
+	//   children : {
+	//     // (Directory proto with hash "4cf2eda940..." and size 43)
+	//     files: [
+	//       {
+	//         name: "baz",
+	//         digest: {
+	//           hash: "b2c941073e...",
+	//           size: 1294,
+	//         },
+	//         is_executable: true
+	//       }
+	//     ]
+	//   }
+	// }
+	// ```
+	OutputDirectories []*BuildBazelRemoteExecutionV2OutputDirectory `json:"outputDirectories,omitempty"`
+
+	// OutputDirectorySymlinks: The output directories of the action that
+	// are symbolic links to other
+	// directories. Those may be links to other output directories, or
+	// input
+	// directories, or even absolute paths outside of the working
+	// directory,
+	// if the server supports
+	// SymlinkAbsolutePathStrategy.ALLOWED.
+	// For each output directory requested in the `output_directories` field
+	// of
+	// the Action, if the directory file existed after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the `output_directories` field, if the directory was not a
+	// symbolic link.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// file where a directory is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputDirectorySymlinks []*BuildBazelRemoteExecutionV2OutputSymlink `json:"outputDirectorySymlinks,omitempty"`
+
+	// OutputFileSymlinks: The output files of the action that are symbolic
+	// links to other files. Those
+	// may be links to other output files, or input files, or even absolute
+	// paths
+	// outside of the working directory, if the server
+	// supports
+	// SymlinkAbsolutePathStrategy.ALLOWED.
+	// For each output file requested in the `output_files` field of the
+	// Action,
+	// if the corresponding file existed after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the `output_files` field, if the file was not a symbolic
+	// link.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFileSymlinks []*BuildBazelRemoteExecutionV2OutputSymlink `json:"outputFileSymlinks,omitempty"`
+
+	// OutputFiles: The output files of the action. For each output file
+	// requested in the
+	// `output_files` field of the Action, if the corresponding file existed
+	// after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the output_file_symlinks field, if the file was a symbolic link
+	// to
+	// another file.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFiles []*BuildBazelRemoteExecutionV2OutputFile `json:"outputFiles,omitempty"`
+
+	// StderrDigest: The digest for a blob containing the standard error of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stderr_raw` for when this will be set.
+	StderrDigest *BuildBazelRemoteExecutionV2Digest `json:"stderrDigest,omitempty"`
+
+	// StderrRaw: The standard error buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stderr_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StderrRaw string `json:"stderrRaw,omitempty"`
+
+	// StdoutDigest: The digest for a blob containing the standard output of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stdout_raw` for when this will be set.
+	StdoutDigest *BuildBazelRemoteExecutionV2Digest `json:"stdoutDigest,omitempty"`
+
+	// StdoutRaw: The standard output buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stdout_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StdoutRaw string `json:"stdoutRaw,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExecutionMetadata")
+	// 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. "ExecutionMetadata") 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 *BuildBazelRemoteExecutionV2ActionResult) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ActionResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Command: A `Command` is the actual command
+// executed by a worker running an
+// Action and specifications of its
+// environment.
+//
+// Except as otherwise required, the environment (such as which
+// system
+// libraries or binaries are available, and what filesystems are mounted
+// where)
+// is defined by and specific to the implementation of the remote
+// execution API.
+type BuildBazelRemoteExecutionV2Command struct {
+	// Arguments: The arguments to the command. The first argument must be
+	// the path to the
+	// executable, which must be either a relative path, in which case it
+	// is
+	// evaluated with respect to the input root, or an absolute path.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: The environment variables to set when running
+	// the program. The worker may
+	// provide its own default environment variables; these defaults can
+	// be
+	// overridden using this field. Additional variables can also be
+	// specified.
+	//
+	// In order to ensure that equivalent `Command`s always hash to the
+	// same
+	// value, the environment variables MUST be lexicographically sorted by
+	// name.
+	// Sorting of strings is done by code point, equivalently, by the UTF-8
+	// bytes.
+	EnvironmentVariables []*BuildBazelRemoteExecutionV2CommandEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// OutputDirectories: A list of the output directories that the client
+	// expects to retrieve from
+	// the action. Only the contents of the indicated directories
+	// (recursively
+	// including the contents of their subdirectories) will be
+	// returned, as well as files listed in `output_files`. Other files that
+	// may
+	// be created during command execution are discarded.
+	//
+	// The paths are relative to the working directory of the action
+	// execution.
+	// The paths are specified using a single forward slash (`/`) as a
+	// path
+	// separator, even if the execution platform natively uses a
+	// different
+	// separator. The path MUST NOT include a trailing slash, nor a leading
+	// slash,
+	// being a relative path. The special value of empty string is
+	// allowed,
+	// although not recommended, and can be used to capture the entire
+	// working
+	// directory tree, including inputs.
+	//
+	// In order to ensure consistent hashing of the same Action, the output
+	// paths
+	// MUST be sorted lexicographically by code point (or, equivalently, by
+	// UTF-8
+	// bytes).
+	//
+	// An output directory cannot be duplicated, be a parent of another
+	// output
+	// directory, be a parent of a listed output file, or have the same path
+	// as
+	// any of the listed output files.
+	OutputDirectories []string `json:"outputDirectories,omitempty"`
+
+	// OutputFiles: A list of the output files that the client expects to
+	// retrieve from the
+	// action. Only the listed files, as well as directories listed
+	// in
+	// `output_directories`, will be returned to the client as output.
+	// Other files that may be created during command execution are
+	// discarded.
+	//
+	// The paths are relative to the working directory of the action
+	// execution.
+	// The paths are specified using a single forward slash (`/`) as a
+	// path
+	// separator, even if the execution platform natively uses a
+	// different
+	// separator. The path MUST NOT include a trailing slash, nor a leading
+	// slash,
+	// being a relative path.
+	//
+	// In order to ensure consistent hashing of the same Action, the output
+	// paths
+	// MUST be sorted lexicographically by code point (or, equivalently, by
+	// UTF-8
+	// bytes).
+	//
+	// An output file cannot be duplicated, be a parent of another output
+	// file, be
+	// a child of a listed output directory, or have the same path as any of
+	// the
+	// listed output directories.
+	OutputFiles []string `json:"outputFiles,omitempty"`
+
+	// Platform: The platform requirements for the execution environment.
+	// The server MAY
+	// choose to execute the action on any worker satisfying the
+	// requirements, so
+	// the client SHOULD ensure that running the action on any such worker
+	// will
+	// have the same result.
+	Platform *BuildBazelRemoteExecutionV2Platform `json:"platform,omitempty"`
+
+	// WorkingDirectory: The working directory, relative to the input root,
+	// for the command to run
+	// in. It must be a directory which exists in the input tree. If it is
+	// left
+	// empty, then the action is run in the input root.
+	WorkingDirectory string `json:"workingDirectory,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *BuildBazelRemoteExecutionV2Command) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Command
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2CommandEnvironmentVariable: An
+// `EnvironmentVariable` is one variable to set in the running
+// program's
+// environment.
+type BuildBazelRemoteExecutionV2CommandEnvironmentVariable struct {
+	// Name: The variable name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The variable 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 *BuildBazelRemoteExecutionV2CommandEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2CommandEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Digest: A content digest. A digest for a
+// given blob consists of the size of the blob
+// and its hash. The hash algorithm to use is defined by the server, but
+// servers
+// SHOULD use SHA-256.
+//
+// The size is considered to be an integral part of the digest and
+// cannot be
+// separated. That is, even if the `hash` field is correctly specified
+// but
+// `size_bytes` is not, the server MUST reject the request.
+//
+// The reason for including the size in the digest is as follows: in a
+// great
+// many cases, the server needs to know the size of the blob it is about
+// to work
+// with prior to starting an operation with it, such as flattening
+// Merkle tree
+// structures or streaming it to a worker. Technically, the server
+// could
+// implement a separate metadata store, but this results in a
+// significantly more
+// complicated implementation as opposed to having the client specify
+// the size
+// up-front (or storing the size along with the digest in every message
+// where
+// digests are embedded). This does mean that the API leaks some
+// implementation
+// details of (what we consider to be) a reasonable server
+// implementation, but
+// we consider this to be a worthwhile tradeoff.
+//
+// When a `Digest` is used to refer to a proto message, it always refers
+// to the
+// message in binary encoded form. To ensure consistent hashing, clients
+// and
+// servers MUST ensure that they serialize messages according to the
+// following
+// rules, even if there are alternate valid encodings for the same
+// message.
+// - Fields are serialized in tag order.
+// - There are no unknown fields.
+// - There are no duplicate fields.
+// - Fields are serialized according to the default semantics for their
+// type.
+//
+// Most protocol buffer implementations will always follow these rules
+// when
+// serializing, but care should be taken to avoid shortcuts. For
+// instance,
+// concatenating two messages to merge them may produce duplicate
+// fields.
+type BuildBazelRemoteExecutionV2Digest struct {
+	// Hash: The hash. In the case of SHA-256, it will always be a lowercase
+	// hex string
+	// exactly 64 characters long.
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the blob, in bytes.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *BuildBazelRemoteExecutionV2Digest) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Digest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Directory: A `Directory` represents a
+// directory node in a file tree, containing zero or
+// more children FileNodes,
+// DirectoryNodes and
+// SymlinkNodes.
+// Each `Node` contains its name in the directory, either the digest of
+// its
+// content (either a file blob or a `Directory` proto) or a symlink
+// target, as
+// well as possibly some metadata about the file or directory.
+//
+// In order to ensure that two equivalent directory trees hash to the
+// same
+// value, the following restrictions MUST be obeyed when constructing
+// a
+// a `Directory`:
+//   - Every child in the directory must have a path of exactly one
+// segment.
+//     Multiple levels of directory hierarchy may not be collapsed.
+//   - Each child in the directory must have a unique path segment (file
+// name).
+//   - The files, directories and symlinks in the directory must each be
+// sorted
+//     in lexicographical order by path. The path strings must be sorted
+// by code
+//     point, equivalently, by UTF-8 bytes.
+//
+// A `Directory` that obeys the restrictions is said to be in canonical
+// form.
+//
+// As an example, the following could be used for a file named `bar` and
+// a
+// directory named `foo` with an executable file named `baz` (hashes
+// shortened
+// for readability):
+//
+// ```json
+// // (Directory proto)
+// {
+//   files: [
+//     {
+//       name: "bar",
+//       digest: {
+//         hash: "4a73bc9d03...",
+//         size: 65534
+//       }
+//     }
+//   ],
+//   directories: [
+//     {
+//       name: "foo",
+//       digest: {
+//         hash: "4cf2eda940...",
+//         size: 43
+//       }
+//     }
+//   ]
+// }
+//
+// // (Directory proto with hash "4cf2eda940..." and size 43)
+// {
+//   files: [
+//     {
+//       name: "baz",
+//       digest: {
+//         hash: "b2c941073e...",
+//         size: 1294,
+//       },
+//       is_executable: true
+//     }
+//   ]
+// }
+// ```
+type BuildBazelRemoteExecutionV2Directory struct {
+	// Directories: The subdirectories in the directory.
+	Directories []*BuildBazelRemoteExecutionV2DirectoryNode `json:"directories,omitempty"`
+
+	// Files: The files in the directory.
+	Files []*BuildBazelRemoteExecutionV2FileNode `json:"files,omitempty"`
+
+	// Symlinks: The symlinks in the directory.
+	Symlinks []*BuildBazelRemoteExecutionV2SymlinkNode `json:"symlinks,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *BuildBazelRemoteExecutionV2Directory) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Directory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2DirectoryNode: A `DirectoryNode`
+// represents a child of a
+// Directory which is itself
+// a `Directory` and its associated metadata.
+type BuildBazelRemoteExecutionV2DirectoryNode struct {
+	// Digest: The digest of the
+	// Directory object
+	// represented. See Digest
+	// for information about how to take the digest of a proto message.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// Name: The name of the directory.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2DirectoryNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2DirectoryNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecuteOperationMetadata: Metadata about
+// an ongoing
+// execution, which
+// will be contained in the metadata
+// field of the
+// Operation.
+type BuildBazelRemoteExecutionV2ExecuteOperationMetadata struct {
+	// ActionDigest: The digest of the Action
+	// being executed.
+	ActionDigest *BuildBazelRemoteExecutionV2Digest `json:"actionDigest,omitempty"`
+
+	// Possible values:
+	//   "UNKNOWN"
+	//   "CACHE_CHECK" - Checking the result against the cache.
+	//   "QUEUED" - Currently idle, awaiting a free machine to execute.
+	//   "EXECUTING" - Currently being executed by a worker.
+	//   "COMPLETED" - Finished execution.
+	Stage string `json:"stage,omitempty"`
+
+	// StderrStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard error.
+	StderrStreamName string `json:"stderrStreamName,omitempty"`
+
+	// StdoutStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard output.
+	StdoutStreamName string `json:"stdoutStreamName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionDigest") 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. "ActionDigest") 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 *BuildBazelRemoteExecutionV2ExecuteOperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecuteOperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecuteResponse: The response message
+// for
+// Execution.Execute,
+// which will be contained in the response
+// field of the
+// Operation.
+type BuildBazelRemoteExecutionV2ExecuteResponse struct {
+	// CachedResult: True if the result was served from cache, false if it
+	// was executed.
+	CachedResult bool `json:"cachedResult,omitempty"`
+
+	// Result: The result of the action.
+	Result *BuildBazelRemoteExecutionV2ActionResult `json:"result,omitempty"`
+
+	// ServerLogs: An optional list of additional log outputs the server
+	// wishes to provide. A
+	// server can use this to return execution-specific logs however it
+	// wishes.
+	// This is intended primarily to make it easier for users to debug
+	// issues that
+	// may be outside of the actual job execution, such as by identifying
+	// the
+	// worker executing the action or by providing logs from the worker's
+	// setup
+	// phase. The keys SHOULD be human readable so that a client can display
+	// them
+	// to a user.
+	ServerLogs map[string]BuildBazelRemoteExecutionV2LogFile `json:"serverLogs,omitempty"`
+
+	// Status: If the status has a code other than `OK`, it indicates that
+	// the action did
+	// not finish execution. For example, if the operation times out
+	// during
+	// execution, the status will have a `DEADLINE_EXCEEDED` code. Servers
+	// MUST
+	// use this field for errors in execution, rather than the error field
+	// on the
+	// `Operation` object.
+	//
+	// If the status code is other than `OK`, then the result MUST NOT be
+	// cached.
+	// For an error status, the `result` field is optional; the server
+	// may
+	// populate the output-, stdout-, and stderr-related fields if it has
+	// any
+	// information available, such as the stdout and stderr of a timed-out
+	// action.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CachedResult") 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. "CachedResult") 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 *BuildBazelRemoteExecutionV2ExecuteResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecuteResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecutedActionMetadata:
+// ExecutedActionMetadata contains details about a completed execution.
+type BuildBazelRemoteExecutionV2ExecutedActionMetadata struct {
+	// ExecutionCompletedTimestamp: When the worker completed executing the
+	// action command.
+	ExecutionCompletedTimestamp string `json:"executionCompletedTimestamp,omitempty"`
+
+	// ExecutionStartTimestamp: When the worker started executing the action
+	// command.
+	ExecutionStartTimestamp string `json:"executionStartTimestamp,omitempty"`
+
+	// InputFetchCompletedTimestamp: When the worker finished fetching
+	// action inputs.
+	InputFetchCompletedTimestamp string `json:"inputFetchCompletedTimestamp,omitempty"`
+
+	// InputFetchStartTimestamp: When the worker started fetching action
+	// inputs.
+	InputFetchStartTimestamp string `json:"inputFetchStartTimestamp,omitempty"`
+
+	// OutputUploadCompletedTimestamp: When the worker finished uploading
+	// action outputs.
+	OutputUploadCompletedTimestamp string `json:"outputUploadCompletedTimestamp,omitempty"`
+
+	// OutputUploadStartTimestamp: When the worker started uploading action
+	// outputs.
+	OutputUploadStartTimestamp string `json:"outputUploadStartTimestamp,omitempty"`
+
+	// QueuedTimestamp: When was the action added to the queue.
+	QueuedTimestamp string `json:"queuedTimestamp,omitempty"`
+
+	// Worker: The name of the worker which ran the execution.
+	Worker string `json:"worker,omitempty"`
+
+	// WorkerCompletedTimestamp: When the worker completed the action,
+	// including all stages.
+	WorkerCompletedTimestamp string `json:"workerCompletedTimestamp,omitempty"`
+
+	// WorkerStartTimestamp: When the worker received the action.
+	WorkerStartTimestamp string `json:"workerStartTimestamp,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ExecutionCompletedTimestamp") 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.
+	// "ExecutionCompletedTimestamp") 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 *BuildBazelRemoteExecutionV2ExecutedActionMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecutedActionMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2FileNode: A `FileNode` represents a single
+// file and associated metadata.
+type BuildBazelRemoteExecutionV2FileNode struct {
+	// Digest: The digest of the file's content.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Name: The name of the file.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2FileNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2FileNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2LogFile: A `LogFile` is a log stored in
+// the CAS.
+type BuildBazelRemoteExecutionV2LogFile struct {
+	// Digest: The digest of the log contents.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// HumanReadable: This is a hint as to the purpose of the log, and is
+	// set to true if the log
+	// is human-readable text that can be usefully displayed to a user, and
+	// false
+	// otherwise. For instance, if a command-line client wishes to print
+	// the
+	// server logs to the terminal for a failed action, this allows it to
+	// avoid
+	// displaying a binary file.
+	HumanReadable bool `json:"humanReadable,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2LogFile) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2LogFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputDirectory: An `OutputDirectory` is
+// the output in an `ActionResult` corresponding to a
+// directory's full contents rather than a single file.
+type BuildBazelRemoteExecutionV2OutputDirectory struct {
+	// Path: The full path of the directory relative to the working
+	// directory. The path
+	// separator is a forward slash `/`. Since this is a relative path, it
+	// MUST
+	// NOT begin with a leading forward slash. The empty string value is
+	// allowed,
+	// and it denotes the entire working directory.
+	Path string `json:"path,omitempty"`
+
+	// TreeDigest: The digest of the encoded
+	// Tree proto containing the
+	// directory's contents.
+	TreeDigest *BuildBazelRemoteExecutionV2Digest `json:"treeDigest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Path") 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. "Path") 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 *BuildBazelRemoteExecutionV2OutputDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputFile: An `OutputFile` is similar to
+// a
+// FileNode, but it is used as an
+// output in an `ActionResult`. It allows a full file path rather
+// than
+// only a name.
+//
+// `OutputFile` is binary-compatible with `FileNode`.
+type BuildBazelRemoteExecutionV2OutputFile struct {
+	// Digest: The digest of the file's content.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The full path of the file relative to the working directory,
+	// including the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2OutputFile) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputSymlink: An `OutputSymlink` is
+// similar to a
+// Symlink, but it is used as an
+// output in an `ActionResult`.
+//
+// `OutputSymlink` is binary-compatible with `SymlinkNode`.
+type BuildBazelRemoteExecutionV2OutputSymlink struct {
+	// Path: The full path of the symlink relative to the working directory,
+	// including the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// Target: The target path of the symlink. The path separator is a
+	// forward slash `/`.
+	// The target path can be relative to the parent directory of the
+	// symlink or
+	// it can be an absolute path starting with `/`. Support for absolute
+	// paths
+	// can be checked using the Capabilities
+	// API. The canonical form forbids the substrings `/./` and `//` in the
+	// target
+	// path. `..` components are allowed anywhere in the target path.
+	Target string `json:"target,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Path") 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. "Path") 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 *BuildBazelRemoteExecutionV2OutputSymlink) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputSymlink
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Platform: A `Platform` is a set of
+// requirements, such as hardware, operating system, or
+// compiler toolchain, for an
+// Action's execution
+// environment. A `Platform` is represented as a series of key-value
+// pairs
+// representing the properties that are required of the platform.
+type BuildBazelRemoteExecutionV2Platform struct {
+	// Properties: The properties that make up this platform. In order to
+	// ensure that
+	// equivalent `Platform`s always hash to the same value, the properties
+	// MUST
+	// be lexicographically sorted by name, and then by value. Sorting of
+	// strings
+	// is done by code point, equivalently, by the UTF-8 bytes.
+	Properties []*BuildBazelRemoteExecutionV2PlatformProperty `json:"properties,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Properties") 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. "Properties") 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 *BuildBazelRemoteExecutionV2Platform) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Platform
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2PlatformProperty: A single property for
+// the environment. The server is responsible for
+// specifying the property `name`s that it accepts. If an unknown `name`
+// is
+// provided in the requirements for an
+// Action, the server SHOULD
+// reject the execution request. If permitted by the server, the same
+// `name`
+// may occur multiple times.
+//
+// The server is also responsible for specifying the interpretation
+// of
+// property `value`s. For instance, a property describing how much RAM
+// must be
+// available may be interpreted as allowing a worker with 16GB to
+// fulfill a
+// request for 8GB, while a property describing the OS environment on
+// which
+// the action must be performed may require an exact match with the
+// worker's
+// OS.
+//
+// The server MAY use the `value` of one or more properties to determine
+// how
+// it sets up the execution environment, such as by making specific
+// system
+// files available to the worker.
+type BuildBazelRemoteExecutionV2PlatformProperty struct {
+	// Name: The property name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The property 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 *BuildBazelRemoteExecutionV2PlatformProperty) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2PlatformProperty
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2RequestMetadata: An optional Metadata to
+// attach to any RPC request to tell the server about an
+// external context of the request. The server may use this for logging
+// or other
+// purposes. To use it, the client attaches the header to the call using
+// the
+// canonical proto serialization:
+// name: build.bazel.remote.execution.v2.requestmetadata-bin
+// contents: the base64 encoded binary RequestMetadata message.
+type BuildBazelRemoteExecutionV2RequestMetadata struct {
+	// ActionId: An identifier that ties multiple requests to the same
+	// action.
+	// For example, multiple requests to the CAS, Action Cache, and
+	// Execution
+	// API are used in order to compile foo.cc.
+	ActionId string `json:"actionId,omitempty"`
+
+	// CorrelatedInvocationsId: An identifier to tie multiple tool
+	// invocations together. For example,
+	// runs of foo_test, bar_test and baz_test on a post-submit of a given
+	// patch.
+	CorrelatedInvocationsId string `json:"correlatedInvocationsId,omitempty"`
+
+	// ToolDetails: The details for the tool invoking the requests.
+	ToolDetails *BuildBazelRemoteExecutionV2ToolDetails `json:"toolDetails,omitempty"`
+
+	// ToolInvocationId: An identifier that ties multiple actions together
+	// to a final result.
+	// For example, multiple actions are required to build and run foo_test.
+	ToolInvocationId string `json:"toolInvocationId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionId") 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. "ActionId") 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 *BuildBazelRemoteExecutionV2RequestMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2RequestMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2SymlinkNode: A `SymlinkNode` represents a
+// symbolic link.
+type BuildBazelRemoteExecutionV2SymlinkNode struct {
+	// Name: The name of the symlink.
+	Name string `json:"name,omitempty"`
+
+	// Target: The target path of the symlink. The path separator is a
+	// forward slash `/`.
+	// The target path can be relative to the parent directory of the
+	// symlink or
+	// it can be an absolute path starting with `/`. Support for absolute
+	// paths
+	// can be checked using the Capabilities
+	// API. The canonical form forbids the substrings `/./` and `//` in the
+	// target
+	// path. `..` components are allowed anywhere in the target path.
+	Target string `json:"target,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 *BuildBazelRemoteExecutionV2SymlinkNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2SymlinkNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ToolDetails: Details for the tool used to
+// call the API.
+type BuildBazelRemoteExecutionV2ToolDetails struct {
+	// ToolName: Name of the tool, e.g. bazel.
+	ToolName string `json:"toolName,omitempty"`
+
+	// ToolVersion: Version of the tool used for the request, e.g. 5.0.3.
+	ToolVersion string `json:"toolVersion,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ToolName") 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. "ToolName") 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 *BuildBazelRemoteExecutionV2ToolDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ToolDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Tree: A `Tree` contains all the
+// Directory protos in a
+// single directory Merkle tree, compressed into one message.
+type BuildBazelRemoteExecutionV2Tree struct {
+	// Children: All the child directories: the directories referred to by
+	// the root and,
+	// recursively, all its children. In order to reconstruct the directory
+	// tree,
+	// the client must take the digests of each of the child directories and
+	// then
+	// build up a tree starting from the `root`.
+	Children []*BuildBazelRemoteExecutionV2Directory `json:"children,omitempty"`
+
+	// Root: The root directory in the tree.
+	Root *BuildBazelRemoteExecutionV2Directory `json:"root,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Children") 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. "Children") 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 *BuildBazelRemoteExecutionV2Tree) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Tree
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleBytestreamMedia: Media resource.
+type GoogleBytestreamMedia struct {
+	// ResourceName: Name of the media resource.
+	ResourceName string `json:"resourceName,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ResourceName") 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. "ResourceName") 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 *GoogleBytestreamMedia) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleBytestreamMedia
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildbotCommandDurations: CommandDuration
+// contains the various duration metrics tracked when a bot
+// performs a command.
+type GoogleDevtoolsRemotebuildbotCommandDurations struct {
+	// DockerPrep: The time spent preparing the command to be run in a
+	// Docker container
+	// (includes pulling the Docker image, if necessary).
+	DockerPrep string `json:"dockerPrep,omitempty"`
+
+	// Download: The time spent downloading the input files and constructing
+	// the working
+	// directory.
+	Download string `json:"download,omitempty"`
+
+	// Execution: The time spent executing the command (i.e., doing useful
+	// work).
+	Execution string `json:"execution,omitempty"`
+
+	// IsoPrepDone: The timestamp when preparation is done and bot starts
+	// downloading files.
+	IsoPrepDone string `json:"isoPrepDone,omitempty"`
+
+	// Overall: The time spent completing the command, in total.
+	Overall string `json:"overall,omitempty"`
+
+	// Stdout: The time spent uploading the stdout logs.
+	Stdout string `json:"stdout,omitempty"`
+
+	// Upload: The time spent uploading the output files.
+	Upload string `json:"upload,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DockerPrep") 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. "DockerPrep") 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 *GoogleDevtoolsRemotebuildbotCommandDurations) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildbotCommandDurations
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildbotCommandEvents: CommandEvents contains
+// counters for the number of warnings and errors
+// that occurred during the execution of a command.
+type GoogleDevtoolsRemotebuildbotCommandEvents struct {
+	// DockerCacheHit: Indicates whether we are using a cached Docker image
+	// (true) or had to pull
+	// the Docker image (false) for this command.
+	DockerCacheHit bool `json:"dockerCacheHit,omitempty"`
+
+	// NumErrors: The number of errors reported.
+	NumErrors uint64 `json:"numErrors,omitempty,string"`
+
+	// NumWarnings: The number of warnings reported.
+	NumWarnings uint64 `json:"numWarnings,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "DockerCacheHit") 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. "DockerCacheHit") 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 *GoogleDevtoolsRemotebuildbotCommandEvents) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildbotCommandEvents
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest:
+// The request used for `CreateInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest struct {
+	// Instance: Specifies the instance to create.
+	// The name in the instance, if specified in the instance, is ignored.
+	Instance *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance `json:"instance,omitempty"`
+
+	// InstanceId: ID of the created instance.
+	// A valid `instance_id` must:
+	// be 6-50 characters long,
+	// contains only lowercase letters, digits, hyphens and
+	// underscores,
+	// start with a lowercase letter, and
+	// end with a lowercase letter or a digit.
+	InstanceId string `json:"instanceId,omitempty"`
+
+	// Parent: Resource name of the project containing the instance.
+	// Format: `projects/[PROJECT_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Instance") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Instance") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest:
+//  The request used for `CreateWorkerPool`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest struct {
+	// Parent: Resource name of the instance in which to create the new
+	// worker pool.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// PoolId: ID of the created worker pool.
+	// A valid pool ID must:
+	// be 6-50 characters long,
+	// contain only lowercase letters, digits, hyphens and
+	// underscores,
+	// start with a lowercase letter, and
+	// end with a lowercase letter or a digit.
+	PoolId string `json:"poolId,omitempty"`
+
+	// WorkerPool: Specifies the worker pool to create.
+	// The name in the worker pool, if specified, is ignored.
+	WorkerPool *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPool,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest:
+// The request used for `DeleteInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest struct {
+	// Name: Name of the instance to delete.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest:
+//  The request used for DeleteWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest struct {
+	// Name: Name of the worker pool to
+	// delete.
+	// Format:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerp
+	// ools/[POOL_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest: The
+// request used for `GetInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest struct {
+	// Name: Name of the instance to retrieve.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest:
+// The request used for GetWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest struct {
+	// Name: Name of the worker pool to
+	// retrieve.
+	// Format:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/worke
+	// rpools/[POOL_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance: Instance
+// conceptually encapsulates all Remote Build Execution resources
+// for remote builds.
+// An instance consists of storage and compute resources (for
+// example,
+// `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used
+// for
+// running remote builds.
+// All Remote Build Execution API calls are scoped to an instance.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance struct {
+	// Location: The location is a GCP region. Currently only `us-central1`
+	// is supported.
+	Location string `json:"location,omitempty"`
+
+	// Name: Output only. Instance resource name formatted
+	// as:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	// Name should not be populated when creating an instance since it is
+	// provided
+	// in the `instance_id` field.
+	Name string `json:"name,omitempty"`
+
+	// State: Output only. State of the instance.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Not a valid state, but the default value of
+	// the enum.
+	//   "CREATING" - The instance is in state `CREATING` once
+	// `CreateInstance` is called and
+	// before the instance is ready for use.
+	//   "RUNNING" - The instance is in state `RUNNING` when it is ready for
+	// use.
+	//   "INACTIVE" - An `INACTIVE` instance indicates that there is a
+	// problem that needs to be
+	// fixed. Such instances cannot be used for execution and instances
+	// that
+	// remain in this state for a significant period of time will be
+	// removed
+	// permanently.
+	State string `json:"state,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Location") 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. "Location") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest struct {
+	// Parent: Resource name of the project.
+	// Format: `projects/[PROJECT_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse struct {
+	// Instances: The list of instances in a given project.
+	Instances []*GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance `json:"instances,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Instances") 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. "Instances") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest struct {
+	// Parent: Resource name of the instance.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse struct {
+	// WorkerPools: The list of worker pools in a given instance.
+	WorkerPools []*GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPools,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "WorkerPools") 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. "WorkerPools") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest:
+//  The request used for UpdateWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest struct {
+	// UpdateMask: The update mask applies to worker_pool. For the
+	// `FieldMask` definition,
+	// see
+	// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+	// If an empty update_mask is provided, only the non-default valued
+	// field in
+	// the worker pool field will be updated. Note that in order to update a
+	// field
+	// to the default value (zero, false, empty string) an explicit
+	// update_mask
+	// must be provided.
+	UpdateMask string `json:"updateMask,omitempty"`
+
+	// WorkerPool: Specifies the worker pool to update.
+	WorkerPool *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPool,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "UpdateMask") 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. "UpdateMask") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig: Defines
+// the configuration to be used for a creating workers in
+// the worker pool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig struct {
+	// DiskSizeGb: Required. Size of the disk attached to the worker, in
+	// GB.
+	// See https://cloud.google.com/compute/docs/disks/
+	DiskSizeGb int64 `json:"diskSizeGb,omitempty,string"`
+
+	// DiskType: Required. Disk Type to use for the worker.
+	// See [Storage
+	// options](https://cloud.google.com/compute/docs/disks/#introduction).
+	// C
+	// urrently only `pd-standard` is supported.
+	DiskType string `json:"diskType,omitempty"`
+
+	// MachineType: Required. Machine type of the worker, such as
+	// n1-standard-2.
+	// See https://cloud.google.com/compute/docs/machine-types for a list
+	// of
+	// supported machine types.
+	MachineType string `json:"machineType,omitempty"`
+
+	// MinCpuPlatform: Minimum CPU platform to use when creating the
+	// worker.
+	// See [CPU
+	// Platforms](https://cloud.google.com/compute/docs/cpu-platforms).
+	MinCpuPlatform string `json:"minCpuPlatform,omitempty"`
+
+	// Reserved: Output only. `reserved=true` means the worker is reserved
+	// and won't be
+	// preempted.
+	Reserved bool `json:"reserved,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DiskSizeGb") 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. "DiskSizeGb") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool: A worker
+// pool resource in the Remote Build Execution API.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool struct {
+	// Name: WorkerPool resource name formatted
+	// as:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_I
+	// D]`.
+	// name should not be populated when creating a worker pool since it
+	// is
+	// provided in the `poolId` field.
+	Name string `json:"name,omitempty"`
+
+	// State: Output only. State of the worker pool.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Not a valid state, but the default value of
+	// the enum.
+	//   "CREATING" - The worker pool is in state `CREATING` once
+	// `CreateWorkerPool` is called
+	// and before all requested workers are ready.
+	//   "RUNNING" - The worker pool is in state `RUNNING` when all its
+	// workers are ready for
+	// use.
+	//   "UPDATING" - The worker pool is in state `UPDATING` once
+	// `UpdateWorkerPool` is called
+	// and before the new configuration has all the requested workers ready
+	// for
+	// use, and no older configuration has any workers. At that point the
+	// state
+	// transitions to `RUNNING`.
+	//   "DELETING" - The worker pool is in state `DELETING` once the
+	// `Delete` method is called
+	// and before the deletion completes.
+	//   "INACTIVE" - The worker pool is in state `INACTIVE` when the
+	// instance hosting the
+	// worker pool in not running.
+	State string `json:"state,omitempty"`
+
+	// WorkerConfig: Specifies the properties, such as machine type and disk
+	// size, used for
+	// creating workers in a worker pool.
+	WorkerConfig *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig `json:"workerConfig,omitempty"`
+
+	// WorkerCount: The desired number of workers in the worker pool. Must
+	// be a value between
+	// 0 and 1000.
+	WorkerCount int64 `json:"workerCount,omitempty,string"`
+
+	// 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testActionResult: An ActionResult
+// represents the result of an
+// Action being run.
+type GoogleDevtoolsRemoteexecutionV1testActionResult struct {
+	// ExitCode: The exit code of the command.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// OutputDirectories: The output directories of the action. For each
+	// output directory requested
+	// in the `output_directories` field of the Action, if the
+	// corresponding
+	// directory existed after the action completed, a single entry will
+	// be
+	// present in the output list, which will contain the digest of
+	// a Tree message containing
+	// the directory tree, and the path equal exactly to the corresponding
+	// Action
+	// output_directories member.
+	// As an example, suppose the Action had an output directory `a/b/dir`
+	// and the
+	// execution produced the following contents in `a/b/dir`: a file named
+	// `bar`
+	// and a directory named `foo` with an executable file named `baz`.
+	// Then,
+	// output_directory will contain (hashes shortened for
+	// readability):
+	//
+	// ```json
+	// // OutputDirectory proto:
+	// {
+	//   path: "a/b/dir"
+	//   tree_digest: {
+	//     hash: "4a73bc9d03...",
+	//     size: 55
+	//   }
+	// }
+	// // Tree proto with hash "4a73bc9d03..." and size 55:
+	// {
+	//   root: {
+	//     files: [
+	//       {
+	//         name: "bar",
+	//         digest: {
+	//           hash: "4a73bc9d03...",
+	//           size: 65534
+	//         }
+	//       }
+	//     ],
+	//     directories: [
+	//       {
+	//         name: "foo",
+	//         digest: {
+	//           hash: "4cf2eda940...",
+	//           size: 43
+	//         }
+	//       }
+	//     ]
+	//   }
+	//   children : {
+	//     // (Directory proto with hash "4cf2eda940..." and size 43)
+	//     files: [
+	//       {
+	//         name: "baz",
+	//         digest: {
+	//           hash: "b2c941073e...",
+	//           size: 1294,
+	//         },
+	//         is_executable: true
+	//       }
+	//     ]
+	//   }
+	// }
+	// ```
+	OutputDirectories []*GoogleDevtoolsRemoteexecutionV1testOutputDirectory `json:"outputDirectories,omitempty"`
+
+	// OutputFiles: The output files of the action. For each output file
+	// requested in the
+	// `output_files` field of the Action, if the corresponding file existed
+	// after
+	// the action completed, a single entry will be present in the output
+	// list.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFiles []*GoogleDevtoolsRemoteexecutionV1testOutputFile `json:"outputFiles,omitempty"`
+
+	// StderrDigest: The digest for a blob containing the standard error of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stderr_raw` for when this will be set.
+	StderrDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"stderrDigest,omitempty"`
+
+	// StderrRaw: The standard error buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stderr_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StderrRaw string `json:"stderrRaw,omitempty"`
+
+	// StdoutDigest: The digest for a blob containing the standard output of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stdout_raw` for when this will be set.
+	StdoutDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"stdoutDigest,omitempty"`
+
+	// StdoutRaw: The standard output buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stdout_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StdoutRaw string `json:"stdoutRaw,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExitCode") 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. "ExitCode") 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 *GoogleDevtoolsRemoteexecutionV1testActionResult) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testActionResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testCommand: A `Command` is the actual
+// command executed by a worker running an
+// Action.
+//
+// Except as otherwise required, the environment (such as which
+// system
+// libraries or binaries are available, and what filesystems are mounted
+// where)
+// is defined by and specific to the implementation of the remote
+// execution API.
+type GoogleDevtoolsRemoteexecutionV1testCommand struct {
+	// Arguments: The arguments to the command. The first argument must be
+	// the path to the
+	// executable, which must be either a relative path, in which case it
+	// is
+	// evaluated with respect to the input root, or an absolute path.
+	//
+	// The working directory will always be the input root.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: The environment variables to set when running
+	// the program. The worker may
+	// provide its own default environment variables; these defaults can
+	// be
+	// overridden using this field. Additional variables can also be
+	// specified.
+	//
+	// In order to ensure that equivalent `Command`s always hash to the
+	// same
+	// value, the environment variables MUST be lexicographically sorted by
+	// name.
+	// Sorting of strings is done by code point, equivalently, by the UTF-8
+	// bytes.
+	EnvironmentVariables []*GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *GoogleDevtoolsRemoteexecutionV1testCommand) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testCommand
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable: An
+// `EnvironmentVariable` is one variable to set in the running
+// program's
+// environment.
+type GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable struct {
+	// Name: The variable name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The variable 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 *GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDigest: A content digest. A digest
+// for a given blob consists of the size of the blob
+// and its hash. The hash algorithm to use is defined by the server, but
+// servers
+// SHOULD use SHA-256.
+//
+// The size is considered to be an integral part of the digest and
+// cannot be
+// separated. That is, even if the `hash` field is correctly specified
+// but
+// `size_bytes` is not, the server MUST reject the request.
+//
+// The reason for including the size in the digest is as follows: in a
+// great
+// many cases, the server needs to know the size of the blob it is about
+// to work
+// with prior to starting an operation with it, such as flattening
+// Merkle tree
+// structures or streaming it to a worker. Technically, the server
+// could
+// implement a separate metadata store, but this results in a
+// significantly more
+// complicated implementation as opposed to having the client specify
+// the size
+// up-front (or storing the size along with the digest in every message
+// where
+// digests are embedded). This does mean that the API leaks some
+// implementation
+// details of (what we consider to be) a reasonable server
+// implementation, but
+// we consider this to be a worthwhile tradeoff.
+//
+// When a `Digest` is used to refer to a proto message, it always refers
+// to the
+// message in binary encoded form. To ensure consistent hashing, clients
+// and
+// servers MUST ensure that they serialize messages according to the
+// following
+// rules, even if there are alternate valid encodings for the same
+// message.
+// - Fields are serialized in tag order.
+// - There are no unknown fields.
+// - There are no duplicate fields.
+// - Fields are serialized according to the default semantics for their
+// type.
+//
+// Most protocol buffer implementations will always follow these rules
+// when
+// serializing, but care should be taken to avoid shortcuts. For
+// instance,
+// concatenating two messages to merge them may produce duplicate
+// fields.
+type GoogleDevtoolsRemoteexecutionV1testDigest struct {
+	// Hash: The hash. In the case of SHA-256, it will always be a lowercase
+	// hex string
+	// exactly 64 characters long.
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the blob, in bytes.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *GoogleDevtoolsRemoteexecutionV1testDigest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDigest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDirectory: A `Directory`
+// represents a directory node in a file tree, containing zero or
+// more children FileNodes
+// and DirectoryNodes.
+// Each `Node` contains its name in the directory, the digest of its
+// content
+// (either a file blob or a `Directory` proto), as well as possibly
+// some
+// metadata about the file or directory.
+//
+// In order to ensure that two equivalent directory trees hash to the
+// same
+// value, the following restrictions MUST be obeyed when constructing
+// a
+// a `Directory`:
+//   - Every child in the directory must have a path of exactly one
+// segment.
+//     Multiple levels of directory hierarchy may not be collapsed.
+//   - Each child in the directory must have a unique path segment (file
+// name).
+//   - The files and directories in the directory must each be sorted
+// in
+//     lexicographical order by path. The path strings must be sorted by
+// code
+//     point, equivalently, by UTF-8 bytes.
+//
+// A `Directory` that obeys the restrictions is said to be in canonical
+// form.
+//
+// As an example, the following could be used for a file named `bar` and
+// a
+// directory named `foo` with an executable file named `baz` (hashes
+// shortened
+// for readability):
+//
+// ```json
+// // (Directory proto)
+// {
+//   files: [
+//     {
+//       name: "bar",
+//       digest: {
+//         hash: "4a73bc9d03...",
+//         size: 65534
+//       }
+//     }
+//   ],
+//   directories: [
+//     {
+//       name: "foo",
+//       digest: {
+//         hash: "4cf2eda940...",
+//         size: 43
+//       }
+//     }
+//   ]
+// }
+//
+// // (Directory proto with hash "4cf2eda940..." and size 43)
+// {
+//   files: [
+//     {
+//       name: "baz",
+//       digest: {
+//         hash: "b2c941073e...",
+//         size: 1294,
+//       },
+//       is_executable: true
+//     }
+//   ]
+// }
+// ```
+type GoogleDevtoolsRemoteexecutionV1testDirectory struct {
+	// Directories: The subdirectories in the directory.
+	Directories []*GoogleDevtoolsRemoteexecutionV1testDirectoryNode `json:"directories,omitempty"`
+
+	// Files: The files in the directory.
+	Files []*GoogleDevtoolsRemoteexecutionV1testFileNode `json:"files,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteexecutionV1testDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDirectoryNode: A `DirectoryNode`
+// represents a child of a
+// Directory which is itself
+// a `Directory` and its associated metadata.
+type GoogleDevtoolsRemoteexecutionV1testDirectoryNode struct {
+	// Digest: The digest of the
+	// Directory object
+	// represented. See Digest
+	// for information about how to take the digest of a proto message.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// Name: The name of the directory.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testDirectoryNode) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDirectoryNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata: Metadata
+// about an ongoing
+// execution, which
+// will be contained in the metadata
+// field of the
+// Operation.
+type GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata struct {
+	// ActionDigest: The digest of the Action
+	// being executed.
+	ActionDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"actionDigest,omitempty"`
+
+	// Possible values:
+	//   "UNKNOWN"
+	//   "CACHE_CHECK" - Checking the result against the cache.
+	//   "QUEUED" - Currently idle, awaiting a free machine to execute.
+	//   "EXECUTING" - Currently being executed by a worker.
+	//   "COMPLETED" - Finished execution.
+	Stage string `json:"stage,omitempty"`
+
+	// StderrStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard error.
+	StderrStreamName string `json:"stderrStreamName,omitempty"`
+
+	// StdoutStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard output.
+	StdoutStreamName string `json:"stdoutStreamName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionDigest") 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. "ActionDigest") 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 *GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testExecuteResponse: The response
+// message for
+// Execution.Execute,
+// which will be contained in the response
+// field of the
+// Operation.
+type GoogleDevtoolsRemoteexecutionV1testExecuteResponse struct {
+	// CachedResult: True if the result was served from cache, false if it
+	// was executed.
+	CachedResult bool `json:"cachedResult,omitempty"`
+
+	// Result: The result of the action.
+	Result *GoogleDevtoolsRemoteexecutionV1testActionResult `json:"result,omitempty"`
+
+	// ServerLogs: An optional list of additional log outputs the server
+	// wishes to provide. A
+	// server can use this to return execution-specific logs however it
+	// wishes.
+	// This is intended primarily to make it easier for users to debug
+	// issues that
+	// may be outside of the actual job execution, such as by identifying
+	// the
+	// worker executing the action or by providing logs from the worker's
+	// setup
+	// phase. The keys SHOULD be human readable so that a client can display
+	// them
+	// to a user.
+	ServerLogs map[string]GoogleDevtoolsRemoteexecutionV1testLogFile `json:"serverLogs,omitempty"`
+
+	// Status: If the status has a code other than `OK`, it indicates that
+	// the action did
+	// not finish execution. For example, if the operation times out
+	// during
+	// execution, the status will have a `DEADLINE_EXCEEDED` code. Servers
+	// MUST
+	// use this field for errors in execution, rather than the error field
+	// on the
+	// `Operation` object.
+	//
+	// If the status code is other than `OK`, then the result MUST NOT be
+	// cached.
+	// For an error status, the `result` field is optional; the server
+	// may
+	// populate the output-, stdout-, and stderr-related fields if it has
+	// any
+	// information available, such as the stdout and stderr of a timed-out
+	// action.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CachedResult") 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. "CachedResult") 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 *GoogleDevtoolsRemoteexecutionV1testExecuteResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testExecuteResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testFileNode: A `FileNode` represents
+// a single file and associated metadata.
+type GoogleDevtoolsRemoteexecutionV1testFileNode struct {
+	// Digest: The digest of the file's content.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Name: The name of the file.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testFileNode) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testFileNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testLogFile: A `LogFile` is a log
+// stored in the CAS.
+type GoogleDevtoolsRemoteexecutionV1testLogFile struct {
+	// Digest: The digest of the log contents.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// HumanReadable: This is a hint as to the purpose of the log, and is
+	// set to true if the log
+	// is human-readable text that can be usefully displayed to a user, and
+	// false
+	// otherwise. For instance, if a command-line client wishes to print
+	// the
+	// server logs to the terminal for a failed action, this allows it to
+	// avoid
+	// displaying a binary file.
+	HumanReadable bool `json:"humanReadable,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testLogFile) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testLogFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testOutputDirectory: An
+// `OutputDirectory` is the output in an `ActionResult` corresponding to
+// a
+// directory's full contents rather than a single file.
+type GoogleDevtoolsRemoteexecutionV1testOutputDirectory struct {
+	// Digest: DEPRECATED: This field is deprecated and should no longer be
+	// used.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// Path: The full path of the directory relative to the working
+	// directory. The path
+	// separator is a forward slash `/`. Since this is a relative path, it
+	// MUST
+	// NOT begin with a leading forward slash. The empty string value is
+	// allowed,
+	// and it denotes the entire working directory.
+	Path string `json:"path,omitempty"`
+
+	// TreeDigest: The digest of the encoded
+	// Tree proto containing the
+	// directory's contents.
+	TreeDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"treeDigest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testOutputDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testOutputDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testOutputFile: An `OutputFile` is
+// similar to a
+// FileNode, but it is
+// tailored for output as part of an `ActionResult`. It allows a full
+// file path
+// rather than only a name, and allows the server to include content
+// inline.
+//
+// `OutputFile` is binary-compatible with `FileNode`.
+type GoogleDevtoolsRemoteexecutionV1testOutputFile struct {
+	// Content: The raw content of the file.
+	//
+	// This field may be used by the server to provide the content of a
+	// file
+	// inline in an
+	// ActionResult and
+	// avoid requiring that the client make a separate call
+	// to
+	// [ContentAddressableStorage.GetBlob] to retrieve it.
+	//
+	// The client SHOULD NOT assume that it will get raw content with any
+	// request,
+	// and always be prepared to retrieve it via `digest`.
+	Content string `json:"content,omitempty"`
+
+	// Digest: The digest of the file's content.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The full path of the file relative to the input root, including
+	// the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Content") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Content") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleDevtoolsRemoteexecutionV1testOutputFile) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testOutputFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testRequestMetadata: An optional
+// Metadata to attach to any RPC request to tell the server about
+// an
+// external context of the request. The server may use this for logging
+// or other
+// purposes. To use it, the client attaches the header to the call using
+// the
+// canonical proto serialization:
+// name:
+// google.devtools.remoteexecution.v1test.requestmetadata-bin
+// contents: the base64 encoded binary RequestMetadata message.
+type GoogleDevtoolsRemoteexecutionV1testRequestMetadata struct {
+	// ActionId: An identifier that ties multiple requests to the same
+	// action.
+	// For example, multiple requests to the CAS, Action Cache, and
+	// Execution
+	// API are used in order to compile foo.cc.
+	ActionId string `json:"actionId,omitempty"`
+
+	// CorrelatedInvocationsId: An identifier to tie multiple tool
+	// invocations together. For example,
+	// runs of foo_test, bar_test and baz_test on a post-submit of a given
+	// patch.
+	CorrelatedInvocationsId string `json:"correlatedInvocationsId,omitempty"`
+
+	// ToolDetails: The details for the tool invoking the requests.
+	ToolDetails *GoogleDevtoolsRemoteexecutionV1testToolDetails `json:"toolDetails,omitempty"`
+
+	// ToolInvocationId: An identifier that ties multiple actions together
+	// to a final result.
+	// For example, multiple actions are required to build and run foo_test.
+	ToolInvocationId string `json:"toolInvocationId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionId") 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. "ActionId") 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 *GoogleDevtoolsRemoteexecutionV1testRequestMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testRequestMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testToolDetails: Details for the tool
+// used to call the API.
+type GoogleDevtoolsRemoteexecutionV1testToolDetails struct {
+	// ToolName: Name of the tool, e.g. bazel.
+	ToolName string `json:"toolName,omitempty"`
+
+	// ToolVersion: Version of the tool used for the request, e.g. 5.0.3.
+	ToolVersion string `json:"toolVersion,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ToolName") 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. "ToolName") 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 *GoogleDevtoolsRemoteexecutionV1testToolDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testToolDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testTree: A `Tree` contains all
+// the
+// Directory protos in a
+// single directory Merkle tree, compressed into one message.
+type GoogleDevtoolsRemoteexecutionV1testTree struct {
+	// Children: All the child directories: the directories referred to by
+	// the root and,
+	// recursively, all its children. In order to reconstruct the directory
+	// tree,
+	// the client must take the digests of each of the child directories and
+	// then
+	// build up a tree starting from the `root`.
+	Children []*GoogleDevtoolsRemoteexecutionV1testDirectory `json:"children,omitempty"`
+
+	// Root: The root directory in the tree.
+	Root *GoogleDevtoolsRemoteexecutionV1testDirectory `json:"root,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Children") 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. "Children") 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 *GoogleDevtoolsRemoteexecutionV1testTree) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testTree
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2AdminTemp: AdminTemp is a
+// prelimiary set of administration tasks. It's called "Temp"
+// because we do not yet know the best way to represent admin tasks;
+// it's
+// possible that this will be entirely replaced in later versions of
+// this API.
+// If this message proves to be sufficient, it will be renamed in the
+// alpha or
+// beta release of this API.
+//
+// This message (suitably marshalled into a protobuf.Any) can be used as
+// the
+// inline_assignment field in a lease; the lease assignment field should
+// simply
+// be "admin" in these cases.
+//
+// This message is heavily based on Swarming administration tasks from
+// the LUCI
+// project (http://github.com/luci/luci-py/appengine/swarming).
+type GoogleDevtoolsRemoteworkersV1test2AdminTemp struct {
+	// Arg: The argument to the admin action; see `Command` for semantics.
+	Arg string `json:"arg,omitempty"`
+
+	// Command: The admin action; see `Command` for legal values.
+	//
+	// Possible values:
+	//   "UNSPECIFIED" - Illegal value.
+	//   "BOT_UPDATE" - Download and run a new version of the bot. `arg`
+	// will be a resource
+	// accessible via `ByteStream.Read` to obtain the new bot code.
+	//   "BOT_RESTART" - Restart the bot without downloading a new version.
+	// `arg` will be a
+	// message to log.
+	//   "BOT_TERMINATE" - Shut down the bot. `arg` will be a task resource
+	// name (similar to those
+	// in tasks.proto) that the bot can use to tell the server that it
+	// is
+	// terminating.
+	//   "HOST_RESTART" - Restart the host computer. `arg` will be a message
+	// to log.
+	Command string `json:"command,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arg") 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. "Arg") 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 *GoogleDevtoolsRemoteworkersV1test2AdminTemp) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2AdminTemp
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Blob: Describes a blob of binary
+// content with its digest.
+type GoogleDevtoolsRemoteworkersV1test2Blob struct {
+	// Contents: The contents of the blob.
+	Contents string `json:"contents,omitempty"`
+
+	// Digest: The digest of the blob. This should be verified by the
+	// receiver.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Contents") 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. "Contents") 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 *GoogleDevtoolsRemoteworkersV1test2Blob) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Blob
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandOutputs: DEPRECATED - use
+// CommandResult instead.
+// Describes the actual outputs from the task.
+type GoogleDevtoolsRemoteworkersV1test2CommandOutputs struct {
+	// ExitCode: exit_code is only fully reliable if the status' code is OK.
+	// If the task
+	// exceeded its deadline or was cancelled, the process may still produce
+	// an
+	// exit code as it is cancelled, and this will be populated, but a
+	// successful
+	// (zero) is unlikely to be correct unless the status code is OK.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// Outputs: The output files. The blob referenced by the digest should
+	// contain
+	// one of the following (implementation-dependent):
+	//    * A marshalled DirectoryMetadata of the returned filesystem
+	//    * A LUCI-style .isolated file
+	Outputs *GoogleDevtoolsRemoteworkersV1test2Digest `json:"outputs,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExitCode") 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. "ExitCode") 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 *GoogleDevtoolsRemoteworkersV1test2CommandOutputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandOutputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandOverhead: DEPRECATED - use
+// CommandResult instead.
+// Can be used as part of CompleteRequest.metadata, or are part of a
+// more
+// sophisticated message.
+type GoogleDevtoolsRemoteworkersV1test2CommandOverhead struct {
+	// Duration: The elapsed time between calling Accept and Complete. The
+	// server will also
+	// have its own idea of what this should be, but this excludes the
+	// overhead of
+	// the RPCs and the bot response time.
+	Duration string `json:"duration,omitempty"`
+
+	// Overhead: The amount of time *not* spent executing the command
+	// (ie
+	// uploading/downloading files).
+	Overhead string `json:"overhead,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Duration") 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. "Duration") 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 *GoogleDevtoolsRemoteworkersV1test2CommandOverhead) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandOverhead
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandResult: All information
+// about the execution of a command, suitable for providing as
+// the Bots interface's `Lease.result` field.
+type GoogleDevtoolsRemoteworkersV1test2CommandResult struct {
+	// Duration: The elapsed time between calling Accept and Complete. The
+	// server will also
+	// have its own idea of what this should be, but this excludes the
+	// overhead of
+	// the RPCs and the bot response time.
+	Duration string `json:"duration,omitempty"`
+
+	// ExitCode: The exit code of the process. An exit code of "0" should
+	// only be trusted if
+	// `status` has a code of OK (otherwise it may simply be unset).
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// Outputs: The output files. The blob referenced by the digest should
+	// contain
+	// one of the following (implementation-dependent):
+	//    * A marshalled DirectoryMetadata of the returned filesystem
+	//    * A LUCI-style .isolated file
+	Outputs *GoogleDevtoolsRemoteworkersV1test2Digest `json:"outputs,omitempty"`
+
+	// Overhead: The amount of time *not* spent executing the command
+	// (ie
+	// uploading/downloading files).
+	Overhead string `json:"overhead,omitempty"`
+
+	// Statistics: Implementation-dependent statistics about the task. Both
+	// servers and bots
+	// may define messages which can be encoded here; bots are free to
+	// provide
+	// statistics in multiple formats, and servers are free to choose one or
+	// more
+	// of the values to process and ignore others. In particular, it is
+	// *not*
+	// considered an error for the bot to provide the server with a field
+	// that it
+	// doesn't know about.
+	Statistics []googleapi.RawMessage `json:"statistics,omitempty"`
+
+	// Status: An overall status for the command. For example, if the
+	// command timed out,
+	// this might have a code of DEADLINE_EXCEEDED; if it was killed by the
+	// OS for
+	// memory exhaustion, it might have a code of RESOURCE_EXHAUSTED.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Duration") 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. "Duration") 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 *GoogleDevtoolsRemoteworkersV1test2CommandResult) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTask: Describes a
+// shell-style task to execute, suitable for providing as the
+// Bots
+// interface's `Lease.payload` field.
+type GoogleDevtoolsRemoteworkersV1test2CommandTask struct {
+	// ExpectedOutputs: The expected outputs from the task.
+	ExpectedOutputs *GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs `json:"expectedOutputs,omitempty"`
+
+	// Inputs: The inputs to the task.
+	Inputs *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs `json:"inputs,omitempty"`
+
+	// Timeouts: The timeouts of this task.
+	Timeouts *GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts `json:"timeouts,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExpectedOutputs") 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. "ExpectedOutputs") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTask) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTask
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs: Describes the
+// inputs to a shell-style task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs struct {
+	// Arguments: The command itself to run (e.g., argv).
+	//
+	// This field should be passed directly to the underlying operating
+	// system,
+	// and so it must be sensible to that operating system. For example,
+	// on
+	// Windows, the first argument might be "C:\Windows\System32\ping.exe"
+	// -
+	// that is, using drive letters and backslashes. A command for a
+	// *nix
+	// system, on the other hand, would use forward slashes.
+	//
+	// All other fields in the RWAPI must consistently use forward
+	// slashes,
+	// since those fields may be interpretted by both the service and the
+	// bot.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: All environment variables required by the task.
+	EnvironmentVariables []*GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// Files: The input filesystem to be set up prior to the task beginning.
+	// The
+	// contents should be a repeated set of FileMetadata messages though
+	// other
+	// formats are allowed if better for the implementation (eg, a
+	// LUCI-style
+	// .isolated file).
+	//
+	// This field is repeated since implementations might want to cache
+	// the
+	// metadata, in which case it may be useful to break up portions of
+	// the
+	// filesystem that change frequently (eg, specific input files) from
+	// those
+	// that don't (eg, standard header files).
+	Files []*GoogleDevtoolsRemoteworkersV1test2Digest `json:"files,omitempty"`
+
+	// InlineBlobs: Inline contents for blobs expected to be needed by the
+	// bot to execute the
+	// task. For example, contents of entries in `files` or blobs that
+	// are
+	// indirectly referenced by an entry there.
+	//
+	// The bot should check against this list before downloading required
+	// task
+	// inputs to reduce the number of communications between itself and
+	// the
+	// remote CAS server.
+	InlineBlobs []*GoogleDevtoolsRemoteworkersV1test2Blob `json:"inlineBlobs,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
+// : An environment variable required by this task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable struct {
+	// Name: The envvar name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The envvar 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs: Describes the
+// expected outputs of the command.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs struct {
+	// Directories: A list of expected directories, relative to the
+	// execution root. All paths
+	// MUST be delimited by forward slashes.
+	Directories []string `json:"directories,omitempty"`
+
+	// Files: A list of expected files, relative to the execution root. All
+	// paths
+	// MUST be delimited by forward slashes.
+	Files []string `json:"files,omitempty"`
+
+	// StderrDestination: The destination to which any stderr should be
+	// sent. The method by which
+	// the bot should send the stream contents to that destination is
+	// not
+	// defined in this API. As examples, the destination could be a
+	// file
+	// referenced in the `files` field in this message, or it could be a
+	// URI
+	// that must be written via the ByteStream API.
+	StderrDestination string `json:"stderrDestination,omitempty"`
+
+	// StdoutDestination: The destination to which any stdout should be
+	// sent. The method by which
+	// the bot should send the stream contents to that destination is
+	// not
+	// defined in this API. As examples, the destination could be a
+	// file
+	// referenced in the `files` field in this message, or it could be a
+	// URI
+	// that must be written via the ByteStream API.
+	StdoutDestination string `json:"stdoutDestination,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts: Describes the
+// timeouts associated with this task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts struct {
+	// Execution: This specifies the maximum time that the task can run,
+	// excluding the
+	// time required to download inputs or upload outputs. That is, the
+	// worker
+	// will terminate the task if it runs longer than this.
+	Execution string `json:"execution,omitempty"`
+
+	// Idle: This specifies the maximum amount of time the task can be idle
+	// - that is,
+	// go without generating some output in either stdout or stderr. If
+	// the
+	// process is silent for more than the specified time, the worker
+	// will
+	// terminate the task.
+	Idle string `json:"idle,omitempty"`
+
+	// Shutdown: If the execution or IO timeouts are exceeded, the worker
+	// will try to
+	// gracefully terminate the task and return any existing logs.
+	// However,
+	// tasks may be hard-frozen in which case this process will fail.
+	// This
+	// timeout specifies how long to wait for a terminated task to shut
+	// down
+	// gracefully (e.g. via SIGTERM) before we bring down the hammer
+	// (e.g.
+	// SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
+	Shutdown string `json:"shutdown,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Execution") 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. "Execution") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Digest: The CommandTask and
+// CommandResult messages assume the existence of a service
+// that can serve blobs of content, identified by a hash and size known
+// as a
+// "digest." The method by which these blobs may be retrieved is not
+// specified
+// here, but a model implementation is in the Remote Execution
+// API's
+// "ContentAddressibleStorage" interface.
+//
+// In the context of the RWAPI, a Digest will virtually always refer to
+// the
+// contents of a file or a directory. The latter is represented by
+// the
+// byte-encoded Directory message.
+type GoogleDevtoolsRemoteworkersV1test2Digest struct {
+	// Hash: A string-encoded hash (eg "1a2b3c", not the byte array [0x1a,
+	// 0x2b, 0x3c])
+	// using an implementation-defined hash algorithm (eg SHA-256).
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the contents. While this is not strictly
+	// required as part of an
+	// identifier (after all, any given hash will have exactly one
+	// canonical
+	// size), it's useful in almost all cases when one might want to send
+	// or
+	// retrieve blobs of content and is included here for this reason.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *GoogleDevtoolsRemoteworkersV1test2Digest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Digest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Directory: The contents of a
+// directory. Similar to the equivalent message in the Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2Directory struct {
+	// Directories: Any subdirectories
+	Directories []*GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata `json:"directories,omitempty"`
+
+	// Files: The files in this directory
+	Files []*GoogleDevtoolsRemoteworkersV1test2FileMetadata `json:"files,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteworkersV1test2Directory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Directory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata: The metadata for
+// a directory. Similar to the equivalent message in the
+// Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata struct {
+	// Digest: A pointer to the contents of the directory, in the form of a
+	// marshalled
+	// Directory message.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// Path: The path of the directory, as in FileMetadata.path.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2FileMetadata: The metadata for a
+// file. Similar to the equivalent message in the Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2FileMetadata struct {
+	// Contents: If the file is small enough, its contents may also or
+	// alternatively be
+	// listed here.
+	Contents string `json:"contents,omitempty"`
+
+	// Digest: A pointer to the contents of the file. The method by which a
+	// client
+	// retrieves the contents from a CAS system is not defined here.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: Properties of the file
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The path of this file. If this message is part of
+	// the
+	// CommandOutputs.outputs fields, the path is relative to the execution
+	// root
+	// and must correspond to an entry in CommandTask.outputs.files. If
+	// this
+	// message is part of a Directory message, then the path is relative to
+	// the
+	// root of that directory. All paths MUST be delimited by forward
+	// slashes.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Contents") 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. "Contents") 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 *GoogleDevtoolsRemoteworkersV1test2FileMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2FileMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleLongrunningCancelOperationRequest: The request message for
+// Operations.CancelOperation.
+type GoogleLongrunningCancelOperationRequest struct {
+}
+
+// GoogleLongrunningListOperationsResponse: The response message for
+// Operations.ListOperations.
+type GoogleLongrunningListOperationsResponse struct {
+	// NextPageToken: The standard List next-page token.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// Operations: A list of operations that matches the specified filter in
+	// the request.
+	Operations []*GoogleLongrunningOperation `json:"operations,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 *GoogleLongrunningListOperationsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleLongrunningListOperationsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleLongrunningOperation: This resource represents a long-running
+// operation that is the result of a
+// network API call.
+type GoogleLongrunningOperation struct {
+	// Done: If the value is `false`, it means the operation is still in
+	// progress.
+	// If `true`, the operation is completed, and either `error` or
+	// `response` is
+	// available.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure or
+	// cancellation.
+	Error *GoogleRpcStatus `json:"error,omitempty"`
+
+	// Metadata: Service-specific metadata associated with the operation.
+	// It typically
+	// contains progress information and common metadata such as create
+	// time.
+	// Some services might not provide such metadata.  Any method that
+	// returns a
+	// long-running operation should document the metadata type, if any.
+	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
+
+	// Name: The server-assigned name, which is only unique within the same
+	// service that
+	// originally returns it. If you use the default HTTP mapping,
+	// the
+	// `name` should have the format of `operations/some/unique/name`.
+	Name string `json:"name,omitempty"`
+
+	// Response: The normal response of the operation in case of success.
+	// If the original
+	// method returns no data on success, such as `Delete`, the response
+	// is
+	// `google.protobuf.Empty`.  If the original method is
+	// standard
+	// `Get`/`Create`/`Update`, the response should be the resource.  For
+	// other
+	// methods, the response should have the type `XxxResponse`, where
+	// `Xxx`
+	// is the original method name.  For example, if the original method
+	// name
+	// is `TakeSnapshot()`, the inferred response type
+	// is
+	// `TakeSnapshotResponse`.
+	Response googleapi.RawMessage `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") 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. "Done") 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 *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleLongrunningOperation
+	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:"-"`
+}
+
+// GoogleRpcStatus: The `Status` type defines a logical error model that
+// is suitable for different
+// programming environments, including REST APIs and RPC APIs. It is
+// used by
+// [gRPC](https://github.com/grpc). The error model is designed to
+// be:
+//
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code, error
+// message,
+// and error details. The error code should be an enum value
+// of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The
+// error message should be a developer-facing English message that
+// helps
+// developers *understand* and *resolve* the error. If a localized
+// user-facing
+// error message is needed, put the localized message in the error
+// details or
+// localize it in the client. The optional error details may contain
+// arbitrary
+// information about the error. There is a predefined set of error
+// detail types
+// in the package `google.rpc` that can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error
+// model, but it
+// is not necessarily the actual wire format. When the `Status` message
+// is
+// exposed in different client libraries and different wire protocols,
+// it can be
+// mapped differently. For example, it will likely be mapped to some
+// exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety
+// of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different
+// environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the
+// client,
+//     it may embed the `Status` in the normal response to indicate the
+// partial
+//     errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step
+// may
+//     have a `Status` message for error reporting.
+//
+// - Batch operations. If a client uses batch request and batch
+// response, the
+//     `Status` message should be used directly inside batch response,
+// one for
+//     each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous
+// operation
+//     results in its response, the status of those operations should
+// be
+//     represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message
+// `Status` could
+//     be used directly after any stripping needed for security/privacy
+// reasons.
+type GoogleRpcStatus struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There is a
+	// common set of
+	// message types for APIs to use.
+	Details []googleapi.RawMessage `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any
+	// user-facing error message should be localized and sent in
+	// the
+	// google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,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 *GoogleRpcStatus) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleRpcStatus
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleWatcherV1Change: A Change indicates the most recent state of an
+// element.
+type GoogleWatcherV1Change struct {
+	// Continued: If true, this Change is followed by more Changes that are
+	// in the same group
+	// as this Change.
+	Continued bool `json:"continued,omitempty"`
+
+	// Data: The actual change data. This field is present only when
+	// `state() == EXISTS`
+	// or `state() == ERROR`. Please see google.protobuf.Any about how to
+	// use
+	// the Any type.
+	Data googleapi.RawMessage `json:"data,omitempty"`
+
+	// Element: Name of the element, interpreted relative to the entity's
+	// actual
+	// name. "" refers to the entity itself. The element name is a
+	// valid
+	// UTF-8 string.
+	Element string `json:"element,omitempty"`
+
+	// ResumeMarker: If present, provides a compact representation of all
+	// the messages that have
+	// been received by the caller for the given entity, e.g., it could be
+	// a
+	// sequence number or a multi-part timestamp/version vector. This marker
+	// can
+	// be provided in the Request message, allowing the caller to resume the
+	// stream
+	// watching at a specific point without fetching the initial state.
+	ResumeMarker string `json:"resumeMarker,omitempty"`
+
+	// State: The state of the `element`.
+	//
+	// Possible values:
+	//   "EXISTS" - The element exists and its full value is included in
+	// data.
+	//   "DOES_NOT_EXIST" - The element does not exist.
+	//   "INITIAL_STATE_SKIPPED" - Element may or may not exist. Used only
+	// for initial state delivery when
+	// the client is not interested in fetching the initial state. See
+	// the
+	// "Initial State" section above.
+	//   "ERROR" - The element may exist, but some error has occurred. More
+	// information is
+	// available in the data field - the value is a serialized Status
+	// proto (from google.rpc.Status)
+	State string `json:"state,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Continued") 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. "Continued") 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 *GoogleWatcherV1Change) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleWatcherV1Change
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleWatcherV1ChangeBatch: A batch of Change messages.
+type GoogleWatcherV1ChangeBatch struct {
+	// Changes: A list of Change messages.
+	Changes []*GoogleWatcherV1Change `json:"changes,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Changes") 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. "Changes") 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 *GoogleWatcherV1ChangeBatch) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleWatcherV1ChangeBatch
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "remotebuildexecution.media.download":
+
+type MediaDownloadCall struct {
+	s            *Service
+	resourceName string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Download: Downloads media. Download is supported
+// on the URI `/v1/media/{+name}?alt=media`.
+func (r *MediaService) Download(resourceName string) *MediaDownloadCall {
+	c := &MediaDownloadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resourceName = resourceName
+	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 *MediaDownloadCall) Fields(s ...googleapi.Field) *MediaDownloadCall {
+	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 *MediaDownloadCall) IfNoneMatch(entityTag string) *MediaDownloadCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do and Download
+// methods. Any pending HTTP request will be aborted if the provided
+// context is canceled.
+func (c *MediaDownloadCall) Context(ctx context.Context) *MediaDownloadCall {
+	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 *MediaDownloadCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *MediaDownloadCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/media/{+resourceName}")
+	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{
+		"resourceName": c.resourceName,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Download fetches the API endpoint's "media" value, instead of the normal
+// API response value. If the returned error is nil, the Response is guaranteed to
+// have a 2xx status code. Callers must close the Response.Body as usual.
+func (c *MediaDownloadCall) Download(opts ...googleapi.CallOption) (*http.Response, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("media")
+	if err != nil {
+		return nil, err
+	}
+	if err := googleapi.CheckMediaResponse(res); err != nil {
+		res.Body.Close()
+		return nil, err
+	}
+	return res, nil
+}
+
+// Do executes the "remotebuildexecution.media.download" call.
+// Exactly one of *GoogleBytestreamMedia or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *GoogleBytestreamMedia.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 *MediaDownloadCall) Do(opts ...googleapi.CallOption) (*GoogleBytestreamMedia, 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 := &GoogleBytestreamMedia{
+		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": "Downloads media. Download is supported\non the URI `/v1/media/{+name}?alt=media`.",
+	//   "flatPath": "v1/media/{mediaId}",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.media.download",
+	//   "parameterOrder": [
+	//     "resourceName"
+	//   ],
+	//   "parameters": {
+	//     "resourceName": {
+	//       "description": "Name of the media that is being downloaded.  See\nReadRequest.resource_name.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/media/{+resourceName}",
+	//   "response": {
+	//     "$ref": "GoogleBytestreamMedia"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ],
+	//   "supportsMediaDownload": true
+	// }
+
+}
+
+// method id "remotebuildexecution.media.upload":
+
+type MediaUploadCall struct {
+	s                     *Service
+	resourceName          string
+	googlebytestreammedia *GoogleBytestreamMedia
+	urlParams_            gensupport.URLParams
+	mediaInfo_            *gensupport.MediaInfo
+	ctx_                  context.Context
+	header_               http.Header
+}
+
+// Upload: Uploads media. Upload is supported on
+// the URI `/upload/v1/media/{+name}`.
+func (r *MediaService) Upload(resourceName string, googlebytestreammedia *GoogleBytestreamMedia) *MediaUploadCall {
+	c := &MediaUploadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.resourceName = resourceName
+	c.googlebytestreammedia = googlebytestreammedia
+	return c
+}
+
+// Media specifies the media to upload in one or more chunks. The chunk
+// size may be controlled by supplying a MediaOption generated by
+// googleapi.ChunkSize. The chunk size defaults to
+// googleapi.DefaultUploadChunkSize.The Content-Type header used in the
+// upload request will be determined by sniffing the contents of r,
+// unless a MediaOption generated by googleapi.ContentType is
+// supplied.
+// At most one of Media and ResumableMedia may be set.
+func (c *MediaUploadCall) Media(r io.Reader, options ...googleapi.MediaOption) *MediaUploadCall {
+	c.mediaInfo_ = gensupport.NewInfoFromMedia(r, options)
+	return c
+}
+
+// ResumableMedia specifies the media to upload in chunks and can be
+// canceled with ctx.
+//
+// Deprecated: use Media instead.
+//
+// At most one of Media and ResumableMedia may be set. mediaType
+// identifies the MIME media type of the upload, such as "image/png". If
+// mediaType is "", it will be auto-detected. The provided ctx will
+// supersede any context previously provided to the Context method.
+func (c *MediaUploadCall) ResumableMedia(ctx context.Context, r io.ReaderAt, size int64, mediaType string) *MediaUploadCall {
+	c.ctx_ = ctx
+	c.mediaInfo_ = gensupport.NewInfoFromResumableMedia(r, size, mediaType)
+	return c
+}
+
+// ProgressUpdater provides a callback function that will be called
+// after every chunk. It should be a low-latency function in order to
+// not slow down the upload operation. This should only be called when
+// using ResumableMedia (as opposed to Media).
+func (c *MediaUploadCall) ProgressUpdater(pu googleapi.ProgressUpdater) *MediaUploadCall {
+	c.mediaInfo_.SetProgressUpdater(pu)
+	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 *MediaUploadCall) Fields(s ...googleapi.Field) *MediaUploadCall {
+	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.
+// This context will supersede any context previously provided to the
+// ResumableMedia method.
+func (c *MediaUploadCall) Context(ctx context.Context) *MediaUploadCall {
+	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 *MediaUploadCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *MediaUploadCall) 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.googlebytestreammedia)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/media/{+resourceName}")
+	if c.mediaInfo_ != nil {
+		urls = strings.Replace(urls, "https://www.googleapis.com/", "https://www.googleapis.com/upload/", 1)
+		c.urlParams_.Set("uploadType", c.mediaInfo_.UploadType())
+	}
+	if body == nil {
+		body = new(bytes.Buffer)
+		reqHeaders.Set("Content-Type", "application/json")
+	}
+	body, getBody, cleanup := c.mediaInfo_.UploadRequest(reqHeaders, body)
+	defer cleanup()
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	gensupport.SetGetBody(req, getBody)
+	googleapi.Expand(req.URL, map[string]string{
+		"resourceName": c.resourceName,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.media.upload" call.
+// Exactly one of *GoogleBytestreamMedia or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *GoogleBytestreamMedia.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 *MediaUploadCall) Do(opts ...googleapi.CallOption) (*GoogleBytestreamMedia, 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
+	}
+	rx := c.mediaInfo_.ResumableUpload(res.Header.Get("Location"))
+	if rx != nil {
+		rx.Client = c.s.client
+		rx.UserAgent = c.s.userAgent()
+		ctx := c.ctx_
+		if ctx == nil {
+			ctx = context.TODO()
+		}
+		res, err = rx.Upload(ctx)
+		if err != nil {
+			return nil, err
+		}
+		defer res.Body.Close()
+		if err := googleapi.CheckResponse(res); err != nil {
+			return nil, err
+		}
+	}
+	ret := &GoogleBytestreamMedia{
+		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": "Uploads media. Upload is supported on\nthe URI `/upload/v1/media/{+name}`.",
+	//   "flatPath": "v1/media/{mediaId}",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.media.upload",
+	//   "mediaUpload": {
+	//     "accept": [
+	//       "*/*"
+	//     ],
+	//     "protocols": {
+	//       "simple": {
+	//         "multipart": true,
+	//         "path": "/upload/v1/media/{+resourceName}"
+	//       }
+	//     }
+	//   },
+	//   "parameterOrder": [
+	//     "resourceName"
+	//   ],
+	//   "parameters": {
+	//     "resourceName": {
+	//       "description": "Name of the media that is being downloaded.  See\nReadRequest.resource_name.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/media/{+resourceName}",
+	//   "request": {
+	//     "$ref": "GoogleBytestreamMedia"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleBytestreamMedia"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ],
+	//   "supportsMediaUpload": true
+	// }
+
+}
+
+// method id "remotebuildexecution.operations.cancel":
+
+type OperationsCancelCall struct {
+	s                                       *Service
+	name                                    string
+	googlelongrunningcanceloperationrequest *GoogleLongrunningCancelOperationRequest
+	urlParams_                              gensupport.URLParams
+	ctx_                                    context.Context
+	header_                                 http.Header
+}
+
+// Cancel: Starts asynchronous cancellation on a long-running operation.
+//  The server
+// makes a best effort to cancel the operation, but success is
+// not
+// guaranteed.  If the server doesn't support this method, it
+// returns
+// `google.rpc.Code.UNIMPLEMENTED`.  Clients can
+// use
+// Operations.GetOperation or
+// other methods to check whether the cancellation succeeded or whether
+// the
+// operation completed despite cancellation. On successful
+// cancellation,
+// the operation is not deleted; instead, it becomes an operation
+// with
+// an Operation.error value with a google.rpc.Status.code of
+// 1,
+// corresponding to `Code.CANCELLED`.
+func (r *OperationsService) Cancel(name string, googlelongrunningcanceloperationrequest *GoogleLongrunningCancelOperationRequest) *OperationsCancelCall {
+	c := &OperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.googlelongrunningcanceloperationrequest = googlelongrunningcanceloperationrequest
+	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 *OperationsCancelCall) Fields(s ...googleapi.Field) *OperationsCancelCall {
+	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 *OperationsCancelCall) Context(ctx context.Context) *OperationsCancelCall {
+	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 *OperationsCancelCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *OperationsCancelCall) 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.googlelongrunningcanceloperationrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:cancel")
+	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 "remotebuildexecution.operations.cancel" 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 *OperationsCancelCall) 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": "Starts asynchronous cancellation on a long-running operation.  The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed.  If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.  Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.",
+	//   "flatPath": "v1/operations/{operationsId}:cancel",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.operations.cancel",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource to be cancelled.",
+	//       "location": "path",
+	//       "pattern": "^operations/.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}:cancel",
+	//   "request": {
+	//     "$ref": "GoogleLongrunningCancelOperationRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleProtobufEmpty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.operations.delete":
+
+type OperationsDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes a long-running operation. This method indicates that
+// the client is
+// no longer interested in the operation result. It does not cancel
+// the
+// operation. If the server doesn't support this method, it
+// returns
+// `google.rpc.Code.UNIMPLEMENTED`.
+func (r *OperationsService) Delete(name string) *OperationsDeleteCall {
+	c := &OperationsDeleteCall{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 *OperationsDeleteCall) Fields(s ...googleapi.Field) *OperationsDeleteCall {
+	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 *OperationsDeleteCall) Context(ctx context.Context) *OperationsDeleteCall {
+	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 *OperationsDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *OperationsDeleteCall) 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, "v1/{+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 "remotebuildexecution.operations.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 *OperationsDeleteCall) 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": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.",
+	//   "flatPath": "v1/operations/{operationsId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "remotebuildexecution.operations.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource to be deleted.",
+	//       "location": "path",
+	//       "pattern": "^operations/.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleProtobufEmpty"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.operations.list":
+
+type OperationsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists operations that match the specified filter in the
+// request. If the
+// server doesn't support this method, it returns
+// `UNIMPLEMENTED`.
+//
+// NOTE: the `name` binding allows API services to override the
+// binding
+// to use different resource name schemes, such as `users/*/operations`.
+// To
+// override the binding, API services can add a binding such
+// as
+// "/v1/{name=users/*}/operations" to their service configuration.
+// For backwards compatibility, the default name includes the
+// operations
+// collection id, however overriding users must ensure the name
+// binding
+// is the parent resource, without the operations collection id.
+func (r *OperationsService) List(name string) *OperationsListCall {
+	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *OperationsListCall) PageSize(pageSize int64) *OperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
+	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 *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
+	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 *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
+	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 *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
+	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 *OperationsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.operations.list" call.
+// Exactly one of *GoogleLongrunningListOperationsResponse or error will
+// be non-nil. Any non-2xx status code is an error. Response headers are
+// in either
+// *GoogleLongrunningListOperationsResponse.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 *OperationsListCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningListOperationsResponse, 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 := &GoogleLongrunningListOperationsResponse{
+		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 operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+	//   "flatPath": "v1/operations",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.operations.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the operation's parent resource.",
+	//       "location": "path",
+	//       "pattern": "^operations$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleLongrunningListOperationsResponse"
+	//   },
+	//   "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 *OperationsListCall) Pages(ctx context.Context, f func(*GoogleLongrunningListOperationsResponse) 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 "remotebuildexecution.projects.operations.get":
+
+type ProjectsOperationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the latest state of a long-running operation.  Clients can
+// use this
+// method to poll the operation result at intervals as recommended by
+// the API
+// service.
+func (r *ProjectsOperationsService) Get(name string) *ProjectsOperationsGetCall {
+	c := &ProjectsOperationsGetCall{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 *ProjectsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsOperationsGetCall {
+	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 *ProjectsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsOperationsGetCall {
+	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 *ProjectsOperationsGetCall) Context(ctx context.Context) *ProjectsOperationsGetCall {
+	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 *ProjectsOperationsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.projects.operations.get" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *ProjectsOperationsGetCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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 the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1/projects/{projectsId}/operations/{operationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.projects.operations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/operations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.watch":
+
+type V1WatchCall struct {
+	s            *Service
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Watch: Start a streaming RPC to get watch information from the
+// server.
+func (r *V1Service) Watch() *V1WatchCall {
+	c := &V1WatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	return c
+}
+
+// ResumeMarker sets the optional parameter "resumeMarker": The
+// `resume_marker` specifies how much of the existing underlying state
+// is
+// delivered to the client when the watch request is received by
+// the
+// system. The client can set this marker in one of the following ways
+// to get
+// different semantics:
+//
+// *   Parameter is not specified or has the value "".
+//     Semantics: Fetch initial state.
+//     The client wants the entity's initial state to be delivered. See
+// the
+//     description in "Initial State".
+//
+// *   Parameter is set to the string "now" (UTF-8 encoding).
+//     Semantics: Fetch new changes only.
+//     The client just wants to get the changes received by the system
+// after
+//     the watch point. The system may deliver changes from before the
+// watch
+//     point as well.
+//
+// *   Parameter is set to a value received in an earlier
+//     `Change.resume_marker` field while watching the same entity.
+//     Semantics: Resume from a specific point.
+//     The client wants to receive the changes from a specific point;
+// this
+//     value must correspond to a value received in the
+// `Change.resume_marker`
+//     field. The system may deliver changes from before the
+// `resume_marker`
+//     as well. If the system cannot resume the stream from this point
+// (e.g.,
+//     if it is too far behind in the stream), it can raise the
+//     `FAILED_PRECONDITION` error.
+//
+// An implementation MUST support an unspecified parameter and the
+// empty string "" marker (initial state fetching) and the "now"
+// marker.
+// It need not support resuming from a specific point.
+func (c *V1WatchCall) ResumeMarker(resumeMarker string) *V1WatchCall {
+	c.urlParams_.Set("resumeMarker", resumeMarker)
+	return c
+}
+
+// Target sets the optional parameter "target": The `target` value
+// **must** be a valid URL path pointing to an entity
+// to watch. Note that the service name **must** be
+// removed from the target field (e.g., the target field must
+// say
+// "/foo/bar", not "myservice.googleapis.com/foo/bar"). A client is
+// also allowed to pass system-specific parameters in the URL that
+// are only obeyed by some implementations. Some parameters will
+// be
+// implementation-specific. However, some have predefined meaning
+// and are listed here:
+//
+//  * recursive = true|false [default=false]
+//    If set to true, indicates that the client wants to watch all
+// elements
+//    of entities in the subtree rooted at the entity's name in
+// `target`. For
+//    descendants that are not the immediate children of the target,
+// the
+//    `Change.element` will contain slashes.
+//
+//    Note that some namespaces and entities will not support recursive
+//    watching. When watching such an entity, a client must not set
+// recursive
+//    to true. Otherwise, it will receive an `UNIMPLEMENTED`
+// error.
+//
+// Normal URL encoding must be used inside `target`.  For example, if a
+// query
+// parameter name or value, or the non-query parameter portion of
+// `target`
+// contains a special character, it must be %-encoded.  We recommend
+// that
+// clients and servers use their runtime's URL library to produce and
+// consume
+// target values.
+func (c *V1WatchCall) Target(target string) *V1WatchCall {
+	c.urlParams_.Set("target", target)
+	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 *V1WatchCall) Fields(s ...googleapi.Field) *V1WatchCall {
+	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 *V1WatchCall) IfNoneMatch(entityTag string) *V1WatchCall {
+	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 *V1WatchCall) Context(ctx context.Context) *V1WatchCall {
+	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 *V1WatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *V1WatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1:watch")
+	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 "remotebuildexecution.watch" call.
+// Exactly one of *GoogleWatcherV1ChangeBatch or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleWatcherV1ChangeBatch.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 *V1WatchCall) Do(opts ...googleapi.CallOption) (*GoogleWatcherV1ChangeBatch, 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 := &GoogleWatcherV1ChangeBatch{
+		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 streaming RPC to get watch information from the server.",
+	//   "flatPath": "v1:watch",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.watch",
+	//   "parameterOrder": [],
+	//   "parameters": {
+	//     "resumeMarker": {
+	//       "description": "The `resume_marker` specifies how much of the existing underlying state is\ndelivered to the client when the watch request is received by the\nsystem. The client can set this marker in one of the following ways to get\ndifferent semantics:\n\n*   Parameter is not specified or has the value \"\".\n    Semantics: Fetch initial state.\n    The client wants the entity's initial state to be delivered. See the\n    description in \"Initial State\".\n\n*   Parameter is set to the string \"now\" (UTF-8 encoding).\n    Semantics: Fetch new changes only.\n    The client just wants to get the changes received by the system after\n    the watch point. The system may deliver changes from before the watch\n    point as well.\n\n*   Parameter is set to a value received in an earlier\n    `Change.resume_marker` field while watching the same entity.\n    Semantics: Resume from a specific point.\n    The client wants to receive the changes from a specific point; this\n    value must correspond to a value received in the `Change.resume_marker`\n    field. The system may deliver changes from before the `resume_marker`\n    as well. If the system cannot resume the stream from this point (e.g.,\n    if it is too far behind in the stream), it can raise the\n    `FAILED_PRECONDITION` error.\n\nAn implementation MUST support an unspecified parameter and the\nempty string \"\" marker (initial state fetching) and the \"now\" marker.\nIt need not support resuming from a specific point.",
+	//       "format": "byte",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "target": {
+	//       "description": "The `target` value **must** be a valid URL path pointing to an entity\nto watch. Note that the service name **must** be\nremoved from the target field (e.g., the target field must say\n\"/foo/bar\", not \"myservice.googleapis.com/foo/bar\"). A client is\nalso allowed to pass system-specific parameters in the URL that\nare only obeyed by some implementations. Some parameters will be\nimplementation-specific. However, some have predefined meaning\nand are listed here:\n\n * recursive = true|false [default=false]\n   If set to true, indicates that the client wants to watch all elements\n   of entities in the subtree rooted at the entity's name in `target`. For\n   descendants that are not the immediate children of the target, the\n   `Change.element` will contain slashes.\n\n   Note that some namespaces and entities will not support recursive\n   watching. When watching such an entity, a client must not set recursive\n   to true. Otherwise, it will receive an `UNIMPLEMENTED` error.\n\nNormal URL encoding must be used inside `target`.  For example, if a query\nparameter name or value, or the non-query parameter portion of `target`\ncontains a special character, it must be %-encoded.  We recommend that\nclients and servers use their runtime's URL library to produce and consume\ntarget values.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1:watch",
+	//   "response": {
+	//     "$ref": "GoogleWatcherV1ChangeBatch"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/remotebuildexecution/v1alpha/remotebuildexecution-api.json b/remotebuildexecution/v1alpha/remotebuildexecution-api.json
new file mode 100644
index 0000000..c683632
--- /dev/null
+++ b/remotebuildexecution/v1alpha/remotebuildexecution-api.json
@@ -0,0 +1,1907 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://admin-remotebuildexecution.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Remote Build Execution",
+  "description": "Supplies a Remote Execution API service for tools such as bazel.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/remote-build-execution/docs/",
+  "fullyEncodeReservedExpansion": true,
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "id": "remotebuildexecution:v1alpha",
+  "kind": "discovery#restDescription",
+  "name": "remotebuildexecution",
+  "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": {
+        "instances": {
+          "methods": {
+            "create": {
+              "description": "Creates a new instance in the specified region.\nReturns a long running operation which contains an instance on completion.\nWhile the long running operation is in progress, any call to `GetInstance`\nreturns an instance in state `CREATING`.",
+              "flatPath": "v1alpha/projects/{projectsId}/instances",
+              "httpMethod": "POST",
+              "id": "remotebuildexecution.projects.instances.create",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "Resource name of the project containing the instance.\nFormat: `projects/[PROJECT_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha/{+parent}/instances",
+              "request": {
+                "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest"
+              },
+              "response": {
+                "$ref": "GoogleLongrunningOperation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "delete": {
+              "description": "Deletes the specified instance.\nReturns a long running operation which contains a `google.protobuf.Empty`\nresponse on completion.\nDeleting an instance with worker pools in it will delete these worker\npools.",
+              "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}",
+              "httpMethod": "DELETE",
+              "id": "remotebuildexecution.projects.instances.delete",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "Name of the instance to delete.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/instances/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha/{+name}",
+              "response": {
+                "$ref": "GoogleLongrunningOperation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "get": {
+              "description": "Returns the specified instance.",
+              "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}",
+              "httpMethod": "GET",
+              "id": "remotebuildexecution.projects.instances.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "Name of the instance to retrieve.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/instances/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha/{+name}",
+              "response": {
+                "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            },
+            "list": {
+              "description": "Lists instances in a project.",
+              "flatPath": "v1alpha/projects/{projectsId}/instances",
+              "httpMethod": "GET",
+              "id": "remotebuildexecution.projects.instances.list",
+              "parameterOrder": [
+                "parent"
+              ],
+              "parameters": {
+                "parent": {
+                  "description": "Resource name of the project.\nFormat: `projects/[PROJECT_ID]`.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha/{+parent}/instances",
+              "response": {
+                "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          },
+          "resources": {
+            "workerpools": {
+              "methods": {
+                "create": {
+                  "description": "Creates a new worker pool with a specified size and configuration.\nReturns a long running operation which contains a worker pool on\ncompletion. While the long running operation is in progress, any call to\n`GetWorkerPool` returns a worker pool in state `CREATING`.",
+                  "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools",
+                  "httpMethod": "POST",
+                  "id": "remotebuildexecution.projects.instances.workerpools.create",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "Resource name of the instance in which to create the new worker pool.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/instances/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1alpha/{+parent}/workerpools",
+                  "request": {
+                    "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest"
+                  },
+                  "response": {
+                    "$ref": "GoogleLongrunningOperation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "delete": {
+                  "description": "Deletes the specified worker pool.\nReturns a long running operation, which contains a `google.protobuf.Empty`\nresponse on completion.\nWhile the long running operation is in progress, any call to\n`GetWorkerPool` returns a worker pool in state `DELETING`.",
+                  "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools/{workerpoolsId}",
+                  "httpMethod": "DELETE",
+                  "id": "remotebuildexecution.projects.instances.workerpools.delete",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Name of the worker pool to delete.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/instances/[^/]+/workerpools/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1alpha/{+name}",
+                  "response": {
+                    "$ref": "GoogleLongrunningOperation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "get": {
+                  "description": "Returns the specified worker pool.",
+                  "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools/{workerpoolsId}",
+                  "httpMethod": "GET",
+                  "id": "remotebuildexecution.projects.instances.workerpools.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "Name of the worker pool to retrieve.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/instances/[^/]+/workerpools/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1alpha/{+name}",
+                  "response": {
+                    "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists worker pools in an instance.",
+                  "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools",
+                  "httpMethod": "GET",
+                  "id": "remotebuildexecution.projects.instances.workerpools.list",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "Resource name of the instance.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/instances/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1alpha/{+parent}/workerpools",
+                  "response": {
+                    "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "patch": {
+                  "description": "Updates an existing worker pool with a specified size and/or configuration.\nReturns a long running operation, which contains a worker pool on\ncompletion. While the long running operation is in progress, any call to\n`GetWorkerPool` returns a worker pool in state `UPDATING`.",
+                  "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools/{workerpoolsId}",
+                  "httpMethod": "PATCH",
+                  "id": "remotebuildexecution.projects.instances.workerpools.patch",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "WorkerPool resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.\nname should not be populated when creating a worker pool since it is\nprovided in the `poolId` field.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/instances/[^/]+/workerpools/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1alpha/{+name}",
+                  "request": {
+                    "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest"
+                  },
+                  "response": {
+                    "$ref": "GoogleLongrunningOperation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "operations": {
+          "methods": {
+            "get": {
+              "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+              "flatPath": "v1alpha/projects/{projectsId}/operations/{operationsId}",
+              "httpMethod": "GET",
+              "id": "remotebuildexecution.projects.operations.get",
+              "parameterOrder": [
+                "name"
+              ],
+              "parameters": {
+                "name": {
+                  "description": "The name of the operation resource.",
+                  "location": "path",
+                  "pattern": "^projects/[^/]+/operations/[^/]+$",
+                  "required": true,
+                  "type": "string"
+                }
+              },
+              "path": "v1alpha/{+name}",
+              "response": {
+                "$ref": "GoogleLongrunningOperation"
+              },
+              "scopes": [
+                "https://www.googleapis.com/auth/cloud-platform"
+              ]
+            }
+          }
+        }
+      }
+    }
+  },
+  "revision": "20190103",
+  "rootUrl": "https://admin-remotebuildexecution.googleapis.com/",
+  "schemas": {
+    "BuildBazelRemoteExecutionV2Action": {
+      "description": "An `Action` captures all the information about an execution which is required\nto reproduce it.\n\n`Action`s are the core component of the [Execution] service. A single\n`Action` represents a repeatable action that can be performed by the\nexecution service. `Action`s can be succinctly identified by the digest of\ntheir wire format encoding and, once an `Action` has been executed, will be\ncached in the action cache. Future requests can then use the cached result\nrather than needing to run afresh.\n\nWhen a server completes execution of an\nAction, it MAY choose to\ncache the result in\nthe ActionCache unless\n`do_not_cache` is `true`. Clients SHOULD expect the server to do so. By\ndefault, future calls to\nExecute the same\n`Action` will also serve their results from the cache. Clients must take care\nto understand the caching behaviour. Ideally, all `Action`s will be\nreproducible so that serving a result from cache is always desirable and\ncorrect.",
+      "id": "BuildBazelRemoteExecutionV2Action",
+      "properties": {
+        "commandDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the Command\nto run, which MUST be present in the\nContentAddressableStorage."
+        },
+        "doNotCache": {
+          "description": "If true, then the `Action`'s result cannot be cached.",
+          "type": "boolean"
+        },
+        "inputRootDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the root\nDirectory for the input\nfiles. The files in the directory tree are available in the correct\nlocation on the build machine before the command is executed. The root\ndirectory, as well as every subdirectory and content blob referred to, MUST\nbe in the\nContentAddressableStorage."
+        },
+        "timeout": {
+          "description": "A timeout after which the execution should be killed. If the timeout is\nabsent, then the client is specifying that the execution should continue\nas long as the server will let it. The server SHOULD impose a timeout if\nthe client does not specify one, however, if the client does specify a\ntimeout that is longer than the server's maximum timeout, the server MUST\nreject the request.\n\nThe timeout is a part of the\nAction message, and\ntherefore two `Actions` with different timeouts are different, even if they\nare otherwise identical. This is because, if they were not, running an\n`Action` with a lower timeout than is required might result in a cache hit\nfrom an execution run with a longer timeout, hiding the fact that the\ntimeout is too short. By encoding it directly in the `Action`, a lower\ntimeout will result in a cache miss and the execution timeout will fail\nimmediately, rather than whenever the cache entry gets evicted.",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ActionResult": {
+      "description": "An ActionResult represents the result of an\nAction being run.",
+      "id": "BuildBazelRemoteExecutionV2ActionResult",
+      "properties": {
+        "executionMetadata": {
+          "$ref": "BuildBazelRemoteExecutionV2ExecutedActionMetadata",
+          "description": "The details of the execution that originally produced this result."
+        },
+        "exitCode": {
+          "description": "The exit code of the command.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputDirectories": {
+          "description": "The output directories of the action. For each output directory requested\nin the `output_directories` field of the Action, if the corresponding\ndirectory existed after the action completed, a single entry will be\npresent in the output list, which will contain the digest of a\nTree message containing the\ndirectory tree, and the path equal exactly to the corresponding Action\noutput_directories member.\n\nAs an example, suppose the Action had an output directory `a/b/dir` and the\nexecution produced the following contents in `a/b/dir`: a file named `bar`\nand a directory named `foo` with an executable file named `baz`. Then,\noutput_directory will contain (hashes shortened for readability):\n\n```json\n// OutputDirectory proto:\n{\n  path: \"a/b/dir\"\n  tree_digest: {\n    hash: \"4a73bc9d03...\",\n    size: 55\n  }\n}\n// Tree proto with hash \"4a73bc9d03...\" and size 55:\n{\n  root: {\n    files: [\n      {\n        name: \"bar\",\n        digest: {\n          hash: \"4a73bc9d03...\",\n          size: 65534\n        }\n      }\n    ],\n    directories: [\n      {\n        name: \"foo\",\n        digest: {\n          hash: \"4cf2eda940...\",\n          size: 43\n        }\n      }\n    ]\n  }\n  children : {\n    // (Directory proto with hash \"4cf2eda940...\" and size 43)\n    files: [\n      {\n        name: \"baz\",\n        digest: {\n          hash: \"b2c941073e...\",\n          size: 1294,\n        },\n        is_executable: true\n      }\n    ]\n  }\n}\n```",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputDirectory"
+          },
+          "type": "array"
+        },
+        "outputDirectorySymlinks": {
+          "description": "The output directories of the action that are symbolic links to other\ndirectories. Those may be links to other output directories, or input\ndirectories, or even absolute paths outside of the working directory,\nif the server supports\nSymlinkAbsolutePathStrategy.ALLOWED.\nFor each output directory requested in the `output_directories` field of\nthe Action, if the directory file existed after\nthe action completed, a single entry will be present either in this field,\nor in the `output_directories` field, if the directory was not a symbolic link.\n\nIf the action does not produce the requested output, or produces a\nfile where a directory is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputSymlink"
+          },
+          "type": "array"
+        },
+        "outputFileSymlinks": {
+          "description": "The output files of the action that are symbolic links to other files. Those\nmay be links to other output files, or input files, or even absolute paths\noutside of the working directory, if the server supports\nSymlinkAbsolutePathStrategy.ALLOWED.\nFor each output file requested in the `output_files` field of the Action,\nif the corresponding file existed after\nthe action completed, a single entry will be present either in this field,\nor in the `output_files` field, if the file was not a symbolic link.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputSymlink"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "The output files of the action. For each output file requested in the\n`output_files` field of the Action, if the corresponding file existed after\nthe action completed, a single entry will be present either in this field,\nor in the output_file_symlinks field, if the file was a symbolic link to\nanother file.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputFile"
+          },
+          "type": "array"
+        },
+        "stderrDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest for a blob containing the standard error of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stderr_raw` for when this will be set."
+        },
+        "stderrRaw": {
+          "description": "The standard error buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stderr_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        },
+        "stdoutDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest for a blob containing the standard output of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stdout_raw` for when this will be set."
+        },
+        "stdoutRaw": {
+          "description": "The standard output buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stdout_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Command": {
+      "description": "A `Command` is the actual command executed by a worker running an\nAction and specifications of its\nenvironment.\n\nExcept as otherwise required, the environment (such as which system\nlibraries or binaries are available, and what filesystems are mounted where)\nis defined by and specific to the implementation of the remote execution API.",
+      "id": "BuildBazelRemoteExecutionV2Command",
+      "properties": {
+        "arguments": {
+          "description": "The arguments to the command. The first argument must be the path to the\nexecutable, which must be either a relative path, in which case it is\nevaluated with respect to the input root, or an absolute path.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "The environment variables to set when running the program. The worker may\nprovide its own default environment variables; these defaults can be\noverridden using this field. Additional variables can also be specified.\n\nIn order to ensure that equivalent `Command`s always hash to the same\nvalue, the environment variables MUST be lexicographically sorted by name.\nSorting of strings is done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2CommandEnvironmentVariable"
+          },
+          "type": "array"
+        },
+        "outputDirectories": {
+          "description": "A list of the output directories that the client expects to retrieve from\nthe action. Only the contents of the indicated directories (recursively\nincluding the contents of their subdirectories) will be\nreturned, as well as files listed in `output_files`. Other files that may\nbe created during command execution are discarded.\n\nThe paths are relative to the working directory of the action execution.\nThe paths are specified using a single forward slash (`/`) as a path\nseparator, even if the execution platform natively uses a different\nseparator. The path MUST NOT include a trailing slash, nor a leading slash,\nbeing a relative path. The special value of empty string is allowed,\nalthough not recommended, and can be used to capture the entire working\ndirectory tree, including inputs.\n\nIn order to ensure consistent hashing of the same Action, the output paths\nMUST be sorted lexicographically by code point (or, equivalently, by UTF-8\nbytes).\n\nAn output directory cannot be duplicated, be a parent of another output\ndirectory, be a parent of a listed output file, or have the same path as\nany of the listed output files.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "A list of the output files that the client expects to retrieve from the\naction. Only the listed files, as well as directories listed in\n`output_directories`, will be returned to the client as output.\nOther files that may be created during command execution are discarded.\n\nThe paths are relative to the working directory of the action execution.\nThe paths are specified using a single forward slash (`/`) as a path\nseparator, even if the execution platform natively uses a different\nseparator. The path MUST NOT include a trailing slash, nor a leading slash,\nbeing a relative path.\n\nIn order to ensure consistent hashing of the same Action, the output paths\nMUST be sorted lexicographically by code point (or, equivalently, by UTF-8\nbytes).\n\nAn output file cannot be duplicated, be a parent of another output file, be\na child of a listed output directory, or have the same path as any of the\nlisted output directories.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "platform": {
+          "$ref": "BuildBazelRemoteExecutionV2Platform",
+          "description": "The platform requirements for the execution environment. The server MAY\nchoose to execute the action on any worker satisfying the requirements, so\nthe client SHOULD ensure that running the action on any such worker will\nhave the same result."
+        },
+        "workingDirectory": {
+          "description": "The working directory, relative to the input root, for the command to run\nin. It must be a directory which exists in the input tree. If it is left\nempty, then the action is run in the input root.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2CommandEnvironmentVariable": {
+      "description": "An `EnvironmentVariable` is one variable to set in the running program's\nenvironment.",
+      "id": "BuildBazelRemoteExecutionV2CommandEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The variable name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The variable value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Digest": {
+      "description": "A content digest. A digest for a given blob consists of the size of the blob\nand its hash. The hash algorithm to use is defined by the server, but servers\nSHOULD use SHA-256.\n\nThe size is considered to be an integral part of the digest and cannot be\nseparated. That is, even if the `hash` field is correctly specified but\n`size_bytes` is not, the server MUST reject the request.\n\nThe reason for including the size in the digest is as follows: in a great\nmany cases, the server needs to know the size of the blob it is about to work\nwith prior to starting an operation with it, such as flattening Merkle tree\nstructures or streaming it to a worker. Technically, the server could\nimplement a separate metadata store, but this results in a significantly more\ncomplicated implementation as opposed to having the client specify the size\nup-front (or storing the size along with the digest in every message where\ndigests are embedded). This does mean that the API leaks some implementation\ndetails of (what we consider to be) a reasonable server implementation, but\nwe consider this to be a worthwhile tradeoff.\n\nWhen a `Digest` is used to refer to a proto message, it always refers to the\nmessage in binary encoded form. To ensure consistent hashing, clients and\nservers MUST ensure that they serialize messages according to the following\nrules, even if there are alternate valid encodings for the same message.\n- Fields are serialized in tag order.\n- There are no unknown fields.\n- There are no duplicate fields.\n- Fields are serialized according to the default semantics for their type.\n\nMost protocol buffer implementations will always follow these rules when\nserializing, but care should be taken to avoid shortcuts. For instance,\nconcatenating two messages to merge them may produce duplicate fields.",
+      "id": "BuildBazelRemoteExecutionV2Digest",
+      "properties": {
+        "hash": {
+          "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the blob, in bytes.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Directory": {
+      "description": "A `Directory` represents a directory node in a file tree, containing zero or\nmore children FileNodes,\nDirectoryNodes and\nSymlinkNodes.\nEach `Node` contains its name in the directory, either the digest of its\ncontent (either a file blob or a `Directory` proto) or a symlink target, as\nwell as possibly some metadata about the file or directory.\n\nIn order to ensure that two equivalent directory trees hash to the same\nvalue, the following restrictions MUST be obeyed when constructing a\na `Directory`:\n  - Every child in the directory must have a path of exactly one segment.\n    Multiple levels of directory hierarchy may not be collapsed.\n  - Each child in the directory must have a unique path segment (file name).\n  - The files, directories and symlinks in the directory must each be sorted\n    in lexicographical order by path. The path strings must be sorted by code\n    point, equivalently, by UTF-8 bytes.\n\nA `Directory` that obeys the restrictions is said to be in canonical form.\n\nAs an example, the following could be used for a file named `bar` and a\ndirectory named `foo` with an executable file named `baz` (hashes shortened\nfor readability):\n\n```json\n// (Directory proto)\n{\n  files: [\n    {\n      name: \"bar\",\n      digest: {\n        hash: \"4a73bc9d03...\",\n        size: 65534\n      }\n    }\n  ],\n  directories: [\n    {\n      name: \"foo\",\n      digest: {\n        hash: \"4cf2eda940...\",\n        size: 43\n      }\n    }\n  ]\n}\n\n// (Directory proto with hash \"4cf2eda940...\" and size 43)\n{\n  files: [\n    {\n      name: \"baz\",\n      digest: {\n        hash: \"b2c941073e...\",\n        size: 1294,\n      },\n      is_executable: true\n    }\n  ]\n}\n```",
+      "id": "BuildBazelRemoteExecutionV2Directory",
+      "properties": {
+        "directories": {
+          "description": "The subdirectories in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2DirectoryNode"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2FileNode"
+          },
+          "type": "array"
+        },
+        "symlinks": {
+          "description": "The symlinks in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2SymlinkNode"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2DirectoryNode": {
+      "description": "A `DirectoryNode` represents a child of a\nDirectory which is itself\na `Directory` and its associated metadata.",
+      "id": "BuildBazelRemoteExecutionV2DirectoryNode",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the\nDirectory object\nrepresented. See Digest\nfor information about how to take the digest of a proto message."
+        },
+        "name": {
+          "description": "The name of the directory.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecuteOperationMetadata": {
+      "description": "Metadata about an ongoing\nexecution, which\nwill be contained in the metadata\nfield of the\nOperation.",
+      "id": "BuildBazelRemoteExecutionV2ExecuteOperationMetadata",
+      "properties": {
+        "actionDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the Action\nbeing executed."
+        },
+        "stage": {
+          "enum": [
+            "UNKNOWN",
+            "CACHE_CHECK",
+            "QUEUED",
+            "EXECUTING",
+            "COMPLETED"
+          ],
+          "enumDescriptions": [
+            "",
+            "Checking the result against the cache.",
+            "Currently idle, awaiting a free machine to execute.",
+            "Currently being executed by a worker.",
+            "Finished execution."
+          ],
+          "type": "string"
+        },
+        "stderrStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard error.",
+          "type": "string"
+        },
+        "stdoutStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard output.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecuteResponse": {
+      "description": "The response message for\nExecution.Execute,\nwhich will be contained in the response\nfield of the\nOperation.",
+      "id": "BuildBazelRemoteExecutionV2ExecuteResponse",
+      "properties": {
+        "cachedResult": {
+          "description": "True if the result was served from cache, false if it was executed.",
+          "type": "boolean"
+        },
+        "result": {
+          "$ref": "BuildBazelRemoteExecutionV2ActionResult",
+          "description": "The result of the action."
+        },
+        "serverLogs": {
+          "additionalProperties": {
+            "$ref": "BuildBazelRemoteExecutionV2LogFile"
+          },
+          "description": "An optional list of additional log outputs the server wishes to provide. A\nserver can use this to return execution-specific logs however it wishes.\nThis is intended primarily to make it easier for users to debug issues that\nmay be outside of the actual job execution, such as by identifying the\nworker executing the action or by providing logs from the worker's setup\nphase. The keys SHOULD be human readable so that a client can display them\nto a user.",
+          "type": "object"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "If the status has a code other than `OK`, it indicates that the action did\nnot finish execution. For example, if the operation times out during\nexecution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST\nuse this field for errors in execution, rather than the error field on the\n`Operation` object.\n\nIf the status code is other than `OK`, then the result MUST NOT be cached.\nFor an error status, the `result` field is optional; the server may\npopulate the output-, stdout-, and stderr-related fields if it has any\ninformation available, such as the stdout and stderr of a timed-out action."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecutedActionMetadata": {
+      "description": "ExecutedActionMetadata contains details about a completed execution.",
+      "id": "BuildBazelRemoteExecutionV2ExecutedActionMetadata",
+      "properties": {
+        "executionCompletedTimestamp": {
+          "description": "When the worker completed executing the action command.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "executionStartTimestamp": {
+          "description": "When the worker started executing the action command.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "inputFetchCompletedTimestamp": {
+          "description": "When the worker finished fetching action inputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "inputFetchStartTimestamp": {
+          "description": "When the worker started fetching action inputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "outputUploadCompletedTimestamp": {
+          "description": "When the worker finished uploading action outputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "outputUploadStartTimestamp": {
+          "description": "When the worker started uploading action outputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "queuedTimestamp": {
+          "description": "When was the action added to the queue.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "worker": {
+          "description": "The name of the worker which ran the execution.",
+          "type": "string"
+        },
+        "workerCompletedTimestamp": {
+          "description": "When the worker completed the action, including all stages.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "workerStartTimestamp": {
+          "description": "When the worker received the action.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2FileNode": {
+      "description": "A `FileNode` represents a single file and associated metadata.",
+      "id": "BuildBazelRemoteExecutionV2FileNode",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "The name of the file.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2LogFile": {
+      "description": "A `LogFile` is a log stored in the CAS.",
+      "id": "BuildBazelRemoteExecutionV2LogFile",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the log contents."
+        },
+        "humanReadable": {
+          "description": "This is a hint as to the purpose of the log, and is set to true if the log\nis human-readable text that can be usefully displayed to a user, and false\notherwise. For instance, if a command-line client wishes to print the\nserver logs to the terminal for a failed action, this allows it to avoid\ndisplaying a binary file.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputDirectory": {
+      "description": "An `OutputDirectory` is the output in an `ActionResult` corresponding to a\ndirectory's full contents rather than a single file.",
+      "id": "BuildBazelRemoteExecutionV2OutputDirectory",
+      "properties": {
+        "path": {
+          "description": "The full path of the directory relative to the working directory. The path\nseparator is a forward slash `/`. Since this is a relative path, it MUST\nNOT begin with a leading forward slash. The empty string value is allowed,\nand it denotes the entire working directory.",
+          "type": "string"
+        },
+        "treeDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the encoded\nTree proto containing the\ndirectory's contents."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputFile": {
+      "description": "An `OutputFile` is similar to a\nFileNode, but it is used as an\noutput in an `ActionResult`. It allows a full file path rather than\nonly a name.\n\n`OutputFile` is binary-compatible with `FileNode`.",
+      "id": "BuildBazelRemoteExecutionV2OutputFile",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The full path of the file relative to the working directory, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputSymlink": {
+      "description": "An `OutputSymlink` is similar to a\nSymlink, but it is used as an\noutput in an `ActionResult`.\n\n`OutputSymlink` is binary-compatible with `SymlinkNode`.",
+      "id": "BuildBazelRemoteExecutionV2OutputSymlink",
+      "properties": {
+        "path": {
+          "description": "The full path of the symlink relative to the working directory, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        },
+        "target": {
+          "description": "The target path of the symlink. The path separator is a forward slash `/`.\nThe target path can be relative to the parent directory of the symlink or\nit can be an absolute path starting with `/`. Support for absolute paths\ncan be checked using the Capabilities\nAPI. The canonical form forbids the substrings `/./` and `//` in the target\npath. `..` components are allowed anywhere in the target path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Platform": {
+      "description": "A `Platform` is a set of requirements, such as hardware, operating system, or\ncompiler toolchain, for an\nAction's execution\nenvironment. A `Platform` is represented as a series of key-value pairs\nrepresenting the properties that are required of the platform.",
+      "id": "BuildBazelRemoteExecutionV2Platform",
+      "properties": {
+        "properties": {
+          "description": "The properties that make up this platform. In order to ensure that\nequivalent `Platform`s always hash to the same value, the properties MUST\nbe lexicographically sorted by name, and then by value. Sorting of strings\nis done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2PlatformProperty"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2PlatformProperty": {
+      "description": "A single property for the environment. The server is responsible for\nspecifying the property `name`s that it accepts. If an unknown `name` is\nprovided in the requirements for an\nAction, the server SHOULD\nreject the execution request. If permitted by the server, the same `name`\nmay occur multiple times.\n\nThe server is also responsible for specifying the interpretation of\nproperty `value`s. For instance, a property describing how much RAM must be\navailable may be interpreted as allowing a worker with 16GB to fulfill a\nrequest for 8GB, while a property describing the OS environment on which\nthe action must be performed may require an exact match with the worker's\nOS.\n\nThe server MAY use the `value` of one or more properties to determine how\nit sets up the execution environment, such as by making specific system\nfiles available to the worker.",
+      "id": "BuildBazelRemoteExecutionV2PlatformProperty",
+      "properties": {
+        "name": {
+          "description": "The property name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The property value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2RequestMetadata": {
+      "description": "An optional Metadata to attach to any RPC request to tell the server about an\nexternal context of the request. The server may use this for logging or other\npurposes. To use it, the client attaches the header to the call using the\ncanonical proto serialization:\nname: build.bazel.remote.execution.v2.requestmetadata-bin\ncontents: the base64 encoded binary RequestMetadata message.",
+      "id": "BuildBazelRemoteExecutionV2RequestMetadata",
+      "properties": {
+        "actionId": {
+          "description": "An identifier that ties multiple requests to the same action.\nFor example, multiple requests to the CAS, Action Cache, and Execution\nAPI are used in order to compile foo.cc.",
+          "type": "string"
+        },
+        "correlatedInvocationsId": {
+          "description": "An identifier to tie multiple tool invocations together. For example,\nruns of foo_test, bar_test and baz_test on a post-submit of a given patch.",
+          "type": "string"
+        },
+        "toolDetails": {
+          "$ref": "BuildBazelRemoteExecutionV2ToolDetails",
+          "description": "The details for the tool invoking the requests."
+        },
+        "toolInvocationId": {
+          "description": "An identifier that ties multiple actions together to a final result.\nFor example, multiple actions are required to build and run foo_test.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2SymlinkNode": {
+      "description": "A `SymlinkNode` represents a symbolic link.",
+      "id": "BuildBazelRemoteExecutionV2SymlinkNode",
+      "properties": {
+        "name": {
+          "description": "The name of the symlink.",
+          "type": "string"
+        },
+        "target": {
+          "description": "The target path of the symlink. The path separator is a forward slash `/`.\nThe target path can be relative to the parent directory of the symlink or\nit can be an absolute path starting with `/`. Support for absolute paths\ncan be checked using the Capabilities\nAPI. The canonical form forbids the substrings `/./` and `//` in the target\npath. `..` components are allowed anywhere in the target path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ToolDetails": {
+      "description": "Details for the tool used to call the API.",
+      "id": "BuildBazelRemoteExecutionV2ToolDetails",
+      "properties": {
+        "toolName": {
+          "description": "Name of the tool, e.g. bazel.",
+          "type": "string"
+        },
+        "toolVersion": {
+          "description": "Version of the tool used for the request, e.g. 5.0.3.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Tree": {
+      "description": "A `Tree` contains all the\nDirectory protos in a\nsingle directory Merkle tree, compressed into one message.",
+      "id": "BuildBazelRemoteExecutionV2Tree",
+      "properties": {
+        "children": {
+          "description": "All the child directories: the directories referred to by the root and,\nrecursively, all its children. In order to reconstruct the directory tree,\nthe client must take the digests of each of the child directories and then\nbuild up a tree starting from the `root`.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2Directory"
+          },
+          "type": "array"
+        },
+        "root": {
+          "$ref": "BuildBazelRemoteExecutionV2Directory",
+          "description": "The root directory in the tree."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildbotCommandDurations": {
+      "description": "CommandDuration contains the various duration metrics tracked when a bot\nperforms a command.",
+      "id": "GoogleDevtoolsRemotebuildbotCommandDurations",
+      "properties": {
+        "dockerPrep": {
+          "description": "The time spent preparing the command to be run in a Docker container\n(includes pulling the Docker image, if necessary).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "download": {
+          "description": "The time spent downloading the input files and constructing the working\ndirectory.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "execution": {
+          "description": "The time spent executing the command (i.e., doing useful work).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "isoPrepDone": {
+          "description": "The timestamp when preparation is done and bot starts downloading files.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "overall": {
+          "description": "The time spent completing the command, in total.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "stdout": {
+          "description": "The time spent uploading the stdout logs.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "upload": {
+          "description": "The time spent uploading the output files.",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildbotCommandEvents": {
+      "description": "CommandEvents contains counters for the number of warnings and errors\nthat occurred during the execution of a command.",
+      "id": "GoogleDevtoolsRemotebuildbotCommandEvents",
+      "properties": {
+        "dockerCacheHit": {
+          "description": "Indicates whether we are using a cached Docker image (true) or had to pull\nthe Docker image (false) for this command.",
+          "type": "boolean"
+        },
+        "numErrors": {
+          "description": "The number of errors reported.",
+          "format": "uint64",
+          "type": "string"
+        },
+        "numWarnings": {
+          "description": "The number of warnings reported.",
+          "format": "uint64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest": {
+      "description": "The request used for `CreateInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest",
+      "properties": {
+        "instance": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance",
+          "description": "Specifies the instance to create.\nThe name in the instance, if specified in the instance, is ignored."
+        },
+        "instanceId": {
+          "description": "ID of the created instance.\nA valid `instance_id` must:\nbe 6-50 characters long,\ncontains only lowercase letters, digits, hyphens and underscores,\nstart with a lowercase letter, and\nend with a lowercase letter or a digit.",
+          "type": "string"
+        },
+        "parent": {
+          "description": "Resource name of the project containing the instance.\nFormat: `projects/[PROJECT_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest": {
+      "description": "The request used for `CreateWorkerPool`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the instance in which to create the new worker pool.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        },
+        "poolId": {
+          "description": "ID of the created worker pool.\nA valid pool ID must:\nbe 6-50 characters long,\ncontain only lowercase letters, digits, hyphens and underscores,\nstart with a lowercase letter, and\nend with a lowercase letter or a digit.",
+          "type": "string"
+        },
+        "workerPool": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+          "description": "Specifies the worker pool to create.\nThe name in the worker pool, if specified, is ignored."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest": {
+      "description": "The request used for `DeleteInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the instance to delete.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest": {
+      "description": "The request used for DeleteWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the worker pool to delete.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest": {
+      "description": "The request used for `GetInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the instance to retrieve.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest": {
+      "description": "The request used for GetWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the worker pool to retrieve.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance": {
+      "description": "Instance conceptually encapsulates all Remote Build Execution resources\nfor remote builds.\nAn instance consists of storage and compute resources (for example,\n`ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for\nrunning remote builds.\nAll Remote Build Execution API calls are scoped to an instance.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance",
+      "properties": {
+        "location": {
+          "description": "The location is a GCP region. Currently only `us-central1` is supported.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only. Instance resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.\nName should not be populated when creating an instance since it is provided\nin the `instance_id` field.",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. State of the instance.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "CREATING",
+            "RUNNING",
+            "INACTIVE"
+          ],
+          "enumDescriptions": [
+            "Not a valid state, but the default value of the enum.",
+            "The instance is in state `CREATING` once `CreateInstance` is called and\nbefore the instance is ready for use.",
+            "The instance is in state `RUNNING` when it is ready for use.",
+            "An `INACTIVE` instance indicates that there is a problem that needs to be\nfixed. Such instances cannot be used for execution and instances that\nremain in this state for a significant period of time will be removed\npermanently."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the project.\nFormat: `projects/[PROJECT_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse",
+      "properties": {
+        "instances": {
+          "description": "The list of instances in a given project.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the instance.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse",
+      "properties": {
+        "workerPools": {
+          "description": "The list of worker pools in a given instance.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest": {
+      "description": "The request used for UpdateWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest",
+      "properties": {
+        "updateMask": {
+          "description": "The update mask applies to worker_pool. For the `FieldMask` definition,\nsee https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask\nIf an empty update_mask is provided, only the non-default valued field in\nthe worker pool field will be updated. Note that in order to update a field\nto the default value (zero, false, empty string) an explicit update_mask\nmust be provided.",
+          "format": "google-fieldmask",
+          "type": "string"
+        },
+        "workerPool": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+          "description": "Specifies the worker pool to update."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig": {
+      "description": "Defines the configuration to be used for a creating workers in\nthe worker pool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
+      "properties": {
+        "diskSizeGb": {
+          "description": "Required. Size of the disk attached to the worker, in GB.\nSee https://cloud.google.com/compute/docs/disks/",
+          "format": "int64",
+          "type": "string"
+        },
+        "diskType": {
+          "description": "Required. Disk Type to use for the worker.\nSee [Storage options](https://cloud.google.com/compute/docs/disks/#introduction).\nCurrently only `pd-standard` is supported.",
+          "type": "string"
+        },
+        "machineType": {
+          "description": "Required. Machine type of the worker, such as n1-standard-2.\nSee https://cloud.google.com/compute/docs/machine-types for a list of\nsupported machine types.",
+          "type": "string"
+        },
+        "minCpuPlatform": {
+          "description": "Minimum CPU platform to use when creating the worker.\nSee [CPU Platforms](https://cloud.google.com/compute/docs/cpu-platforms).",
+          "type": "string"
+        },
+        "reserved": {
+          "description": "Output only. `reserved=true` means the worker is reserved and won't be\npreempted.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool": {
+      "description": "A worker pool resource in the Remote Build Execution API.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+      "properties": {
+        "name": {
+          "description": "WorkerPool resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.\nname should not be populated when creating a worker pool since it is\nprovided in the `poolId` field.",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. State of the worker pool.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "CREATING",
+            "RUNNING",
+            "UPDATING",
+            "DELETING",
+            "INACTIVE"
+          ],
+          "enumDescriptions": [
+            "Not a valid state, but the default value of the enum.",
+            "The worker pool is in state `CREATING` once `CreateWorkerPool` is called\nand before all requested workers are ready.",
+            "The worker pool is in state `RUNNING` when all its workers are ready for\nuse.",
+            "The worker pool is in state `UPDATING` once `UpdateWorkerPool` is called\nand before the new configuration has all the requested workers ready for\nuse, and no older configuration has any workers. At that point the state\ntransitions to `RUNNING`.",
+            "The worker pool is in state `DELETING` once the `Delete` method is called\nand before the deletion completes.",
+            "The worker pool is in state `INACTIVE` when the instance hosting the\nworker pool in not running."
+          ],
+          "type": "string"
+        },
+        "workerConfig": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
+          "description": "Specifies the properties, such as machine type and disk size, used for\ncreating workers in a worker pool."
+        },
+        "workerCount": {
+          "description": "The desired number of workers in the worker pool. Must be a value between\n0 and 1000.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testActionResult": {
+      "description": "An ActionResult represents the result of an\nAction being run.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testActionResult",
+      "properties": {
+        "exitCode": {
+          "description": "The exit code of the command.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputDirectories": {
+          "description": "The output directories of the action. For each output directory requested\nin the `output_directories` field of the Action, if the corresponding\ndirectory existed after the action completed, a single entry will be\npresent in the output list, which will contain the digest of\na Tree message containing\nthe directory tree, and the path equal exactly to the corresponding Action\noutput_directories member.\nAs an example, suppose the Action had an output directory `a/b/dir` and the\nexecution produced the following contents in `a/b/dir`: a file named `bar`\nand a directory named `foo` with an executable file named `baz`. Then,\noutput_directory will contain (hashes shortened for readability):\n\n```json\n// OutputDirectory proto:\n{\n  path: \"a/b/dir\"\n  tree_digest: {\n    hash: \"4a73bc9d03...\",\n    size: 55\n  }\n}\n// Tree proto with hash \"4a73bc9d03...\" and size 55:\n{\n  root: {\n    files: [\n      {\n        name: \"bar\",\n        digest: {\n          hash: \"4a73bc9d03...\",\n          size: 65534\n        }\n      }\n    ],\n    directories: [\n      {\n        name: \"foo\",\n        digest: {\n          hash: \"4cf2eda940...\",\n          size: 43\n        }\n      }\n    ]\n  }\n  children : {\n    // (Directory proto with hash \"4cf2eda940...\" and size 43)\n    files: [\n      {\n        name: \"baz\",\n        digest: {\n          hash: \"b2c941073e...\",\n          size: 1294,\n        },\n        is_executable: true\n      }\n    ]\n  }\n}\n```",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testOutputDirectory"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "The output files of the action. For each output file requested in the\n`output_files` field of the Action, if the corresponding file existed after\nthe action completed, a single entry will be present in the output list.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testOutputFile"
+          },
+          "type": "array"
+        },
+        "stderrDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest for a blob containing the standard error of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stderr_raw` for when this will be set."
+        },
+        "stderrRaw": {
+          "description": "The standard error buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stderr_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        },
+        "stdoutDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest for a blob containing the standard output of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stdout_raw` for when this will be set."
+        },
+        "stdoutRaw": {
+          "description": "The standard output buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stdout_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testCommand": {
+      "description": "A `Command` is the actual command executed by a worker running an\nAction.\n\nExcept as otherwise required, the environment (such as which system\nlibraries or binaries are available, and what filesystems are mounted where)\nis defined by and specific to the implementation of the remote execution API.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testCommand",
+      "properties": {
+        "arguments": {
+          "description": "The arguments to the command. The first argument must be the path to the\nexecutable, which must be either a relative path, in which case it is\nevaluated with respect to the input root, or an absolute path.\n\nThe working directory will always be the input root.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "The environment variables to set when running the program. The worker may\nprovide its own default environment variables; these defaults can be\noverridden using this field. Additional variables can also be specified.\n\nIn order to ensure that equivalent `Command`s always hash to the same\nvalue, the environment variables MUST be lexicographically sorted by name.\nSorting of strings is done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable": {
+      "description": "An `EnvironmentVariable` is one variable to set in the running program's\nenvironment.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The variable name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The variable value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDigest": {
+      "description": "A content digest. A digest for a given blob consists of the size of the blob\nand its hash. The hash algorithm to use is defined by the server, but servers\nSHOULD use SHA-256.\n\nThe size is considered to be an integral part of the digest and cannot be\nseparated. That is, even if the `hash` field is correctly specified but\n`size_bytes` is not, the server MUST reject the request.\n\nThe reason for including the size in the digest is as follows: in a great\nmany cases, the server needs to know the size of the blob it is about to work\nwith prior to starting an operation with it, such as flattening Merkle tree\nstructures or streaming it to a worker. Technically, the server could\nimplement a separate metadata store, but this results in a significantly more\ncomplicated implementation as opposed to having the client specify the size\nup-front (or storing the size along with the digest in every message where\ndigests are embedded). This does mean that the API leaks some implementation\ndetails of (what we consider to be) a reasonable server implementation, but\nwe consider this to be a worthwhile tradeoff.\n\nWhen a `Digest` is used to refer to a proto message, it always refers to the\nmessage in binary encoded form. To ensure consistent hashing, clients and\nservers MUST ensure that they serialize messages according to the following\nrules, even if there are alternate valid encodings for the same message.\n- Fields are serialized in tag order.\n- There are no unknown fields.\n- There are no duplicate fields.\n- Fields are serialized according to the default semantics for their type.\n\nMost protocol buffer implementations will always follow these rules when\nserializing, but care should be taken to avoid shortcuts. For instance,\nconcatenating two messages to merge them may produce duplicate fields.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDigest",
+      "properties": {
+        "hash": {
+          "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the blob, in bytes.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDirectory": {
+      "description": "A `Directory` represents a directory node in a file tree, containing zero or\nmore children FileNodes\nand DirectoryNodes.\nEach `Node` contains its name in the directory, the digest of its content\n(either a file blob or a `Directory` proto), as well as possibly some\nmetadata about the file or directory.\n\nIn order to ensure that two equivalent directory trees hash to the same\nvalue, the following restrictions MUST be obeyed when constructing a\na `Directory`:\n  - Every child in the directory must have a path of exactly one segment.\n    Multiple levels of directory hierarchy may not be collapsed.\n  - Each child in the directory must have a unique path segment (file name).\n  - The files and directories in the directory must each be sorted in\n    lexicographical order by path. The path strings must be sorted by code\n    point, equivalently, by UTF-8 bytes.\n\nA `Directory` that obeys the restrictions is said to be in canonical form.\n\nAs an example, the following could be used for a file named `bar` and a\ndirectory named `foo` with an executable file named `baz` (hashes shortened\nfor readability):\n\n```json\n// (Directory proto)\n{\n  files: [\n    {\n      name: \"bar\",\n      digest: {\n        hash: \"4a73bc9d03...\",\n        size: 65534\n      }\n    }\n  ],\n  directories: [\n    {\n      name: \"foo\",\n      digest: {\n        hash: \"4cf2eda940...\",\n        size: 43\n      }\n    }\n  ]\n}\n\n// (Directory proto with hash \"4cf2eda940...\" and size 43)\n{\n  files: [\n    {\n      name: \"baz\",\n      digest: {\n        hash: \"b2c941073e...\",\n        size: 1294,\n      },\n      is_executable: true\n    }\n  ]\n}\n```",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDirectory",
+      "properties": {
+        "directories": {
+          "description": "The subdirectories in the directory.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectoryNode"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in the directory.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testFileNode"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDirectoryNode": {
+      "description": "A `DirectoryNode` represents a child of a\nDirectory which is itself\na `Directory` and its associated metadata.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDirectoryNode",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the\nDirectory object\nrepresented. See Digest\nfor information about how to take the digest of a proto message."
+        },
+        "name": {
+          "description": "The name of the directory.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata": {
+      "description": "Metadata about an ongoing\nexecution, which\nwill be contained in the metadata\nfield of the\nOperation.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata",
+      "properties": {
+        "actionDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the Action\nbeing executed."
+        },
+        "stage": {
+          "enum": [
+            "UNKNOWN",
+            "CACHE_CHECK",
+            "QUEUED",
+            "EXECUTING",
+            "COMPLETED"
+          ],
+          "enumDescriptions": [
+            "",
+            "Checking the result against the cache.",
+            "Currently idle, awaiting a free machine to execute.",
+            "Currently being executed by a worker.",
+            "Finished execution."
+          ],
+          "type": "string"
+        },
+        "stderrStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard error.",
+          "type": "string"
+        },
+        "stdoutStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard output.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testExecuteResponse": {
+      "description": "The response message for\nExecution.Execute,\nwhich will be contained in the response\nfield of the\nOperation.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testExecuteResponse",
+      "properties": {
+        "cachedResult": {
+          "description": "True if the result was served from cache, false if it was executed.",
+          "type": "boolean"
+        },
+        "result": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testActionResult",
+          "description": "The result of the action."
+        },
+        "serverLogs": {
+          "additionalProperties": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testLogFile"
+          },
+          "description": "An optional list of additional log outputs the server wishes to provide. A\nserver can use this to return execution-specific logs however it wishes.\nThis is intended primarily to make it easier for users to debug issues that\nmay be outside of the actual job execution, such as by identifying the\nworker executing the action or by providing logs from the worker's setup\nphase. The keys SHOULD be human readable so that a client can display them\nto a user.",
+          "type": "object"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "If the status has a code other than `OK`, it indicates that the action did\nnot finish execution. For example, if the operation times out during\nexecution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST\nuse this field for errors in execution, rather than the error field on the\n`Operation` object.\n\nIf the status code is other than `OK`, then the result MUST NOT be cached.\nFor an error status, the `result` field is optional; the server may\npopulate the output-, stdout-, and stderr-related fields if it has any\ninformation available, such as the stdout and stderr of a timed-out action."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testFileNode": {
+      "description": "A `FileNode` represents a single file and associated metadata.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testFileNode",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "The name of the file.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testLogFile": {
+      "description": "A `LogFile` is a log stored in the CAS.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testLogFile",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the log contents."
+        },
+        "humanReadable": {
+          "description": "This is a hint as to the purpose of the log, and is set to true if the log\nis human-readable text that can be usefully displayed to a user, and false\notherwise. For instance, if a command-line client wishes to print the\nserver logs to the terminal for a failed action, this allows it to avoid\ndisplaying a binary file.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testOutputDirectory": {
+      "description": "An `OutputDirectory` is the output in an `ActionResult` corresponding to a\ndirectory's full contents rather than a single file.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testOutputDirectory",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "DEPRECATED: This field is deprecated and should no longer be used."
+        },
+        "path": {
+          "description": "The full path of the directory relative to the working directory. The path\nseparator is a forward slash `/`. Since this is a relative path, it MUST\nNOT begin with a leading forward slash. The empty string value is allowed,\nand it denotes the entire working directory.",
+          "type": "string"
+        },
+        "treeDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the encoded\nTree proto containing the\ndirectory's contents."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testOutputFile": {
+      "description": "An `OutputFile` is similar to a\nFileNode, but it is\ntailored for output as part of an `ActionResult`. It allows a full file path\nrather than only a name, and allows the server to include content inline.\n\n`OutputFile` is binary-compatible with `FileNode`.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testOutputFile",
+      "properties": {
+        "content": {
+          "description": "The raw content of the file.\n\nThis field may be used by the server to provide the content of a file\ninline in an\nActionResult and\navoid requiring that the client make a separate call to\n[ContentAddressableStorage.GetBlob] to retrieve it.\n\nThe client SHOULD NOT assume that it will get raw content with any request,\nand always be prepared to retrieve it via `digest`.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The full path of the file relative to the input root, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testRequestMetadata": {
+      "description": "An optional Metadata to attach to any RPC request to tell the server about an\nexternal context of the request. The server may use this for logging or other\npurposes. To use it, the client attaches the header to the call using the\ncanonical proto serialization:\nname: google.devtools.remoteexecution.v1test.requestmetadata-bin\ncontents: the base64 encoded binary RequestMetadata message.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testRequestMetadata",
+      "properties": {
+        "actionId": {
+          "description": "An identifier that ties multiple requests to the same action.\nFor example, multiple requests to the CAS, Action Cache, and Execution\nAPI are used in order to compile foo.cc.",
+          "type": "string"
+        },
+        "correlatedInvocationsId": {
+          "description": "An identifier to tie multiple tool invocations together. For example,\nruns of foo_test, bar_test and baz_test on a post-submit of a given patch.",
+          "type": "string"
+        },
+        "toolDetails": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testToolDetails",
+          "description": "The details for the tool invoking the requests."
+        },
+        "toolInvocationId": {
+          "description": "An identifier that ties multiple actions together to a final result.\nFor example, multiple actions are required to build and run foo_test.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testToolDetails": {
+      "description": "Details for the tool used to call the API.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testToolDetails",
+      "properties": {
+        "toolName": {
+          "description": "Name of the tool, e.g. bazel.",
+          "type": "string"
+        },
+        "toolVersion": {
+          "description": "Version of the tool used for the request, e.g. 5.0.3.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testTree": {
+      "description": "A `Tree` contains all the\nDirectory protos in a\nsingle directory Merkle tree, compressed into one message.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testTree",
+      "properties": {
+        "children": {
+          "description": "All the child directories: the directories referred to by the root and,\nrecursively, all its children. In order to reconstruct the directory tree,\nthe client must take the digests of each of the child directories and then\nbuild up a tree starting from the `root`.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectory"
+          },
+          "type": "array"
+        },
+        "root": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectory",
+          "description": "The root directory in the tree."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2AdminTemp": {
+      "description": "AdminTemp is a prelimiary set of administration tasks. It's called \"Temp\"\nbecause we do not yet know the best way to represent admin tasks; it's\npossible that this will be entirely replaced in later versions of this API.\nIf this message proves to be sufficient, it will be renamed in the alpha or\nbeta release of this API.\n\nThis message (suitably marshalled into a protobuf.Any) can be used as the\ninline_assignment field in a lease; the lease assignment field should simply\nbe `\"admin\"` in these cases.\n\nThis message is heavily based on Swarming administration tasks from the LUCI\nproject (http://github.com/luci/luci-py/appengine/swarming).",
+      "id": "GoogleDevtoolsRemoteworkersV1test2AdminTemp",
+      "properties": {
+        "arg": {
+          "description": "The argument to the admin action; see `Command` for semantics.",
+          "type": "string"
+        },
+        "command": {
+          "description": "The admin action; see `Command` for legal values.",
+          "enum": [
+            "UNSPECIFIED",
+            "BOT_UPDATE",
+            "BOT_RESTART",
+            "BOT_TERMINATE",
+            "HOST_RESTART"
+          ],
+          "enumDescriptions": [
+            "Illegal value.",
+            "Download and run a new version of the bot. `arg` will be a resource\naccessible via `ByteStream.Read` to obtain the new bot code.",
+            "Restart the bot without downloading a new version. `arg` will be a\nmessage to log.",
+            "Shut down the bot. `arg` will be a task resource name (similar to those\nin tasks.proto) that the bot can use to tell the server that it is\nterminating.",
+            "Restart the host computer. `arg` will be a message to log."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Blob": {
+      "description": "Describes a blob of binary content with its digest.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Blob",
+      "properties": {
+        "contents": {
+          "description": "The contents of the blob.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The digest of the blob. This should be verified by the receiver."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandOutputs": {
+      "description": "DEPRECATED - use CommandResult instead.\nDescribes the actual outputs from the task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandOutputs",
+      "properties": {
+        "exitCode": {
+          "description": "exit_code is only fully reliable if the status' code is OK. If the task\nexceeded its deadline or was cancelled, the process may still produce an\nexit code as it is cancelled, and this will be populated, but a successful\n(zero) is unlikely to be correct unless the status code is OK.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The output files. The blob referenced by the digest should contain\none of the following (implementation-dependent):\n   * A marshalled DirectoryMetadata of the returned filesystem\n   * A LUCI-style .isolated file"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandOverhead": {
+      "description": "DEPRECATED - use CommandResult instead.\nCan be used as part of CompleteRequest.metadata, or are part of a more\nsophisticated message.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandOverhead",
+      "properties": {
+        "duration": {
+          "description": "The elapsed time between calling Accept and Complete. The server will also\nhave its own idea of what this should be, but this excludes the overhead of\nthe RPCs and the bot response time.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "overhead": {
+          "description": "The amount of time *not* spent executing the command (ie\nuploading/downloading files).",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandResult": {
+      "description": "All information about the execution of a command, suitable for providing as\nthe Bots interface's `Lease.result` field.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandResult",
+      "properties": {
+        "duration": {
+          "description": "The elapsed time between calling Accept and Complete. The server will also\nhave its own idea of what this should be, but this excludes the overhead of\nthe RPCs and the bot response time.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "exitCode": {
+          "description": "The exit code of the process. An exit code of \"0\" should only be trusted if\n`status` has a code of OK (otherwise it may simply be unset).",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The output files. The blob referenced by the digest should contain\none of the following (implementation-dependent):\n   * A marshalled DirectoryMetadata of the returned filesystem\n   * A LUCI-style .isolated file"
+        },
+        "overhead": {
+          "description": "The amount of time *not* spent executing the command (ie\nuploading/downloading files).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "statistics": {
+          "description": "Implementation-dependent statistics about the task. Both servers and bots\nmay define messages which can be encoded here; bots are free to provide\nstatistics in multiple formats, and servers are free to choose one or more\nof the values to process and ignore others. In particular, it is *not*\nconsidered an error for the bot to provide the server with a field that it\ndoesn't know about.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "An overall status for the command. For example, if the command timed out,\nthis might have a code of DEADLINE_EXCEEDED; if it was killed by the OS for\nmemory exhaustion, it might have a code of RESOURCE_EXHAUSTED."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTask": {
+      "description": "Describes a shell-style task to execute, suitable for providing as the Bots\ninterface's `Lease.payload` field.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTask",
+      "properties": {
+        "expectedOutputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs",
+          "description": "The expected outputs from the task."
+        },
+        "inputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs",
+          "description": "The inputs to the task."
+        },
+        "timeouts": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts",
+          "description": "The timeouts of this task."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs": {
+      "description": "Describes the inputs to a shell-style task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs",
+      "properties": {
+        "arguments": {
+          "description": "The command itself to run (e.g., argv).\n\nThis field should be passed directly to the underlying operating system,\nand so it must be sensible to that operating system. For example, on\nWindows, the first argument might be \"C:\\Windows\\System32\\ping.exe\" -\nthat is, using drive letters and backslashes. A command for a *nix\nsystem, on the other hand, would use forward slashes.\n\nAll other fields in the RWAPI must consistently use forward slashes,\nsince those fields may be interpretted by both the service and the bot.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "All environment variables required by the task.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The input filesystem to be set up prior to the task beginning. The\ncontents should be a repeated set of FileMetadata messages though other\nformats are allowed if better for the implementation (eg, a LUCI-style\n.isolated file).\n\nThis field is repeated since implementations might want to cache the\nmetadata, in which case it may be useful to break up portions of the\nfilesystem that change frequently (eg, specific input files) from those\nthat don't (eg, standard header files).",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest"
+          },
+          "type": "array"
+        },
+        "inlineBlobs": {
+          "description": "Inline contents for blobs expected to be needed by the bot to execute the\ntask. For example, contents of entries in `files` or blobs that are\nindirectly referenced by an entry there.\n\nThe bot should check against this list before downloading required task\ninputs to reduce the number of communications between itself and the\nremote CAS server.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2Blob"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable": {
+      "description": "An environment variable required by this task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The envvar name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The envvar value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs": {
+      "description": "Describes the expected outputs of the command.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs",
+      "properties": {
+        "directories": {
+          "description": "A list of expected directories, relative to the execution root. All paths\nMUST be delimited by forward slashes.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "A list of expected files, relative to the execution root. All paths\nMUST be delimited by forward slashes.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "stderrDestination": {
+          "description": "The destination to which any stderr should be sent. The method by which\nthe bot should send the stream contents to that destination is not\ndefined in this API. As examples, the destination could be a file\nreferenced in the `files` field in this message, or it could be a URI\nthat must be written via the ByteStream API.",
+          "type": "string"
+        },
+        "stdoutDestination": {
+          "description": "The destination to which any stdout should be sent. The method by which\nthe bot should send the stream contents to that destination is not\ndefined in this API. As examples, the destination could be a file\nreferenced in the `files` field in this message, or it could be a URI\nthat must be written via the ByteStream API.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts": {
+      "description": "Describes the timeouts associated with this task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts",
+      "properties": {
+        "execution": {
+          "description": "This specifies the maximum time that the task can run, excluding the\ntime required to download inputs or upload outputs. That is, the worker\nwill terminate the task if it runs longer than this.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "idle": {
+          "description": "This specifies the maximum amount of time the task can be idle - that is,\ngo without generating some output in either stdout or stderr. If the\nprocess is silent for more than the specified time, the worker will\nterminate the task.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "shutdown": {
+          "description": "If the execution or IO timeouts are exceeded, the worker will try to\ngracefully terminate the task and return any existing logs. However,\ntasks may be hard-frozen in which case this process will fail. This\ntimeout specifies how long to wait for a terminated task to shut down\ngracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.\nSIGKILL on *nix, CTRL_BREAK_EVENT on Windows).",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Digest": {
+      "description": "The CommandTask and CommandResult messages assume the existence of a service\nthat can serve blobs of content, identified by a hash and size known as a\n\"digest.\" The method by which these blobs may be retrieved is not specified\nhere, but a model implementation is in the Remote Execution API's\n\"ContentAddressibleStorage\" interface.\n\nIn the context of the RWAPI, a Digest will virtually always refer to the\ncontents of a file or a directory. The latter is represented by the\nbyte-encoded Directory message.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Digest",
+      "properties": {
+        "hash": {
+          "description": "A string-encoded hash (eg \"1a2b3c\", not the byte array [0x1a, 0x2b, 0x3c])\nusing an implementation-defined hash algorithm (eg SHA-256).",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the contents. While this is not strictly required as part of an\nidentifier (after all, any given hash will have exactly one canonical\nsize), it's useful in almost all cases when one might want to send or\nretrieve blobs of content and is included here for this reason.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Directory": {
+      "description": "The contents of a directory. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Directory",
+      "properties": {
+        "directories": {
+          "description": "Any subdirectories",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in this directory",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2FileMetadata"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata": {
+      "description": "The metadata for a directory. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "A pointer to the contents of the directory, in the form of a marshalled\nDirectory message."
+        },
+        "path": {
+          "description": "The path of the directory, as in FileMetadata.path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2FileMetadata": {
+      "description": "The metadata for a file. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2FileMetadata",
+      "properties": {
+        "contents": {
+          "description": "If the file is small enough, its contents may also or alternatively be\nlisted here.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "A pointer to the contents of the file. The method by which a client\nretrieves the contents from a CAS system is not defined here."
+        },
+        "isExecutable": {
+          "description": "Properties of the file",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The path of this file. If this message is part of the\nCommandOutputs.outputs fields, the path is relative to the execution root\nand must correspond to an entry in CommandTask.outputs.files. If this\nmessage is part of a Directory message, then the path is relative to the\nroot of that directory. All paths MUST be delimited by forward slashes.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleLongrunningOperation": {
+      "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+      "id": "GoogleLongrunningOperation",
+      "properties": {
+        "done": {
+          "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+          "type": "boolean"
+        },
+        "error": {
+          "$ref": "GoogleRpcStatus",
+          "description": "The error result of the operation in case of failure or cancellation."
+        },
+        "metadata": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+          "type": "object"
+        },
+        "name": {
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "type": "string"
+        },
+        "response": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleRpcStatus": {
+      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "id": "GoogleRpcStatus",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Remote Build Execution API",
+  "version": "v1alpha",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/remotebuildexecution/v1alpha/remotebuildexecution-gen.go b/remotebuildexecution/v1alpha/remotebuildexecution-gen.go
new file mode 100644
index 0000000..c45f3d1
--- /dev/null
+++ b/remotebuildexecution/v1alpha/remotebuildexecution-gen.go
@@ -0,0 +1,5398 @@
+// Copyright 2019 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package remotebuildexecution provides access to the Remote Build Execution API.
+//
+// See https://cloud.google.com/remote-build-execution/docs/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/remotebuildexecution/v1alpha"
+//   ...
+//   remotebuildexecutionService, err := remotebuildexecution.New(oauthHttpClient)
+package remotebuildexecution // import "google.golang.org/api/remotebuildexecution/v1alpha"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "remotebuildexecution:v1alpha"
+const apiName = "remotebuildexecution"
+const apiVersion = "v1alpha"
+const basePath = "https://admin-remotebuildexecution.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"
+)
+
+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.Instances = NewProjectsInstancesService(s)
+	rs.Operations = NewProjectsOperationsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Instances *ProjectsInstancesService
+
+	Operations *ProjectsOperationsService
+}
+
+func NewProjectsInstancesService(s *Service) *ProjectsInstancesService {
+	rs := &ProjectsInstancesService{s: s}
+	rs.Workerpools = NewProjectsInstancesWorkerpoolsService(s)
+	return rs
+}
+
+type ProjectsInstancesService struct {
+	s *Service
+
+	Workerpools *ProjectsInstancesWorkerpoolsService
+}
+
+func NewProjectsInstancesWorkerpoolsService(s *Service) *ProjectsInstancesWorkerpoolsService {
+	rs := &ProjectsInstancesWorkerpoolsService{s: s}
+	return rs
+}
+
+type ProjectsInstancesWorkerpoolsService struct {
+	s *Service
+}
+
+func NewProjectsOperationsService(s *Service) *ProjectsOperationsService {
+	rs := &ProjectsOperationsService{s: s}
+	return rs
+}
+
+type ProjectsOperationsService struct {
+	s *Service
+}
+
+// BuildBazelRemoteExecutionV2Action: An `Action` captures all the
+// information about an execution which is required
+// to reproduce it.
+//
+// `Action`s are the core component of the [Execution] service. A
+// single
+// `Action` represents a repeatable action that can be performed by
+// the
+// execution service. `Action`s can be succinctly identified by the
+// digest of
+// their wire format encoding and, once an `Action` has been executed,
+// will be
+// cached in the action cache. Future requests can then use the cached
+// result
+// rather than needing to run afresh.
+//
+// When a server completes execution of an
+// Action, it MAY choose to
+// cache the result in
+// the ActionCache unless
+// `do_not_cache` is `true`. Clients SHOULD expect the server to do so.
+// By
+// default, future calls to
+// Execute the same
+// `Action` will also serve their results from the cache. Clients must
+// take care
+// to understand the caching behaviour. Ideally, all `Action`s will
+// be
+// reproducible so that serving a result from cache is always desirable
+// and
+// correct.
+type BuildBazelRemoteExecutionV2Action struct {
+	// CommandDigest: The digest of the Command
+	// to run, which MUST be present in the
+	// ContentAddressableStorage.
+	CommandDigest *BuildBazelRemoteExecutionV2Digest `json:"commandDigest,omitempty"`
+
+	// DoNotCache: If true, then the `Action`'s result cannot be cached.
+	DoNotCache bool `json:"doNotCache,omitempty"`
+
+	// InputRootDigest: The digest of the root
+	// Directory for the input
+	// files. The files in the directory tree are available in the
+	// correct
+	// location on the build machine before the command is executed. The
+	// root
+	// directory, as well as every subdirectory and content blob referred
+	// to, MUST
+	// be in the
+	// ContentAddressableStorage.
+	InputRootDigest *BuildBazelRemoteExecutionV2Digest `json:"inputRootDigest,omitempty"`
+
+	// Timeout: A timeout after which the execution should be killed. If the
+	// timeout is
+	// absent, then the client is specifying that the execution should
+	// continue
+	// as long as the server will let it. The server SHOULD impose a timeout
+	// if
+	// the client does not specify one, however, if the client does specify
+	// a
+	// timeout that is longer than the server's maximum timeout, the server
+	// MUST
+	// reject the request.
+	//
+	// The timeout is a part of the
+	// Action message, and
+	// therefore two `Actions` with different timeouts are different, even
+	// if they
+	// are otherwise identical. This is because, if they were not, running
+	// an
+	// `Action` with a lower timeout than is required might result in a
+	// cache hit
+	// from an execution run with a longer timeout, hiding the fact that
+	// the
+	// timeout is too short. By encoding it directly in the `Action`, a
+	// lower
+	// timeout will result in a cache miss and the execution timeout will
+	// fail
+	// immediately, rather than whenever the cache entry gets evicted.
+	Timeout string `json:"timeout,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CommandDigest") 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. "CommandDigest") 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 *BuildBazelRemoteExecutionV2Action) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Action
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ActionResult: An ActionResult represents
+// the result of an
+// Action being run.
+type BuildBazelRemoteExecutionV2ActionResult struct {
+	// ExecutionMetadata: The details of the execution that originally
+	// produced this result.
+	ExecutionMetadata *BuildBazelRemoteExecutionV2ExecutedActionMetadata `json:"executionMetadata,omitempty"`
+
+	// ExitCode: The exit code of the command.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// OutputDirectories: The output directories of the action. For each
+	// output directory requested
+	// in the `output_directories` field of the Action, if the
+	// corresponding
+	// directory existed after the action completed, a single entry will
+	// be
+	// present in the output list, which will contain the digest of a
+	// Tree message containing the
+	// directory tree, and the path equal exactly to the corresponding
+	// Action
+	// output_directories member.
+	//
+	// As an example, suppose the Action had an output directory `a/b/dir`
+	// and the
+	// execution produced the following contents in `a/b/dir`: a file named
+	// `bar`
+	// and a directory named `foo` with an executable file named `baz`.
+	// Then,
+	// output_directory will contain (hashes shortened for
+	// readability):
+	//
+	// ```json
+	// // OutputDirectory proto:
+	// {
+	//   path: "a/b/dir"
+	//   tree_digest: {
+	//     hash: "4a73bc9d03...",
+	//     size: 55
+	//   }
+	// }
+	// // Tree proto with hash "4a73bc9d03..." and size 55:
+	// {
+	//   root: {
+	//     files: [
+	//       {
+	//         name: "bar",
+	//         digest: {
+	//           hash: "4a73bc9d03...",
+	//           size: 65534
+	//         }
+	//       }
+	//     ],
+	//     directories: [
+	//       {
+	//         name: "foo",
+	//         digest: {
+	//           hash: "4cf2eda940...",
+	//           size: 43
+	//         }
+	//       }
+	//     ]
+	//   }
+	//   children : {
+	//     // (Directory proto with hash "4cf2eda940..." and size 43)
+	//     files: [
+	//       {
+	//         name: "baz",
+	//         digest: {
+	//           hash: "b2c941073e...",
+	//           size: 1294,
+	//         },
+	//         is_executable: true
+	//       }
+	//     ]
+	//   }
+	// }
+	// ```
+	OutputDirectories []*BuildBazelRemoteExecutionV2OutputDirectory `json:"outputDirectories,omitempty"`
+
+	// OutputDirectorySymlinks: The output directories of the action that
+	// are symbolic links to other
+	// directories. Those may be links to other output directories, or
+	// input
+	// directories, or even absolute paths outside of the working
+	// directory,
+	// if the server supports
+	// SymlinkAbsolutePathStrategy.ALLOWED.
+	// For each output directory requested in the `output_directories` field
+	// of
+	// the Action, if the directory file existed after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the `output_directories` field, if the directory was not a
+	// symbolic link.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// file where a directory is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputDirectorySymlinks []*BuildBazelRemoteExecutionV2OutputSymlink `json:"outputDirectorySymlinks,omitempty"`
+
+	// OutputFileSymlinks: The output files of the action that are symbolic
+	// links to other files. Those
+	// may be links to other output files, or input files, or even absolute
+	// paths
+	// outside of the working directory, if the server
+	// supports
+	// SymlinkAbsolutePathStrategy.ALLOWED.
+	// For each output file requested in the `output_files` field of the
+	// Action,
+	// if the corresponding file existed after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the `output_files` field, if the file was not a symbolic
+	// link.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFileSymlinks []*BuildBazelRemoteExecutionV2OutputSymlink `json:"outputFileSymlinks,omitempty"`
+
+	// OutputFiles: The output files of the action. For each output file
+	// requested in the
+	// `output_files` field of the Action, if the corresponding file existed
+	// after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the output_file_symlinks field, if the file was a symbolic link
+	// to
+	// another file.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFiles []*BuildBazelRemoteExecutionV2OutputFile `json:"outputFiles,omitempty"`
+
+	// StderrDigest: The digest for a blob containing the standard error of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stderr_raw` for when this will be set.
+	StderrDigest *BuildBazelRemoteExecutionV2Digest `json:"stderrDigest,omitempty"`
+
+	// StderrRaw: The standard error buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stderr_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StderrRaw string `json:"stderrRaw,omitempty"`
+
+	// StdoutDigest: The digest for a blob containing the standard output of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stdout_raw` for when this will be set.
+	StdoutDigest *BuildBazelRemoteExecutionV2Digest `json:"stdoutDigest,omitempty"`
+
+	// StdoutRaw: The standard output buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stdout_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StdoutRaw string `json:"stdoutRaw,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExecutionMetadata")
+	// 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. "ExecutionMetadata") 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 *BuildBazelRemoteExecutionV2ActionResult) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ActionResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Command: A `Command` is the actual command
+// executed by a worker running an
+// Action and specifications of its
+// environment.
+//
+// Except as otherwise required, the environment (such as which
+// system
+// libraries or binaries are available, and what filesystems are mounted
+// where)
+// is defined by and specific to the implementation of the remote
+// execution API.
+type BuildBazelRemoteExecutionV2Command struct {
+	// Arguments: The arguments to the command. The first argument must be
+	// the path to the
+	// executable, which must be either a relative path, in which case it
+	// is
+	// evaluated with respect to the input root, or an absolute path.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: The environment variables to set when running
+	// the program. The worker may
+	// provide its own default environment variables; these defaults can
+	// be
+	// overridden using this field. Additional variables can also be
+	// specified.
+	//
+	// In order to ensure that equivalent `Command`s always hash to the
+	// same
+	// value, the environment variables MUST be lexicographically sorted by
+	// name.
+	// Sorting of strings is done by code point, equivalently, by the UTF-8
+	// bytes.
+	EnvironmentVariables []*BuildBazelRemoteExecutionV2CommandEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// OutputDirectories: A list of the output directories that the client
+	// expects to retrieve from
+	// the action. Only the contents of the indicated directories
+	// (recursively
+	// including the contents of their subdirectories) will be
+	// returned, as well as files listed in `output_files`. Other files that
+	// may
+	// be created during command execution are discarded.
+	//
+	// The paths are relative to the working directory of the action
+	// execution.
+	// The paths are specified using a single forward slash (`/`) as a
+	// path
+	// separator, even if the execution platform natively uses a
+	// different
+	// separator. The path MUST NOT include a trailing slash, nor a leading
+	// slash,
+	// being a relative path. The special value of empty string is
+	// allowed,
+	// although not recommended, and can be used to capture the entire
+	// working
+	// directory tree, including inputs.
+	//
+	// In order to ensure consistent hashing of the same Action, the output
+	// paths
+	// MUST be sorted lexicographically by code point (or, equivalently, by
+	// UTF-8
+	// bytes).
+	//
+	// An output directory cannot be duplicated, be a parent of another
+	// output
+	// directory, be a parent of a listed output file, or have the same path
+	// as
+	// any of the listed output files.
+	OutputDirectories []string `json:"outputDirectories,omitempty"`
+
+	// OutputFiles: A list of the output files that the client expects to
+	// retrieve from the
+	// action. Only the listed files, as well as directories listed
+	// in
+	// `output_directories`, will be returned to the client as output.
+	// Other files that may be created during command execution are
+	// discarded.
+	//
+	// The paths are relative to the working directory of the action
+	// execution.
+	// The paths are specified using a single forward slash (`/`) as a
+	// path
+	// separator, even if the execution platform natively uses a
+	// different
+	// separator. The path MUST NOT include a trailing slash, nor a leading
+	// slash,
+	// being a relative path.
+	//
+	// In order to ensure consistent hashing of the same Action, the output
+	// paths
+	// MUST be sorted lexicographically by code point (or, equivalently, by
+	// UTF-8
+	// bytes).
+	//
+	// An output file cannot be duplicated, be a parent of another output
+	// file, be
+	// a child of a listed output directory, or have the same path as any of
+	// the
+	// listed output directories.
+	OutputFiles []string `json:"outputFiles,omitempty"`
+
+	// Platform: The platform requirements for the execution environment.
+	// The server MAY
+	// choose to execute the action on any worker satisfying the
+	// requirements, so
+	// the client SHOULD ensure that running the action on any such worker
+	// will
+	// have the same result.
+	Platform *BuildBazelRemoteExecutionV2Platform `json:"platform,omitempty"`
+
+	// WorkingDirectory: The working directory, relative to the input root,
+	// for the command to run
+	// in. It must be a directory which exists in the input tree. If it is
+	// left
+	// empty, then the action is run in the input root.
+	WorkingDirectory string `json:"workingDirectory,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *BuildBazelRemoteExecutionV2Command) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Command
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2CommandEnvironmentVariable: An
+// `EnvironmentVariable` is one variable to set in the running
+// program's
+// environment.
+type BuildBazelRemoteExecutionV2CommandEnvironmentVariable struct {
+	// Name: The variable name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The variable 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 *BuildBazelRemoteExecutionV2CommandEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2CommandEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Digest: A content digest. A digest for a
+// given blob consists of the size of the blob
+// and its hash. The hash algorithm to use is defined by the server, but
+// servers
+// SHOULD use SHA-256.
+//
+// The size is considered to be an integral part of the digest and
+// cannot be
+// separated. That is, even if the `hash` field is correctly specified
+// but
+// `size_bytes` is not, the server MUST reject the request.
+//
+// The reason for including the size in the digest is as follows: in a
+// great
+// many cases, the server needs to know the size of the blob it is about
+// to work
+// with prior to starting an operation with it, such as flattening
+// Merkle tree
+// structures or streaming it to a worker. Technically, the server
+// could
+// implement a separate metadata store, but this results in a
+// significantly more
+// complicated implementation as opposed to having the client specify
+// the size
+// up-front (or storing the size along with the digest in every message
+// where
+// digests are embedded). This does mean that the API leaks some
+// implementation
+// details of (what we consider to be) a reasonable server
+// implementation, but
+// we consider this to be a worthwhile tradeoff.
+//
+// When a `Digest` is used to refer to a proto message, it always refers
+// to the
+// message in binary encoded form. To ensure consistent hashing, clients
+// and
+// servers MUST ensure that they serialize messages according to the
+// following
+// rules, even if there are alternate valid encodings for the same
+// message.
+// - Fields are serialized in tag order.
+// - There are no unknown fields.
+// - There are no duplicate fields.
+// - Fields are serialized according to the default semantics for their
+// type.
+//
+// Most protocol buffer implementations will always follow these rules
+// when
+// serializing, but care should be taken to avoid shortcuts. For
+// instance,
+// concatenating two messages to merge them may produce duplicate
+// fields.
+type BuildBazelRemoteExecutionV2Digest struct {
+	// Hash: The hash. In the case of SHA-256, it will always be a lowercase
+	// hex string
+	// exactly 64 characters long.
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the blob, in bytes.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *BuildBazelRemoteExecutionV2Digest) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Digest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Directory: A `Directory` represents a
+// directory node in a file tree, containing zero or
+// more children FileNodes,
+// DirectoryNodes and
+// SymlinkNodes.
+// Each `Node` contains its name in the directory, either the digest of
+// its
+// content (either a file blob or a `Directory` proto) or a symlink
+// target, as
+// well as possibly some metadata about the file or directory.
+//
+// In order to ensure that two equivalent directory trees hash to the
+// same
+// value, the following restrictions MUST be obeyed when constructing
+// a
+// a `Directory`:
+//   - Every child in the directory must have a path of exactly one
+// segment.
+//     Multiple levels of directory hierarchy may not be collapsed.
+//   - Each child in the directory must have a unique path segment (file
+// name).
+//   - The files, directories and symlinks in the directory must each be
+// sorted
+//     in lexicographical order by path. The path strings must be sorted
+// by code
+//     point, equivalently, by UTF-8 bytes.
+//
+// A `Directory` that obeys the restrictions is said to be in canonical
+// form.
+//
+// As an example, the following could be used for a file named `bar` and
+// a
+// directory named `foo` with an executable file named `baz` (hashes
+// shortened
+// for readability):
+//
+// ```json
+// // (Directory proto)
+// {
+//   files: [
+//     {
+//       name: "bar",
+//       digest: {
+//         hash: "4a73bc9d03...",
+//         size: 65534
+//       }
+//     }
+//   ],
+//   directories: [
+//     {
+//       name: "foo",
+//       digest: {
+//         hash: "4cf2eda940...",
+//         size: 43
+//       }
+//     }
+//   ]
+// }
+//
+// // (Directory proto with hash "4cf2eda940..." and size 43)
+// {
+//   files: [
+//     {
+//       name: "baz",
+//       digest: {
+//         hash: "b2c941073e...",
+//         size: 1294,
+//       },
+//       is_executable: true
+//     }
+//   ]
+// }
+// ```
+type BuildBazelRemoteExecutionV2Directory struct {
+	// Directories: The subdirectories in the directory.
+	Directories []*BuildBazelRemoteExecutionV2DirectoryNode `json:"directories,omitempty"`
+
+	// Files: The files in the directory.
+	Files []*BuildBazelRemoteExecutionV2FileNode `json:"files,omitempty"`
+
+	// Symlinks: The symlinks in the directory.
+	Symlinks []*BuildBazelRemoteExecutionV2SymlinkNode `json:"symlinks,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *BuildBazelRemoteExecutionV2Directory) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Directory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2DirectoryNode: A `DirectoryNode`
+// represents a child of a
+// Directory which is itself
+// a `Directory` and its associated metadata.
+type BuildBazelRemoteExecutionV2DirectoryNode struct {
+	// Digest: The digest of the
+	// Directory object
+	// represented. See Digest
+	// for information about how to take the digest of a proto message.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// Name: The name of the directory.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2DirectoryNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2DirectoryNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecuteOperationMetadata: Metadata about
+// an ongoing
+// execution, which
+// will be contained in the metadata
+// field of the
+// Operation.
+type BuildBazelRemoteExecutionV2ExecuteOperationMetadata struct {
+	// ActionDigest: The digest of the Action
+	// being executed.
+	ActionDigest *BuildBazelRemoteExecutionV2Digest `json:"actionDigest,omitempty"`
+
+	// Possible values:
+	//   "UNKNOWN"
+	//   "CACHE_CHECK" - Checking the result against the cache.
+	//   "QUEUED" - Currently idle, awaiting a free machine to execute.
+	//   "EXECUTING" - Currently being executed by a worker.
+	//   "COMPLETED" - Finished execution.
+	Stage string `json:"stage,omitempty"`
+
+	// StderrStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard error.
+	StderrStreamName string `json:"stderrStreamName,omitempty"`
+
+	// StdoutStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard output.
+	StdoutStreamName string `json:"stdoutStreamName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionDigest") 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. "ActionDigest") 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 *BuildBazelRemoteExecutionV2ExecuteOperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecuteOperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecuteResponse: The response message
+// for
+// Execution.Execute,
+// which will be contained in the response
+// field of the
+// Operation.
+type BuildBazelRemoteExecutionV2ExecuteResponse struct {
+	// CachedResult: True if the result was served from cache, false if it
+	// was executed.
+	CachedResult bool `json:"cachedResult,omitempty"`
+
+	// Result: The result of the action.
+	Result *BuildBazelRemoteExecutionV2ActionResult `json:"result,omitempty"`
+
+	// ServerLogs: An optional list of additional log outputs the server
+	// wishes to provide. A
+	// server can use this to return execution-specific logs however it
+	// wishes.
+	// This is intended primarily to make it easier for users to debug
+	// issues that
+	// may be outside of the actual job execution, such as by identifying
+	// the
+	// worker executing the action or by providing logs from the worker's
+	// setup
+	// phase. The keys SHOULD be human readable so that a client can display
+	// them
+	// to a user.
+	ServerLogs map[string]BuildBazelRemoteExecutionV2LogFile `json:"serverLogs,omitempty"`
+
+	// Status: If the status has a code other than `OK`, it indicates that
+	// the action did
+	// not finish execution. For example, if the operation times out
+	// during
+	// execution, the status will have a `DEADLINE_EXCEEDED` code. Servers
+	// MUST
+	// use this field for errors in execution, rather than the error field
+	// on the
+	// `Operation` object.
+	//
+	// If the status code is other than `OK`, then the result MUST NOT be
+	// cached.
+	// For an error status, the `result` field is optional; the server
+	// may
+	// populate the output-, stdout-, and stderr-related fields if it has
+	// any
+	// information available, such as the stdout and stderr of a timed-out
+	// action.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CachedResult") 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. "CachedResult") 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 *BuildBazelRemoteExecutionV2ExecuteResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecuteResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecutedActionMetadata:
+// ExecutedActionMetadata contains details about a completed execution.
+type BuildBazelRemoteExecutionV2ExecutedActionMetadata struct {
+	// ExecutionCompletedTimestamp: When the worker completed executing the
+	// action command.
+	ExecutionCompletedTimestamp string `json:"executionCompletedTimestamp,omitempty"`
+
+	// ExecutionStartTimestamp: When the worker started executing the action
+	// command.
+	ExecutionStartTimestamp string `json:"executionStartTimestamp,omitempty"`
+
+	// InputFetchCompletedTimestamp: When the worker finished fetching
+	// action inputs.
+	InputFetchCompletedTimestamp string `json:"inputFetchCompletedTimestamp,omitempty"`
+
+	// InputFetchStartTimestamp: When the worker started fetching action
+	// inputs.
+	InputFetchStartTimestamp string `json:"inputFetchStartTimestamp,omitempty"`
+
+	// OutputUploadCompletedTimestamp: When the worker finished uploading
+	// action outputs.
+	OutputUploadCompletedTimestamp string `json:"outputUploadCompletedTimestamp,omitempty"`
+
+	// OutputUploadStartTimestamp: When the worker started uploading action
+	// outputs.
+	OutputUploadStartTimestamp string `json:"outputUploadStartTimestamp,omitempty"`
+
+	// QueuedTimestamp: When was the action added to the queue.
+	QueuedTimestamp string `json:"queuedTimestamp,omitempty"`
+
+	// Worker: The name of the worker which ran the execution.
+	Worker string `json:"worker,omitempty"`
+
+	// WorkerCompletedTimestamp: When the worker completed the action,
+	// including all stages.
+	WorkerCompletedTimestamp string `json:"workerCompletedTimestamp,omitempty"`
+
+	// WorkerStartTimestamp: When the worker received the action.
+	WorkerStartTimestamp string `json:"workerStartTimestamp,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ExecutionCompletedTimestamp") 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.
+	// "ExecutionCompletedTimestamp") 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 *BuildBazelRemoteExecutionV2ExecutedActionMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecutedActionMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2FileNode: A `FileNode` represents a single
+// file and associated metadata.
+type BuildBazelRemoteExecutionV2FileNode struct {
+	// Digest: The digest of the file's content.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Name: The name of the file.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2FileNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2FileNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2LogFile: A `LogFile` is a log stored in
+// the CAS.
+type BuildBazelRemoteExecutionV2LogFile struct {
+	// Digest: The digest of the log contents.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// HumanReadable: This is a hint as to the purpose of the log, and is
+	// set to true if the log
+	// is human-readable text that can be usefully displayed to a user, and
+	// false
+	// otherwise. For instance, if a command-line client wishes to print
+	// the
+	// server logs to the terminal for a failed action, this allows it to
+	// avoid
+	// displaying a binary file.
+	HumanReadable bool `json:"humanReadable,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2LogFile) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2LogFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputDirectory: An `OutputDirectory` is
+// the output in an `ActionResult` corresponding to a
+// directory's full contents rather than a single file.
+type BuildBazelRemoteExecutionV2OutputDirectory struct {
+	// Path: The full path of the directory relative to the working
+	// directory. The path
+	// separator is a forward slash `/`. Since this is a relative path, it
+	// MUST
+	// NOT begin with a leading forward slash. The empty string value is
+	// allowed,
+	// and it denotes the entire working directory.
+	Path string `json:"path,omitempty"`
+
+	// TreeDigest: The digest of the encoded
+	// Tree proto containing the
+	// directory's contents.
+	TreeDigest *BuildBazelRemoteExecutionV2Digest `json:"treeDigest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Path") 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. "Path") 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 *BuildBazelRemoteExecutionV2OutputDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputFile: An `OutputFile` is similar to
+// a
+// FileNode, but it is used as an
+// output in an `ActionResult`. It allows a full file path rather
+// than
+// only a name.
+//
+// `OutputFile` is binary-compatible with `FileNode`.
+type BuildBazelRemoteExecutionV2OutputFile struct {
+	// Digest: The digest of the file's content.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The full path of the file relative to the working directory,
+	// including the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2OutputFile) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputSymlink: An `OutputSymlink` is
+// similar to a
+// Symlink, but it is used as an
+// output in an `ActionResult`.
+//
+// `OutputSymlink` is binary-compatible with `SymlinkNode`.
+type BuildBazelRemoteExecutionV2OutputSymlink struct {
+	// Path: The full path of the symlink relative to the working directory,
+	// including the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// Target: The target path of the symlink. The path separator is a
+	// forward slash `/`.
+	// The target path can be relative to the parent directory of the
+	// symlink or
+	// it can be an absolute path starting with `/`. Support for absolute
+	// paths
+	// can be checked using the Capabilities
+	// API. The canonical form forbids the substrings `/./` and `//` in the
+	// target
+	// path. `..` components are allowed anywhere in the target path.
+	Target string `json:"target,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Path") 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. "Path") 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 *BuildBazelRemoteExecutionV2OutputSymlink) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputSymlink
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Platform: A `Platform` is a set of
+// requirements, such as hardware, operating system, or
+// compiler toolchain, for an
+// Action's execution
+// environment. A `Platform` is represented as a series of key-value
+// pairs
+// representing the properties that are required of the platform.
+type BuildBazelRemoteExecutionV2Platform struct {
+	// Properties: The properties that make up this platform. In order to
+	// ensure that
+	// equivalent `Platform`s always hash to the same value, the properties
+	// MUST
+	// be lexicographically sorted by name, and then by value. Sorting of
+	// strings
+	// is done by code point, equivalently, by the UTF-8 bytes.
+	Properties []*BuildBazelRemoteExecutionV2PlatformProperty `json:"properties,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Properties") 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. "Properties") 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 *BuildBazelRemoteExecutionV2Platform) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Platform
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2PlatformProperty: A single property for
+// the environment. The server is responsible for
+// specifying the property `name`s that it accepts. If an unknown `name`
+// is
+// provided in the requirements for an
+// Action, the server SHOULD
+// reject the execution request. If permitted by the server, the same
+// `name`
+// may occur multiple times.
+//
+// The server is also responsible for specifying the interpretation
+// of
+// property `value`s. For instance, a property describing how much RAM
+// must be
+// available may be interpreted as allowing a worker with 16GB to
+// fulfill a
+// request for 8GB, while a property describing the OS environment on
+// which
+// the action must be performed may require an exact match with the
+// worker's
+// OS.
+//
+// The server MAY use the `value` of one or more properties to determine
+// how
+// it sets up the execution environment, such as by making specific
+// system
+// files available to the worker.
+type BuildBazelRemoteExecutionV2PlatformProperty struct {
+	// Name: The property name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The property 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 *BuildBazelRemoteExecutionV2PlatformProperty) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2PlatformProperty
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2RequestMetadata: An optional Metadata to
+// attach to any RPC request to tell the server about an
+// external context of the request. The server may use this for logging
+// or other
+// purposes. To use it, the client attaches the header to the call using
+// the
+// canonical proto serialization:
+// name: build.bazel.remote.execution.v2.requestmetadata-bin
+// contents: the base64 encoded binary RequestMetadata message.
+type BuildBazelRemoteExecutionV2RequestMetadata struct {
+	// ActionId: An identifier that ties multiple requests to the same
+	// action.
+	// For example, multiple requests to the CAS, Action Cache, and
+	// Execution
+	// API are used in order to compile foo.cc.
+	ActionId string `json:"actionId,omitempty"`
+
+	// CorrelatedInvocationsId: An identifier to tie multiple tool
+	// invocations together. For example,
+	// runs of foo_test, bar_test and baz_test on a post-submit of a given
+	// patch.
+	CorrelatedInvocationsId string `json:"correlatedInvocationsId,omitempty"`
+
+	// ToolDetails: The details for the tool invoking the requests.
+	ToolDetails *BuildBazelRemoteExecutionV2ToolDetails `json:"toolDetails,omitempty"`
+
+	// ToolInvocationId: An identifier that ties multiple actions together
+	// to a final result.
+	// For example, multiple actions are required to build and run foo_test.
+	ToolInvocationId string `json:"toolInvocationId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionId") 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. "ActionId") 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 *BuildBazelRemoteExecutionV2RequestMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2RequestMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2SymlinkNode: A `SymlinkNode` represents a
+// symbolic link.
+type BuildBazelRemoteExecutionV2SymlinkNode struct {
+	// Name: The name of the symlink.
+	Name string `json:"name,omitempty"`
+
+	// Target: The target path of the symlink. The path separator is a
+	// forward slash `/`.
+	// The target path can be relative to the parent directory of the
+	// symlink or
+	// it can be an absolute path starting with `/`. Support for absolute
+	// paths
+	// can be checked using the Capabilities
+	// API. The canonical form forbids the substrings `/./` and `//` in the
+	// target
+	// path. `..` components are allowed anywhere in the target path.
+	Target string `json:"target,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 *BuildBazelRemoteExecutionV2SymlinkNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2SymlinkNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ToolDetails: Details for the tool used to
+// call the API.
+type BuildBazelRemoteExecutionV2ToolDetails struct {
+	// ToolName: Name of the tool, e.g. bazel.
+	ToolName string `json:"toolName,omitempty"`
+
+	// ToolVersion: Version of the tool used for the request, e.g. 5.0.3.
+	ToolVersion string `json:"toolVersion,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ToolName") 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. "ToolName") 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 *BuildBazelRemoteExecutionV2ToolDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ToolDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Tree: A `Tree` contains all the
+// Directory protos in a
+// single directory Merkle tree, compressed into one message.
+type BuildBazelRemoteExecutionV2Tree struct {
+	// Children: All the child directories: the directories referred to by
+	// the root and,
+	// recursively, all its children. In order to reconstruct the directory
+	// tree,
+	// the client must take the digests of each of the child directories and
+	// then
+	// build up a tree starting from the `root`.
+	Children []*BuildBazelRemoteExecutionV2Directory `json:"children,omitempty"`
+
+	// Root: The root directory in the tree.
+	Root *BuildBazelRemoteExecutionV2Directory `json:"root,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Children") 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. "Children") 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 *BuildBazelRemoteExecutionV2Tree) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Tree
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildbotCommandDurations: CommandDuration
+// contains the various duration metrics tracked when a bot
+// performs a command.
+type GoogleDevtoolsRemotebuildbotCommandDurations struct {
+	// DockerPrep: The time spent preparing the command to be run in a
+	// Docker container
+	// (includes pulling the Docker image, if necessary).
+	DockerPrep string `json:"dockerPrep,omitempty"`
+
+	// Download: The time spent downloading the input files and constructing
+	// the working
+	// directory.
+	Download string `json:"download,omitempty"`
+
+	// Execution: The time spent executing the command (i.e., doing useful
+	// work).
+	Execution string `json:"execution,omitempty"`
+
+	// IsoPrepDone: The timestamp when preparation is done and bot starts
+	// downloading files.
+	IsoPrepDone string `json:"isoPrepDone,omitempty"`
+
+	// Overall: The time spent completing the command, in total.
+	Overall string `json:"overall,omitempty"`
+
+	// Stdout: The time spent uploading the stdout logs.
+	Stdout string `json:"stdout,omitempty"`
+
+	// Upload: The time spent uploading the output files.
+	Upload string `json:"upload,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DockerPrep") 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. "DockerPrep") 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 *GoogleDevtoolsRemotebuildbotCommandDurations) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildbotCommandDurations
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildbotCommandEvents: CommandEvents contains
+// counters for the number of warnings and errors
+// that occurred during the execution of a command.
+type GoogleDevtoolsRemotebuildbotCommandEvents struct {
+	// DockerCacheHit: Indicates whether we are using a cached Docker image
+	// (true) or had to pull
+	// the Docker image (false) for this command.
+	DockerCacheHit bool `json:"dockerCacheHit,omitempty"`
+
+	// NumErrors: The number of errors reported.
+	NumErrors uint64 `json:"numErrors,omitempty,string"`
+
+	// NumWarnings: The number of warnings reported.
+	NumWarnings uint64 `json:"numWarnings,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "DockerCacheHit") 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. "DockerCacheHit") 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 *GoogleDevtoolsRemotebuildbotCommandEvents) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildbotCommandEvents
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest:
+// The request used for `CreateInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest struct {
+	// Instance: Specifies the instance to create.
+	// The name in the instance, if specified in the instance, is ignored.
+	Instance *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance `json:"instance,omitempty"`
+
+	// InstanceId: ID of the created instance.
+	// A valid `instance_id` must:
+	// be 6-50 characters long,
+	// contains only lowercase letters, digits, hyphens and
+	// underscores,
+	// start with a lowercase letter, and
+	// end with a lowercase letter or a digit.
+	InstanceId string `json:"instanceId,omitempty"`
+
+	// Parent: Resource name of the project containing the instance.
+	// Format: `projects/[PROJECT_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Instance") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Instance") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest:
+//  The request used for `CreateWorkerPool`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest struct {
+	// Parent: Resource name of the instance in which to create the new
+	// worker pool.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// PoolId: ID of the created worker pool.
+	// A valid pool ID must:
+	// be 6-50 characters long,
+	// contain only lowercase letters, digits, hyphens and
+	// underscores,
+	// start with a lowercase letter, and
+	// end with a lowercase letter or a digit.
+	PoolId string `json:"poolId,omitempty"`
+
+	// WorkerPool: Specifies the worker pool to create.
+	// The name in the worker pool, if specified, is ignored.
+	WorkerPool *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPool,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest:
+// The request used for `DeleteInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest struct {
+	// Name: Name of the instance to delete.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest:
+//  The request used for DeleteWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest struct {
+	// Name: Name of the worker pool to
+	// delete.
+	// Format:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerp
+	// ools/[POOL_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest: The
+// request used for `GetInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest struct {
+	// Name: Name of the instance to retrieve.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest:
+// The request used for GetWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest struct {
+	// Name: Name of the worker pool to
+	// retrieve.
+	// Format:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/worke
+	// rpools/[POOL_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance: Instance
+// conceptually encapsulates all Remote Build Execution resources
+// for remote builds.
+// An instance consists of storage and compute resources (for
+// example,
+// `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used
+// for
+// running remote builds.
+// All Remote Build Execution API calls are scoped to an instance.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance struct {
+	// Location: The location is a GCP region. Currently only `us-central1`
+	// is supported.
+	Location string `json:"location,omitempty"`
+
+	// Name: Output only. Instance resource name formatted
+	// as:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	// Name should not be populated when creating an instance since it is
+	// provided
+	// in the `instance_id` field.
+	Name string `json:"name,omitempty"`
+
+	// State: Output only. State of the instance.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Not a valid state, but the default value of
+	// the enum.
+	//   "CREATING" - The instance is in state `CREATING` once
+	// `CreateInstance` is called and
+	// before the instance is ready for use.
+	//   "RUNNING" - The instance is in state `RUNNING` when it is ready for
+	// use.
+	//   "INACTIVE" - An `INACTIVE` instance indicates that there is a
+	// problem that needs to be
+	// fixed. Such instances cannot be used for execution and instances
+	// that
+	// remain in this state for a significant period of time will be
+	// removed
+	// permanently.
+	State string `json:"state,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Location") 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. "Location") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest struct {
+	// Parent: Resource name of the project.
+	// Format: `projects/[PROJECT_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse struct {
+	// Instances: The list of instances in a given project.
+	Instances []*GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance `json:"instances,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Instances") 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. "Instances") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest struct {
+	// Parent: Resource name of the instance.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse struct {
+	// WorkerPools: The list of worker pools in a given instance.
+	WorkerPools []*GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPools,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "WorkerPools") 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. "WorkerPools") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest:
+//  The request used for UpdateWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest struct {
+	// UpdateMask: The update mask applies to worker_pool. For the
+	// `FieldMask` definition,
+	// see
+	// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+	// If an empty update_mask is provided, only the non-default valued
+	// field in
+	// the worker pool field will be updated. Note that in order to update a
+	// field
+	// to the default value (zero, false, empty string) an explicit
+	// update_mask
+	// must be provided.
+	UpdateMask string `json:"updateMask,omitempty"`
+
+	// WorkerPool: Specifies the worker pool to update.
+	WorkerPool *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPool,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "UpdateMask") 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. "UpdateMask") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig: Defines
+// the configuration to be used for a creating workers in
+// the worker pool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig struct {
+	// DiskSizeGb: Required. Size of the disk attached to the worker, in
+	// GB.
+	// See https://cloud.google.com/compute/docs/disks/
+	DiskSizeGb int64 `json:"diskSizeGb,omitempty,string"`
+
+	// DiskType: Required. Disk Type to use for the worker.
+	// See [Storage
+	// options](https://cloud.google.com/compute/docs/disks/#introduction).
+	// C
+	// urrently only `pd-standard` is supported.
+	DiskType string `json:"diskType,omitempty"`
+
+	// MachineType: Required. Machine type of the worker, such as
+	// n1-standard-2.
+	// See https://cloud.google.com/compute/docs/machine-types for a list
+	// of
+	// supported machine types.
+	MachineType string `json:"machineType,omitempty"`
+
+	// MinCpuPlatform: Minimum CPU platform to use when creating the
+	// worker.
+	// See [CPU
+	// Platforms](https://cloud.google.com/compute/docs/cpu-platforms).
+	MinCpuPlatform string `json:"minCpuPlatform,omitempty"`
+
+	// Reserved: Output only. `reserved=true` means the worker is reserved
+	// and won't be
+	// preempted.
+	Reserved bool `json:"reserved,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DiskSizeGb") 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. "DiskSizeGb") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool: A worker
+// pool resource in the Remote Build Execution API.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool struct {
+	// Name: WorkerPool resource name formatted
+	// as:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_I
+	// D]`.
+	// name should not be populated when creating a worker pool since it
+	// is
+	// provided in the `poolId` field.
+	Name string `json:"name,omitempty"`
+
+	// State: Output only. State of the worker pool.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Not a valid state, but the default value of
+	// the enum.
+	//   "CREATING" - The worker pool is in state `CREATING` once
+	// `CreateWorkerPool` is called
+	// and before all requested workers are ready.
+	//   "RUNNING" - The worker pool is in state `RUNNING` when all its
+	// workers are ready for
+	// use.
+	//   "UPDATING" - The worker pool is in state `UPDATING` once
+	// `UpdateWorkerPool` is called
+	// and before the new configuration has all the requested workers ready
+	// for
+	// use, and no older configuration has any workers. At that point the
+	// state
+	// transitions to `RUNNING`.
+	//   "DELETING" - The worker pool is in state `DELETING` once the
+	// `Delete` method is called
+	// and before the deletion completes.
+	//   "INACTIVE" - The worker pool is in state `INACTIVE` when the
+	// instance hosting the
+	// worker pool in not running.
+	State string `json:"state,omitempty"`
+
+	// WorkerConfig: Specifies the properties, such as machine type and disk
+	// size, used for
+	// creating workers in a worker pool.
+	WorkerConfig *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig `json:"workerConfig,omitempty"`
+
+	// WorkerCount: The desired number of workers in the worker pool. Must
+	// be a value between
+	// 0 and 1000.
+	WorkerCount int64 `json:"workerCount,omitempty,string"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testActionResult: An ActionResult
+// represents the result of an
+// Action being run.
+type GoogleDevtoolsRemoteexecutionV1testActionResult struct {
+	// ExitCode: The exit code of the command.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// OutputDirectories: The output directories of the action. For each
+	// output directory requested
+	// in the `output_directories` field of the Action, if the
+	// corresponding
+	// directory existed after the action completed, a single entry will
+	// be
+	// present in the output list, which will contain the digest of
+	// a Tree message containing
+	// the directory tree, and the path equal exactly to the corresponding
+	// Action
+	// output_directories member.
+	// As an example, suppose the Action had an output directory `a/b/dir`
+	// and the
+	// execution produced the following contents in `a/b/dir`: a file named
+	// `bar`
+	// and a directory named `foo` with an executable file named `baz`.
+	// Then,
+	// output_directory will contain (hashes shortened for
+	// readability):
+	//
+	// ```json
+	// // OutputDirectory proto:
+	// {
+	//   path: "a/b/dir"
+	//   tree_digest: {
+	//     hash: "4a73bc9d03...",
+	//     size: 55
+	//   }
+	// }
+	// // Tree proto with hash "4a73bc9d03..." and size 55:
+	// {
+	//   root: {
+	//     files: [
+	//       {
+	//         name: "bar",
+	//         digest: {
+	//           hash: "4a73bc9d03...",
+	//           size: 65534
+	//         }
+	//       }
+	//     ],
+	//     directories: [
+	//       {
+	//         name: "foo",
+	//         digest: {
+	//           hash: "4cf2eda940...",
+	//           size: 43
+	//         }
+	//       }
+	//     ]
+	//   }
+	//   children : {
+	//     // (Directory proto with hash "4cf2eda940..." and size 43)
+	//     files: [
+	//       {
+	//         name: "baz",
+	//         digest: {
+	//           hash: "b2c941073e...",
+	//           size: 1294,
+	//         },
+	//         is_executable: true
+	//       }
+	//     ]
+	//   }
+	// }
+	// ```
+	OutputDirectories []*GoogleDevtoolsRemoteexecutionV1testOutputDirectory `json:"outputDirectories,omitempty"`
+
+	// OutputFiles: The output files of the action. For each output file
+	// requested in the
+	// `output_files` field of the Action, if the corresponding file existed
+	// after
+	// the action completed, a single entry will be present in the output
+	// list.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFiles []*GoogleDevtoolsRemoteexecutionV1testOutputFile `json:"outputFiles,omitempty"`
+
+	// StderrDigest: The digest for a blob containing the standard error of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stderr_raw` for when this will be set.
+	StderrDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"stderrDigest,omitempty"`
+
+	// StderrRaw: The standard error buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stderr_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StderrRaw string `json:"stderrRaw,omitempty"`
+
+	// StdoutDigest: The digest for a blob containing the standard output of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stdout_raw` for when this will be set.
+	StdoutDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"stdoutDigest,omitempty"`
+
+	// StdoutRaw: The standard output buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stdout_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StdoutRaw string `json:"stdoutRaw,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExitCode") 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. "ExitCode") 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 *GoogleDevtoolsRemoteexecutionV1testActionResult) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testActionResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testCommand: A `Command` is the actual
+// command executed by a worker running an
+// Action.
+//
+// Except as otherwise required, the environment (such as which
+// system
+// libraries or binaries are available, and what filesystems are mounted
+// where)
+// is defined by and specific to the implementation of the remote
+// execution API.
+type GoogleDevtoolsRemoteexecutionV1testCommand struct {
+	// Arguments: The arguments to the command. The first argument must be
+	// the path to the
+	// executable, which must be either a relative path, in which case it
+	// is
+	// evaluated with respect to the input root, or an absolute path.
+	//
+	// The working directory will always be the input root.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: The environment variables to set when running
+	// the program. The worker may
+	// provide its own default environment variables; these defaults can
+	// be
+	// overridden using this field. Additional variables can also be
+	// specified.
+	//
+	// In order to ensure that equivalent `Command`s always hash to the
+	// same
+	// value, the environment variables MUST be lexicographically sorted by
+	// name.
+	// Sorting of strings is done by code point, equivalently, by the UTF-8
+	// bytes.
+	EnvironmentVariables []*GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *GoogleDevtoolsRemoteexecutionV1testCommand) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testCommand
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable: An
+// `EnvironmentVariable` is one variable to set in the running
+// program's
+// environment.
+type GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable struct {
+	// Name: The variable name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The variable 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 *GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDigest: A content digest. A digest
+// for a given blob consists of the size of the blob
+// and its hash. The hash algorithm to use is defined by the server, but
+// servers
+// SHOULD use SHA-256.
+//
+// The size is considered to be an integral part of the digest and
+// cannot be
+// separated. That is, even if the `hash` field is correctly specified
+// but
+// `size_bytes` is not, the server MUST reject the request.
+//
+// The reason for including the size in the digest is as follows: in a
+// great
+// many cases, the server needs to know the size of the blob it is about
+// to work
+// with prior to starting an operation with it, such as flattening
+// Merkle tree
+// structures or streaming it to a worker. Technically, the server
+// could
+// implement a separate metadata store, but this results in a
+// significantly more
+// complicated implementation as opposed to having the client specify
+// the size
+// up-front (or storing the size along with the digest in every message
+// where
+// digests are embedded). This does mean that the API leaks some
+// implementation
+// details of (what we consider to be) a reasonable server
+// implementation, but
+// we consider this to be a worthwhile tradeoff.
+//
+// When a `Digest` is used to refer to a proto message, it always refers
+// to the
+// message in binary encoded form. To ensure consistent hashing, clients
+// and
+// servers MUST ensure that they serialize messages according to the
+// following
+// rules, even if there are alternate valid encodings for the same
+// message.
+// - Fields are serialized in tag order.
+// - There are no unknown fields.
+// - There are no duplicate fields.
+// - Fields are serialized according to the default semantics for their
+// type.
+//
+// Most protocol buffer implementations will always follow these rules
+// when
+// serializing, but care should be taken to avoid shortcuts. For
+// instance,
+// concatenating two messages to merge them may produce duplicate
+// fields.
+type GoogleDevtoolsRemoteexecutionV1testDigest struct {
+	// Hash: The hash. In the case of SHA-256, it will always be a lowercase
+	// hex string
+	// exactly 64 characters long.
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the blob, in bytes.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *GoogleDevtoolsRemoteexecutionV1testDigest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDigest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDirectory: A `Directory`
+// represents a directory node in a file tree, containing zero or
+// more children FileNodes
+// and DirectoryNodes.
+// Each `Node` contains its name in the directory, the digest of its
+// content
+// (either a file blob or a `Directory` proto), as well as possibly
+// some
+// metadata about the file or directory.
+//
+// In order to ensure that two equivalent directory trees hash to the
+// same
+// value, the following restrictions MUST be obeyed when constructing
+// a
+// a `Directory`:
+//   - Every child in the directory must have a path of exactly one
+// segment.
+//     Multiple levels of directory hierarchy may not be collapsed.
+//   - Each child in the directory must have a unique path segment (file
+// name).
+//   - The files and directories in the directory must each be sorted
+// in
+//     lexicographical order by path. The path strings must be sorted by
+// code
+//     point, equivalently, by UTF-8 bytes.
+//
+// A `Directory` that obeys the restrictions is said to be in canonical
+// form.
+//
+// As an example, the following could be used for a file named `bar` and
+// a
+// directory named `foo` with an executable file named `baz` (hashes
+// shortened
+// for readability):
+//
+// ```json
+// // (Directory proto)
+// {
+//   files: [
+//     {
+//       name: "bar",
+//       digest: {
+//         hash: "4a73bc9d03...",
+//         size: 65534
+//       }
+//     }
+//   ],
+//   directories: [
+//     {
+//       name: "foo",
+//       digest: {
+//         hash: "4cf2eda940...",
+//         size: 43
+//       }
+//     }
+//   ]
+// }
+//
+// // (Directory proto with hash "4cf2eda940..." and size 43)
+// {
+//   files: [
+//     {
+//       name: "baz",
+//       digest: {
+//         hash: "b2c941073e...",
+//         size: 1294,
+//       },
+//       is_executable: true
+//     }
+//   ]
+// }
+// ```
+type GoogleDevtoolsRemoteexecutionV1testDirectory struct {
+	// Directories: The subdirectories in the directory.
+	Directories []*GoogleDevtoolsRemoteexecutionV1testDirectoryNode `json:"directories,omitempty"`
+
+	// Files: The files in the directory.
+	Files []*GoogleDevtoolsRemoteexecutionV1testFileNode `json:"files,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteexecutionV1testDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDirectoryNode: A `DirectoryNode`
+// represents a child of a
+// Directory which is itself
+// a `Directory` and its associated metadata.
+type GoogleDevtoolsRemoteexecutionV1testDirectoryNode struct {
+	// Digest: The digest of the
+	// Directory object
+	// represented. See Digest
+	// for information about how to take the digest of a proto message.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// Name: The name of the directory.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testDirectoryNode) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDirectoryNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata: Metadata
+// about an ongoing
+// execution, which
+// will be contained in the metadata
+// field of the
+// Operation.
+type GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata struct {
+	// ActionDigest: The digest of the Action
+	// being executed.
+	ActionDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"actionDigest,omitempty"`
+
+	// Possible values:
+	//   "UNKNOWN"
+	//   "CACHE_CHECK" - Checking the result against the cache.
+	//   "QUEUED" - Currently idle, awaiting a free machine to execute.
+	//   "EXECUTING" - Currently being executed by a worker.
+	//   "COMPLETED" - Finished execution.
+	Stage string `json:"stage,omitempty"`
+
+	// StderrStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard error.
+	StderrStreamName string `json:"stderrStreamName,omitempty"`
+
+	// StdoutStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard output.
+	StdoutStreamName string `json:"stdoutStreamName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionDigest") 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. "ActionDigest") 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 *GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testExecuteResponse: The response
+// message for
+// Execution.Execute,
+// which will be contained in the response
+// field of the
+// Operation.
+type GoogleDevtoolsRemoteexecutionV1testExecuteResponse struct {
+	// CachedResult: True if the result was served from cache, false if it
+	// was executed.
+	CachedResult bool `json:"cachedResult,omitempty"`
+
+	// Result: The result of the action.
+	Result *GoogleDevtoolsRemoteexecutionV1testActionResult `json:"result,omitempty"`
+
+	// ServerLogs: An optional list of additional log outputs the server
+	// wishes to provide. A
+	// server can use this to return execution-specific logs however it
+	// wishes.
+	// This is intended primarily to make it easier for users to debug
+	// issues that
+	// may be outside of the actual job execution, such as by identifying
+	// the
+	// worker executing the action or by providing logs from the worker's
+	// setup
+	// phase. The keys SHOULD be human readable so that a client can display
+	// them
+	// to a user.
+	ServerLogs map[string]GoogleDevtoolsRemoteexecutionV1testLogFile `json:"serverLogs,omitempty"`
+
+	// Status: If the status has a code other than `OK`, it indicates that
+	// the action did
+	// not finish execution. For example, if the operation times out
+	// during
+	// execution, the status will have a `DEADLINE_EXCEEDED` code. Servers
+	// MUST
+	// use this field for errors in execution, rather than the error field
+	// on the
+	// `Operation` object.
+	//
+	// If the status code is other than `OK`, then the result MUST NOT be
+	// cached.
+	// For an error status, the `result` field is optional; the server
+	// may
+	// populate the output-, stdout-, and stderr-related fields if it has
+	// any
+	// information available, such as the stdout and stderr of a timed-out
+	// action.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CachedResult") 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. "CachedResult") 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 *GoogleDevtoolsRemoteexecutionV1testExecuteResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testExecuteResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testFileNode: A `FileNode` represents
+// a single file and associated metadata.
+type GoogleDevtoolsRemoteexecutionV1testFileNode struct {
+	// Digest: The digest of the file's content.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Name: The name of the file.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testFileNode) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testFileNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testLogFile: A `LogFile` is a log
+// stored in the CAS.
+type GoogleDevtoolsRemoteexecutionV1testLogFile struct {
+	// Digest: The digest of the log contents.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// HumanReadable: This is a hint as to the purpose of the log, and is
+	// set to true if the log
+	// is human-readable text that can be usefully displayed to a user, and
+	// false
+	// otherwise. For instance, if a command-line client wishes to print
+	// the
+	// server logs to the terminal for a failed action, this allows it to
+	// avoid
+	// displaying a binary file.
+	HumanReadable bool `json:"humanReadable,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testLogFile) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testLogFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testOutputDirectory: An
+// `OutputDirectory` is the output in an `ActionResult` corresponding to
+// a
+// directory's full contents rather than a single file.
+type GoogleDevtoolsRemoteexecutionV1testOutputDirectory struct {
+	// Digest: DEPRECATED: This field is deprecated and should no longer be
+	// used.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// Path: The full path of the directory relative to the working
+	// directory. The path
+	// separator is a forward slash `/`. Since this is a relative path, it
+	// MUST
+	// NOT begin with a leading forward slash. The empty string value is
+	// allowed,
+	// and it denotes the entire working directory.
+	Path string `json:"path,omitempty"`
+
+	// TreeDigest: The digest of the encoded
+	// Tree proto containing the
+	// directory's contents.
+	TreeDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"treeDigest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testOutputDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testOutputDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testOutputFile: An `OutputFile` is
+// similar to a
+// FileNode, but it is
+// tailored for output as part of an `ActionResult`. It allows a full
+// file path
+// rather than only a name, and allows the server to include content
+// inline.
+//
+// `OutputFile` is binary-compatible with `FileNode`.
+type GoogleDevtoolsRemoteexecutionV1testOutputFile struct {
+	// Content: The raw content of the file.
+	//
+	// This field may be used by the server to provide the content of a
+	// file
+	// inline in an
+	// ActionResult and
+	// avoid requiring that the client make a separate call
+	// to
+	// [ContentAddressableStorage.GetBlob] to retrieve it.
+	//
+	// The client SHOULD NOT assume that it will get raw content with any
+	// request,
+	// and always be prepared to retrieve it via `digest`.
+	Content string `json:"content,omitempty"`
+
+	// Digest: The digest of the file's content.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The full path of the file relative to the input root, including
+	// the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Content") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Content") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleDevtoolsRemoteexecutionV1testOutputFile) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testOutputFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testRequestMetadata: An optional
+// Metadata to attach to any RPC request to tell the server about
+// an
+// external context of the request. The server may use this for logging
+// or other
+// purposes. To use it, the client attaches the header to the call using
+// the
+// canonical proto serialization:
+// name:
+// google.devtools.remoteexecution.v1test.requestmetadata-bin
+// contents: the base64 encoded binary RequestMetadata message.
+type GoogleDevtoolsRemoteexecutionV1testRequestMetadata struct {
+	// ActionId: An identifier that ties multiple requests to the same
+	// action.
+	// For example, multiple requests to the CAS, Action Cache, and
+	// Execution
+	// API are used in order to compile foo.cc.
+	ActionId string `json:"actionId,omitempty"`
+
+	// CorrelatedInvocationsId: An identifier to tie multiple tool
+	// invocations together. For example,
+	// runs of foo_test, bar_test and baz_test on a post-submit of a given
+	// patch.
+	CorrelatedInvocationsId string `json:"correlatedInvocationsId,omitempty"`
+
+	// ToolDetails: The details for the tool invoking the requests.
+	ToolDetails *GoogleDevtoolsRemoteexecutionV1testToolDetails `json:"toolDetails,omitempty"`
+
+	// ToolInvocationId: An identifier that ties multiple actions together
+	// to a final result.
+	// For example, multiple actions are required to build and run foo_test.
+	ToolInvocationId string `json:"toolInvocationId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionId") 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. "ActionId") 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 *GoogleDevtoolsRemoteexecutionV1testRequestMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testRequestMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testToolDetails: Details for the tool
+// used to call the API.
+type GoogleDevtoolsRemoteexecutionV1testToolDetails struct {
+	// ToolName: Name of the tool, e.g. bazel.
+	ToolName string `json:"toolName,omitempty"`
+
+	// ToolVersion: Version of the tool used for the request, e.g. 5.0.3.
+	ToolVersion string `json:"toolVersion,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ToolName") 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. "ToolName") 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 *GoogleDevtoolsRemoteexecutionV1testToolDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testToolDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testTree: A `Tree` contains all
+// the
+// Directory protos in a
+// single directory Merkle tree, compressed into one message.
+type GoogleDevtoolsRemoteexecutionV1testTree struct {
+	// Children: All the child directories: the directories referred to by
+	// the root and,
+	// recursively, all its children. In order to reconstruct the directory
+	// tree,
+	// the client must take the digests of each of the child directories and
+	// then
+	// build up a tree starting from the `root`.
+	Children []*GoogleDevtoolsRemoteexecutionV1testDirectory `json:"children,omitempty"`
+
+	// Root: The root directory in the tree.
+	Root *GoogleDevtoolsRemoteexecutionV1testDirectory `json:"root,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Children") 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. "Children") 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 *GoogleDevtoolsRemoteexecutionV1testTree) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testTree
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2AdminTemp: AdminTemp is a
+// prelimiary set of administration tasks. It's called "Temp"
+// because we do not yet know the best way to represent admin tasks;
+// it's
+// possible that this will be entirely replaced in later versions of
+// this API.
+// If this message proves to be sufficient, it will be renamed in the
+// alpha or
+// beta release of this API.
+//
+// This message (suitably marshalled into a protobuf.Any) can be used as
+// the
+// inline_assignment field in a lease; the lease assignment field should
+// simply
+// be "admin" in these cases.
+//
+// This message is heavily based on Swarming administration tasks from
+// the LUCI
+// project (http://github.com/luci/luci-py/appengine/swarming).
+type GoogleDevtoolsRemoteworkersV1test2AdminTemp struct {
+	// Arg: The argument to the admin action; see `Command` for semantics.
+	Arg string `json:"arg,omitempty"`
+
+	// Command: The admin action; see `Command` for legal values.
+	//
+	// Possible values:
+	//   "UNSPECIFIED" - Illegal value.
+	//   "BOT_UPDATE" - Download and run a new version of the bot. `arg`
+	// will be a resource
+	// accessible via `ByteStream.Read` to obtain the new bot code.
+	//   "BOT_RESTART" - Restart the bot without downloading a new version.
+	// `arg` will be a
+	// message to log.
+	//   "BOT_TERMINATE" - Shut down the bot. `arg` will be a task resource
+	// name (similar to those
+	// in tasks.proto) that the bot can use to tell the server that it
+	// is
+	// terminating.
+	//   "HOST_RESTART" - Restart the host computer. `arg` will be a message
+	// to log.
+	Command string `json:"command,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arg") 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. "Arg") 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 *GoogleDevtoolsRemoteworkersV1test2AdminTemp) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2AdminTemp
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Blob: Describes a blob of binary
+// content with its digest.
+type GoogleDevtoolsRemoteworkersV1test2Blob struct {
+	// Contents: The contents of the blob.
+	Contents string `json:"contents,omitempty"`
+
+	// Digest: The digest of the blob. This should be verified by the
+	// receiver.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Contents") 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. "Contents") 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 *GoogleDevtoolsRemoteworkersV1test2Blob) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Blob
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandOutputs: DEPRECATED - use
+// CommandResult instead.
+// Describes the actual outputs from the task.
+type GoogleDevtoolsRemoteworkersV1test2CommandOutputs struct {
+	// ExitCode: exit_code is only fully reliable if the status' code is OK.
+	// If the task
+	// exceeded its deadline or was cancelled, the process may still produce
+	// an
+	// exit code as it is cancelled, and this will be populated, but a
+	// successful
+	// (zero) is unlikely to be correct unless the status code is OK.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// Outputs: The output files. The blob referenced by the digest should
+	// contain
+	// one of the following (implementation-dependent):
+	//    * A marshalled DirectoryMetadata of the returned filesystem
+	//    * A LUCI-style .isolated file
+	Outputs *GoogleDevtoolsRemoteworkersV1test2Digest `json:"outputs,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExitCode") 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. "ExitCode") 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 *GoogleDevtoolsRemoteworkersV1test2CommandOutputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandOutputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandOverhead: DEPRECATED - use
+// CommandResult instead.
+// Can be used as part of CompleteRequest.metadata, or are part of a
+// more
+// sophisticated message.
+type GoogleDevtoolsRemoteworkersV1test2CommandOverhead struct {
+	// Duration: The elapsed time between calling Accept and Complete. The
+	// server will also
+	// have its own idea of what this should be, but this excludes the
+	// overhead of
+	// the RPCs and the bot response time.
+	Duration string `json:"duration,omitempty"`
+
+	// Overhead: The amount of time *not* spent executing the command
+	// (ie
+	// uploading/downloading files).
+	Overhead string `json:"overhead,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Duration") 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. "Duration") 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 *GoogleDevtoolsRemoteworkersV1test2CommandOverhead) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandOverhead
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandResult: All information
+// about the execution of a command, suitable for providing as
+// the Bots interface's `Lease.result` field.
+type GoogleDevtoolsRemoteworkersV1test2CommandResult struct {
+	// Duration: The elapsed time between calling Accept and Complete. The
+	// server will also
+	// have its own idea of what this should be, but this excludes the
+	// overhead of
+	// the RPCs and the bot response time.
+	Duration string `json:"duration,omitempty"`
+
+	// ExitCode: The exit code of the process. An exit code of "0" should
+	// only be trusted if
+	// `status` has a code of OK (otherwise it may simply be unset).
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// Outputs: The output files. The blob referenced by the digest should
+	// contain
+	// one of the following (implementation-dependent):
+	//    * A marshalled DirectoryMetadata of the returned filesystem
+	//    * A LUCI-style .isolated file
+	Outputs *GoogleDevtoolsRemoteworkersV1test2Digest `json:"outputs,omitempty"`
+
+	// Overhead: The amount of time *not* spent executing the command
+	// (ie
+	// uploading/downloading files).
+	Overhead string `json:"overhead,omitempty"`
+
+	// Statistics: Implementation-dependent statistics about the task. Both
+	// servers and bots
+	// may define messages which can be encoded here; bots are free to
+	// provide
+	// statistics in multiple formats, and servers are free to choose one or
+	// more
+	// of the values to process and ignore others. In particular, it is
+	// *not*
+	// considered an error for the bot to provide the server with a field
+	// that it
+	// doesn't know about.
+	Statistics []googleapi.RawMessage `json:"statistics,omitempty"`
+
+	// Status: An overall status for the command. For example, if the
+	// command timed out,
+	// this might have a code of DEADLINE_EXCEEDED; if it was killed by the
+	// OS for
+	// memory exhaustion, it might have a code of RESOURCE_EXHAUSTED.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Duration") 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. "Duration") 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 *GoogleDevtoolsRemoteworkersV1test2CommandResult) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTask: Describes a
+// shell-style task to execute, suitable for providing as the
+// Bots
+// interface's `Lease.payload` field.
+type GoogleDevtoolsRemoteworkersV1test2CommandTask struct {
+	// ExpectedOutputs: The expected outputs from the task.
+	ExpectedOutputs *GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs `json:"expectedOutputs,omitempty"`
+
+	// Inputs: The inputs to the task.
+	Inputs *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs `json:"inputs,omitempty"`
+
+	// Timeouts: The timeouts of this task.
+	Timeouts *GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts `json:"timeouts,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExpectedOutputs") 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. "ExpectedOutputs") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTask) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTask
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs: Describes the
+// inputs to a shell-style task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs struct {
+	// Arguments: The command itself to run (e.g., argv).
+	//
+	// This field should be passed directly to the underlying operating
+	// system,
+	// and so it must be sensible to that operating system. For example,
+	// on
+	// Windows, the first argument might be "C:\Windows\System32\ping.exe"
+	// -
+	// that is, using drive letters and backslashes. A command for a
+	// *nix
+	// system, on the other hand, would use forward slashes.
+	//
+	// All other fields in the RWAPI must consistently use forward
+	// slashes,
+	// since those fields may be interpretted by both the service and the
+	// bot.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: All environment variables required by the task.
+	EnvironmentVariables []*GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// Files: The input filesystem to be set up prior to the task beginning.
+	// The
+	// contents should be a repeated set of FileMetadata messages though
+	// other
+	// formats are allowed if better for the implementation (eg, a
+	// LUCI-style
+	// .isolated file).
+	//
+	// This field is repeated since implementations might want to cache
+	// the
+	// metadata, in which case it may be useful to break up portions of
+	// the
+	// filesystem that change frequently (eg, specific input files) from
+	// those
+	// that don't (eg, standard header files).
+	Files []*GoogleDevtoolsRemoteworkersV1test2Digest `json:"files,omitempty"`
+
+	// InlineBlobs: Inline contents for blobs expected to be needed by the
+	// bot to execute the
+	// task. For example, contents of entries in `files` or blobs that
+	// are
+	// indirectly referenced by an entry there.
+	//
+	// The bot should check against this list before downloading required
+	// task
+	// inputs to reduce the number of communications between itself and
+	// the
+	// remote CAS server.
+	InlineBlobs []*GoogleDevtoolsRemoteworkersV1test2Blob `json:"inlineBlobs,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
+// : An environment variable required by this task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable struct {
+	// Name: The envvar name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The envvar 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs: Describes the
+// expected outputs of the command.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs struct {
+	// Directories: A list of expected directories, relative to the
+	// execution root. All paths
+	// MUST be delimited by forward slashes.
+	Directories []string `json:"directories,omitempty"`
+
+	// Files: A list of expected files, relative to the execution root. All
+	// paths
+	// MUST be delimited by forward slashes.
+	Files []string `json:"files,omitempty"`
+
+	// StderrDestination: The destination to which any stderr should be
+	// sent. The method by which
+	// the bot should send the stream contents to that destination is
+	// not
+	// defined in this API. As examples, the destination could be a
+	// file
+	// referenced in the `files` field in this message, or it could be a
+	// URI
+	// that must be written via the ByteStream API.
+	StderrDestination string `json:"stderrDestination,omitempty"`
+
+	// StdoutDestination: The destination to which any stdout should be
+	// sent. The method by which
+	// the bot should send the stream contents to that destination is
+	// not
+	// defined in this API. As examples, the destination could be a
+	// file
+	// referenced in the `files` field in this message, or it could be a
+	// URI
+	// that must be written via the ByteStream API.
+	StdoutDestination string `json:"stdoutDestination,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts: Describes the
+// timeouts associated with this task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts struct {
+	// Execution: This specifies the maximum time that the task can run,
+	// excluding the
+	// time required to download inputs or upload outputs. That is, the
+	// worker
+	// will terminate the task if it runs longer than this.
+	Execution string `json:"execution,omitempty"`
+
+	// Idle: This specifies the maximum amount of time the task can be idle
+	// - that is,
+	// go without generating some output in either stdout or stderr. If
+	// the
+	// process is silent for more than the specified time, the worker
+	// will
+	// terminate the task.
+	Idle string `json:"idle,omitempty"`
+
+	// Shutdown: If the execution or IO timeouts are exceeded, the worker
+	// will try to
+	// gracefully terminate the task and return any existing logs.
+	// However,
+	// tasks may be hard-frozen in which case this process will fail.
+	// This
+	// timeout specifies how long to wait for a terminated task to shut
+	// down
+	// gracefully (e.g. via SIGTERM) before we bring down the hammer
+	// (e.g.
+	// SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
+	Shutdown string `json:"shutdown,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Execution") 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. "Execution") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Digest: The CommandTask and
+// CommandResult messages assume the existence of a service
+// that can serve blobs of content, identified by a hash and size known
+// as a
+// "digest." The method by which these blobs may be retrieved is not
+// specified
+// here, but a model implementation is in the Remote Execution
+// API's
+// "ContentAddressibleStorage" interface.
+//
+// In the context of the RWAPI, a Digest will virtually always refer to
+// the
+// contents of a file or a directory. The latter is represented by
+// the
+// byte-encoded Directory message.
+type GoogleDevtoolsRemoteworkersV1test2Digest struct {
+	// Hash: A string-encoded hash (eg "1a2b3c", not the byte array [0x1a,
+	// 0x2b, 0x3c])
+	// using an implementation-defined hash algorithm (eg SHA-256).
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the contents. While this is not strictly
+	// required as part of an
+	// identifier (after all, any given hash will have exactly one
+	// canonical
+	// size), it's useful in almost all cases when one might want to send
+	// or
+	// retrieve blobs of content and is included here for this reason.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *GoogleDevtoolsRemoteworkersV1test2Digest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Digest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Directory: The contents of a
+// directory. Similar to the equivalent message in the Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2Directory struct {
+	// Directories: Any subdirectories
+	Directories []*GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata `json:"directories,omitempty"`
+
+	// Files: The files in this directory
+	Files []*GoogleDevtoolsRemoteworkersV1test2FileMetadata `json:"files,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteworkersV1test2Directory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Directory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata: The metadata for
+// a directory. Similar to the equivalent message in the
+// Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata struct {
+	// Digest: A pointer to the contents of the directory, in the form of a
+	// marshalled
+	// Directory message.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// Path: The path of the directory, as in FileMetadata.path.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2FileMetadata: The metadata for a
+// file. Similar to the equivalent message in the Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2FileMetadata struct {
+	// Contents: If the file is small enough, its contents may also or
+	// alternatively be
+	// listed here.
+	Contents string `json:"contents,omitempty"`
+
+	// Digest: A pointer to the contents of the file. The method by which a
+	// client
+	// retrieves the contents from a CAS system is not defined here.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: Properties of the file
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The path of this file. If this message is part of
+	// the
+	// CommandOutputs.outputs fields, the path is relative to the execution
+	// root
+	// and must correspond to an entry in CommandTask.outputs.files. If
+	// this
+	// message is part of a Directory message, then the path is relative to
+	// the
+	// root of that directory. All paths MUST be delimited by forward
+	// slashes.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Contents") 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. "Contents") 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 *GoogleDevtoolsRemoteworkersV1test2FileMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2FileMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleLongrunningOperation: This resource represents a long-running
+// operation that is the result of a
+// network API call.
+type GoogleLongrunningOperation struct {
+	// Done: If the value is `false`, it means the operation is still in
+	// progress.
+	// If `true`, the operation is completed, and either `error` or
+	// `response` is
+	// available.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure or
+	// cancellation.
+	Error *GoogleRpcStatus `json:"error,omitempty"`
+
+	// Metadata: Service-specific metadata associated with the operation.
+	// It typically
+	// contains progress information and common metadata such as create
+	// time.
+	// Some services might not provide such metadata.  Any method that
+	// returns a
+	// long-running operation should document the metadata type, if any.
+	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
+
+	// Name: The server-assigned name, which is only unique within the same
+	// service that
+	// originally returns it. If you use the default HTTP mapping,
+	// the
+	// `name` should have the format of `operations/some/unique/name`.
+	Name string `json:"name,omitempty"`
+
+	// Response: The normal response of the operation in case of success.
+	// If the original
+	// method returns no data on success, such as `Delete`, the response
+	// is
+	// `google.protobuf.Empty`.  If the original method is
+	// standard
+	// `Get`/`Create`/`Update`, the response should be the resource.  For
+	// other
+	// methods, the response should have the type `XxxResponse`, where
+	// `Xxx`
+	// is the original method name.  For example, if the original method
+	// name
+	// is `TakeSnapshot()`, the inferred response type
+	// is
+	// `TakeSnapshotResponse`.
+	Response googleapi.RawMessage `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") 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. "Done") 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 *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleLongrunningOperation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleRpcStatus: The `Status` type defines a logical error model that
+// is suitable for different
+// programming environments, including REST APIs and RPC APIs. It is
+// used by
+// [gRPC](https://github.com/grpc). The error model is designed to
+// be:
+//
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code, error
+// message,
+// and error details. The error code should be an enum value
+// of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The
+// error message should be a developer-facing English message that
+// helps
+// developers *understand* and *resolve* the error. If a localized
+// user-facing
+// error message is needed, put the localized message in the error
+// details or
+// localize it in the client. The optional error details may contain
+// arbitrary
+// information about the error. There is a predefined set of error
+// detail types
+// in the package `google.rpc` that can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error
+// model, but it
+// is not necessarily the actual wire format. When the `Status` message
+// is
+// exposed in different client libraries and different wire protocols,
+// it can be
+// mapped differently. For example, it will likely be mapped to some
+// exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety
+// of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different
+// environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the
+// client,
+//     it may embed the `Status` in the normal response to indicate the
+// partial
+//     errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step
+// may
+//     have a `Status` message for error reporting.
+//
+// - Batch operations. If a client uses batch request and batch
+// response, the
+//     `Status` message should be used directly inside batch response,
+// one for
+//     each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous
+// operation
+//     results in its response, the status of those operations should
+// be
+//     represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message
+// `Status` could
+//     be used directly after any stripping needed for security/privacy
+// reasons.
+type GoogleRpcStatus struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There is a
+	// common set of
+	// message types for APIs to use.
+	Details []googleapi.RawMessage `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any
+	// user-facing error message should be localized and sent in
+	// the
+	// google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,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 *GoogleRpcStatus) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleRpcStatus
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "remotebuildexecution.projects.instances.create":
+
+type ProjectsInstancesCreateCall struct {
+	s                                                                   *Service
+	parent                                                              string
+	googledevtoolsremotebuildexecutionadminv1alphacreateinstancerequest *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest
+	urlParams_                                                          gensupport.URLParams
+	ctx_                                                                context.Context
+	header_                                                             http.Header
+}
+
+// Create: Creates a new instance in the specified region.
+// Returns a long running operation which contains an instance on
+// completion.
+// While the long running operation is in progress, any call to
+// `GetInstance`
+// returns an instance in state `CREATING`.
+func (r *ProjectsInstancesService) Create(parent string, googledevtoolsremotebuildexecutionadminv1alphacreateinstancerequest *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest) *ProjectsInstancesCreateCall {
+	c := &ProjectsInstancesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.googledevtoolsremotebuildexecutionadminv1alphacreateinstancerequest = googledevtoolsremotebuildexecutionadminv1alphacreateinstancerequest
+	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 *ProjectsInstancesCreateCall) Fields(s ...googleapi.Field) *ProjectsInstancesCreateCall {
+	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 *ProjectsInstancesCreateCall) Context(ctx context.Context) *ProjectsInstancesCreateCall {
+	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 *ProjectsInstancesCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesCreateCall) 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.googledevtoolsremotebuildexecutionadminv1alphacreateinstancerequest)
+	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, "v1alpha/{+parent}/instances")
+	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 "remotebuildexecution.projects.instances.create" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *ProjectsInstancesCreateCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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 instance in the specified region.\nReturns a long running operation which contains an instance on completion.\nWhile the long running operation is in progress, any call to `GetInstance`\nreturns an instance in state `CREATING`.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.projects.instances.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Resource name of the project containing the instance.\nFormat: `projects/[PROJECT_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+parent}/instances",
+	//   "request": {
+	//     "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.instances.delete":
+
+type ProjectsInstancesDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes the specified instance.
+// Returns a long running operation which contains a
+// `google.protobuf.Empty`
+// response on completion.
+// Deleting an instance with worker pools in it will delete these
+// worker
+// pools.
+func (r *ProjectsInstancesService) Delete(name string) *ProjectsInstancesDeleteCall {
+	c := &ProjectsInstancesDeleteCall{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 *ProjectsInstancesDeleteCall) Fields(s ...googleapi.Field) *ProjectsInstancesDeleteCall {
+	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 *ProjectsInstancesDeleteCall) Context(ctx context.Context) *ProjectsInstancesDeleteCall {
+	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 *ProjectsInstancesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesDeleteCall) 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, "v1alpha/{+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 "remotebuildexecution.projects.instances.delete" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *ProjectsInstancesDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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 the specified instance.\nReturns a long running operation which contains a `google.protobuf.Empty`\nresponse on completion.\nDeleting an instance with worker pools in it will delete these worker\npools.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "remotebuildexecution.projects.instances.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Name of the instance to delete.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/instances/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.instances.get":
+
+type ProjectsInstancesGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Returns the specified instance.
+func (r *ProjectsInstancesService) Get(name string) *ProjectsInstancesGetCall {
+	c := &ProjectsInstancesGetCall{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 *ProjectsInstancesGetCall) Fields(s ...googleapi.Field) *ProjectsInstancesGetCall {
+	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 *ProjectsInstancesGetCall) IfNoneMatch(entityTag string) *ProjectsInstancesGetCall {
+	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 *ProjectsInstancesGetCall) Context(ctx context.Context) *ProjectsInstancesGetCall {
+	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 *ProjectsInstancesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesGetCall) 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, "v1alpha/{+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 "remotebuildexecution.projects.instances.get" call.
+// Exactly one of
+// *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance or error will
+// be non-nil. Any non-2xx status code is an error. Response headers are
+// in either
+// *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance.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 *ProjectsInstancesGetCall) Do(opts ...googleapi.CallOption) (*GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance, 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 := &GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance{
+		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": "Returns the specified instance.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.projects.instances.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Name of the instance to retrieve.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/instances/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.instances.list":
+
+type ProjectsInstancesListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists instances in a project.
+func (r *ProjectsInstancesService) List(parent string) *ProjectsInstancesListCall {
+	c := &ProjectsInstancesListCall{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 *ProjectsInstancesListCall) Fields(s ...googleapi.Field) *ProjectsInstancesListCall {
+	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 *ProjectsInstancesListCall) IfNoneMatch(entityTag string) *ProjectsInstancesListCall {
+	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 *ProjectsInstancesListCall) Context(ctx context.Context) *ProjectsInstancesListCall {
+	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 *ProjectsInstancesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesListCall) 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, "v1alpha/{+parent}/instances")
+	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 "remotebuildexecution.projects.instances.list" call.
+// Exactly one of
+// *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse
+// or error will be non-nil. Any non-2xx status code is an error.
+// Response headers are in either
+// *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse.S
+// erverResponse.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 *ProjectsInstancesListCall) Do(opts ...googleapi.CallOption) (*GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse, 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 := &GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse{
+		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 instances in a project.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.projects.instances.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Resource name of the project.\nFormat: `projects/[PROJECT_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+parent}/instances",
+	//   "response": {
+	//     "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.instances.workerpools.create":
+
+type ProjectsInstancesWorkerpoolsCreateCall struct {
+	s                                                                     *Service
+	parent                                                                string
+	googledevtoolsremotebuildexecutionadminv1alphacreateworkerpoolrequest *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest
+	urlParams_                                                            gensupport.URLParams
+	ctx_                                                                  context.Context
+	header_                                                               http.Header
+}
+
+// Create: Creates a new worker pool with a specified size and
+// configuration.
+// Returns a long running operation which contains a worker pool
+// on
+// completion. While the long running operation is in progress, any call
+// to
+// `GetWorkerPool` returns a worker pool in state `CREATING`.
+func (r *ProjectsInstancesWorkerpoolsService) Create(parent string, googledevtoolsremotebuildexecutionadminv1alphacreateworkerpoolrequest *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest) *ProjectsInstancesWorkerpoolsCreateCall {
+	c := &ProjectsInstancesWorkerpoolsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	c.googledevtoolsremotebuildexecutionadminv1alphacreateworkerpoolrequest = googledevtoolsremotebuildexecutionadminv1alphacreateworkerpoolrequest
+	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 *ProjectsInstancesWorkerpoolsCreateCall) Fields(s ...googleapi.Field) *ProjectsInstancesWorkerpoolsCreateCall {
+	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 *ProjectsInstancesWorkerpoolsCreateCall) Context(ctx context.Context) *ProjectsInstancesWorkerpoolsCreateCall {
+	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 *ProjectsInstancesWorkerpoolsCreateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesWorkerpoolsCreateCall) 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.googledevtoolsremotebuildexecutionadminv1alphacreateworkerpoolrequest)
+	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, "v1alpha/{+parent}/workerpools")
+	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 "remotebuildexecution.projects.instances.workerpools.create" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *ProjectsInstancesWorkerpoolsCreateCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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 worker pool with a specified size and configuration.\nReturns a long running operation which contains a worker pool on\ncompletion. While the long running operation is in progress, any call to\n`GetWorkerPool` returns a worker pool in state `CREATING`.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.projects.instances.workerpools.create",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Resource name of the instance in which to create the new worker pool.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/instances/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+parent}/workerpools",
+	//   "request": {
+	//     "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.instances.workerpools.delete":
+
+type ProjectsInstancesWorkerpoolsDeleteCall struct {
+	s          *Service
+	name       string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes the specified worker pool.
+// Returns a long running operation, which contains a
+// `google.protobuf.Empty`
+// response on completion.
+// While the long running operation is in progress, any call
+// to
+// `GetWorkerPool` returns a worker pool in state `DELETING`.
+func (r *ProjectsInstancesWorkerpoolsService) Delete(name string) *ProjectsInstancesWorkerpoolsDeleteCall {
+	c := &ProjectsInstancesWorkerpoolsDeleteCall{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 *ProjectsInstancesWorkerpoolsDeleteCall) Fields(s ...googleapi.Field) *ProjectsInstancesWorkerpoolsDeleteCall {
+	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 *ProjectsInstancesWorkerpoolsDeleteCall) Context(ctx context.Context) *ProjectsInstancesWorkerpoolsDeleteCall {
+	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 *ProjectsInstancesWorkerpoolsDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesWorkerpoolsDeleteCall) 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, "v1alpha/{+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 "remotebuildexecution.projects.instances.workerpools.delete" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *ProjectsInstancesWorkerpoolsDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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 the specified worker pool.\nReturns a long running operation, which contains a `google.protobuf.Empty`\nresponse on completion.\nWhile the long running operation is in progress, any call to\n`GetWorkerPool` returns a worker pool in state `DELETING`.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools/{workerpoolsId}",
+	//   "httpMethod": "DELETE",
+	//   "id": "remotebuildexecution.projects.instances.workerpools.delete",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Name of the worker pool to delete.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/instances/[^/]+/workerpools/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.instances.workerpools.get":
+
+type ProjectsInstancesWorkerpoolsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Returns the specified worker pool.
+func (r *ProjectsInstancesWorkerpoolsService) Get(name string) *ProjectsInstancesWorkerpoolsGetCall {
+	c := &ProjectsInstancesWorkerpoolsGetCall{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 *ProjectsInstancesWorkerpoolsGetCall) Fields(s ...googleapi.Field) *ProjectsInstancesWorkerpoolsGetCall {
+	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 *ProjectsInstancesWorkerpoolsGetCall) IfNoneMatch(entityTag string) *ProjectsInstancesWorkerpoolsGetCall {
+	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 *ProjectsInstancesWorkerpoolsGetCall) Context(ctx context.Context) *ProjectsInstancesWorkerpoolsGetCall {
+	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 *ProjectsInstancesWorkerpoolsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesWorkerpoolsGetCall) 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, "v1alpha/{+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 "remotebuildexecution.projects.instances.workerpools.get" call.
+// Exactly one of
+// *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool or error
+// will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool.ServerRespon
+// se.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 *ProjectsInstancesWorkerpoolsGetCall) Do(opts ...googleapi.CallOption) (*GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool, 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 := &GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool{
+		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": "Returns the specified worker pool.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools/{workerpoolsId}",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.projects.instances.workerpools.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "Name of the worker pool to retrieve.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/instances/[^/]+/workerpools/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.instances.workerpools.list":
+
+type ProjectsInstancesWorkerpoolsListCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists worker pools in an instance.
+func (r *ProjectsInstancesWorkerpoolsService) List(parent string) *ProjectsInstancesWorkerpoolsListCall {
+	c := &ProjectsInstancesWorkerpoolsListCall{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 *ProjectsInstancesWorkerpoolsListCall) Fields(s ...googleapi.Field) *ProjectsInstancesWorkerpoolsListCall {
+	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 *ProjectsInstancesWorkerpoolsListCall) IfNoneMatch(entityTag string) *ProjectsInstancesWorkerpoolsListCall {
+	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 *ProjectsInstancesWorkerpoolsListCall) Context(ctx context.Context) *ProjectsInstancesWorkerpoolsListCall {
+	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 *ProjectsInstancesWorkerpoolsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesWorkerpoolsListCall) 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, "v1alpha/{+parent}/workerpools")
+	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 "remotebuildexecution.projects.instances.workerpools.list" call.
+// Exactly one of
+// *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse
+//  or error will be non-nil. Any non-2xx status code is an error.
+// Response headers are in either
+// *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse
+// .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 *ProjectsInstancesWorkerpoolsListCall) Do(opts ...googleapi.CallOption) (*GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse, 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 := &GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse{
+		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 worker pools in an instance.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.projects.instances.workerpools.list",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "Resource name of the instance.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/instances/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+parent}/workerpools",
+	//   "response": {
+	//     "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.instances.workerpools.patch":
+
+type ProjectsInstancesWorkerpoolsPatchCall struct {
+	s                                                                     *Service
+	name                                                                  string
+	googledevtoolsremotebuildexecutionadminv1alphaupdateworkerpoolrequest *GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest
+	urlParams_                                                            gensupport.URLParams
+	ctx_                                                                  context.Context
+	header_                                                               http.Header
+}
+
+// Patch: Updates an existing worker pool with a specified size and/or
+// configuration.
+// Returns a long running operation, which contains a worker pool
+// on
+// completion. While the long running operation is in progress, any call
+// to
+// `GetWorkerPool` returns a worker pool in state `UPDATING`.
+func (r *ProjectsInstancesWorkerpoolsService) Patch(name string, googledevtoolsremotebuildexecutionadminv1alphaupdateworkerpoolrequest *GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest) *ProjectsInstancesWorkerpoolsPatchCall {
+	c := &ProjectsInstancesWorkerpoolsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.googledevtoolsremotebuildexecutionadminv1alphaupdateworkerpoolrequest = googledevtoolsremotebuildexecutionadminv1alphaupdateworkerpoolrequest
+	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 *ProjectsInstancesWorkerpoolsPatchCall) Fields(s ...googleapi.Field) *ProjectsInstancesWorkerpoolsPatchCall {
+	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 *ProjectsInstancesWorkerpoolsPatchCall) Context(ctx context.Context) *ProjectsInstancesWorkerpoolsPatchCall {
+	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 *ProjectsInstancesWorkerpoolsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsInstancesWorkerpoolsPatchCall) 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.googledevtoolsremotebuildexecutionadminv1alphaupdateworkerpoolrequest)
+	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, "v1alpha/{+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 "remotebuildexecution.projects.instances.workerpools.patch" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *ProjectsInstancesWorkerpoolsPatchCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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 an existing worker pool with a specified size and/or configuration.\nReturns a long running operation, which contains a worker pool on\ncompletion. While the long running operation is in progress, any call to\n`GetWorkerPool` returns a worker pool in state `UPDATING`.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/instances/{instancesId}/workerpools/{workerpoolsId}",
+	//   "httpMethod": "PATCH",
+	//   "id": "remotebuildexecution.projects.instances.workerpools.patch",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "WorkerPool resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.\nname should not be populated when creating a worker pool since it is\nprovided in the `poolId` field.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/instances/[^/]+/workerpools/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+name}",
+	//   "request": {
+	//     "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.projects.operations.get":
+
+type ProjectsOperationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the latest state of a long-running operation.  Clients can
+// use this
+// method to poll the operation result at intervals as recommended by
+// the API
+// service.
+func (r *ProjectsOperationsService) Get(name string) *ProjectsOperationsGetCall {
+	c := &ProjectsOperationsGetCall{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 *ProjectsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsOperationsGetCall {
+	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 *ProjectsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsOperationsGetCall {
+	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 *ProjectsOperationsGetCall) Context(ctx context.Context) *ProjectsOperationsGetCall {
+	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 *ProjectsOperationsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOperationsGetCall) 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, "v1alpha/{+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 "remotebuildexecution.projects.operations.get" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *ProjectsOperationsGetCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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 the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1alpha/projects/{projectsId}/operations/{operationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.projects.operations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/operations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1alpha/{+name}",
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/remotebuildexecution/v2/remotebuildexecution-api.json b/remotebuildexecution/v2/remotebuildexecution-api.json
new file mode 100644
index 0000000..33fa955
--- /dev/null
+++ b/remotebuildexecution/v2/remotebuildexecution-api.json
@@ -0,0 +1,2331 @@
+{
+  "auth": {
+    "oauth2": {
+      "scopes": {
+        "https://www.googleapis.com/auth/cloud-platform": {
+          "description": "View and manage your data across Google Cloud Platform services"
+        }
+      }
+    }
+  },
+  "basePath": "",
+  "baseUrl": "https://remotebuildexecution.googleapis.com/",
+  "batchPath": "batch",
+  "canonicalName": "Remote Build Execution",
+  "description": "Supplies a Remote Execution API service for tools such as bazel.",
+  "discoveryVersion": "v1",
+  "documentationLink": "https://cloud.google.com/remote-build-execution/docs/",
+  "fullyEncodeReservedExpansion": true,
+  "icons": {
+    "x16": "http://www.google.com/images/icons/product/search-16.gif",
+    "x32": "http://www.google.com/images/icons/product/search-32.gif"
+  },
+  "id": "remotebuildexecution:v2",
+  "kind": "discovery#restDescription",
+  "name": "remotebuildexecution",
+  "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": {
+    "actionResults": {
+      "methods": {
+        "get": {
+          "description": "Retrieve a cached execution result.\n\nErrors:\n* `NOT_FOUND`: The requested `ActionResult` is not in the cache.",
+          "flatPath": "v2/{v2Id}/actionResults/{hash}/{sizeBytes}",
+          "httpMethod": "GET",
+          "id": "remotebuildexecution.actionResults.get",
+          "parameterOrder": [
+            "instanceName",
+            "hash",
+            "sizeBytes"
+          ],
+          "parameters": {
+            "hash": {
+              "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+              "location": "path",
+              "required": true,
+              "type": "string"
+            },
+            "instanceName": {
+              "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            },
+            "sizeBytes": {
+              "description": "The size of the blob, in bytes.",
+              "format": "int64",
+              "location": "path",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}",
+          "response": {
+            "$ref": "BuildBazelRemoteExecutionV2ActionResult"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "update": {
+          "description": "Upload a new execution result.\n\nThis method is intended for servers which implement the distributed cache\nindependently of the\nExecution API. As a\nresult, it is OPTIONAL for servers to implement.\n\nIn order to allow the server to perform access control based on the type of\naction, and to assist with client debugging, the client MUST first upload\nthe Action that produced the\nresult, along with its\nCommand, into the\n`ContentAddressableStorage`.\n\nErrors:\n* `UNIMPLEMENTED`: This method is not supported by the server.\n* `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the\n  entry to the cache.",
+          "flatPath": "v2/{v2Id}/actionResults/{hash}/{sizeBytes}",
+          "httpMethod": "PUT",
+          "id": "remotebuildexecution.actionResults.update",
+          "parameterOrder": [
+            "instanceName",
+            "hash",
+            "sizeBytes"
+          ],
+          "parameters": {
+            "hash": {
+              "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+              "location": "path",
+              "required": true,
+              "type": "string"
+            },
+            "instanceName": {
+              "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            },
+            "resultsCachePolicy.priority": {
+              "description": "The priority (relative importance) of this content in the overall cache.\nGenerally, a lower value means a longer retention time or other advantage,\nbut the interpretation of a given value is server-dependent. A priority of\n0 means a *default* value, decided by the server.\n\nThe particular semantics of this field is up to the server. In particular,\nevery server will have their own supported range of priorities, and will\ndecide how these map into retention/eviction policy.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "sizeBytes": {
+              "description": "The size of the blob, in bytes.",
+              "format": "int64",
+              "location": "path",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}",
+          "request": {
+            "$ref": "BuildBazelRemoteExecutionV2ActionResult"
+          },
+          "response": {
+            "$ref": "BuildBazelRemoteExecutionV2ActionResult"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      }
+    },
+    "actions": {
+      "methods": {
+        "execute": {
+          "description": "Execute an action remotely.\n\nIn order to execute an action, the client must first upload all of the\ninputs, the\nCommand to run, and the\nAction into the\nContentAddressableStorage.\nIt then calls `Execute` with an `action_digest` referring to them. The\nserver will run the action and eventually return the result.\n\nThe input `Action`'s fields MUST meet the various canonicalization\nrequirements specified in the documentation for their types so that it has\nthe same digest as other logically equivalent `Action`s. The server MAY\nenforce the requirements and return errors if a non-canonical input is\nreceived. It MAY also proceed without verifying some or all of the\nrequirements, such as for performance reasons. If the server does not\nverify the requirement, then it will treat the `Action` as distinct from\nanother logically equivalent action if they hash differently.\n\nReturns a stream of\ngoogle.longrunning.Operation messages\ndescribing the resulting execution, with eventual `response`\nExecuteResponse. The\n`metadata` on the operation is of type\nExecuteOperationMetadata.\n\nIf the client remains connected after the first response is returned after\nthe server, then updates are streamed as if the client had called\nWaitExecution\nuntil the execution completes or the request reaches an error. The\noperation can also be queried using Operations\nAPI.\n\nThe server NEED NOT implement other methods or functionality of the\nOperations API.\n\nErrors discovered during creation of the `Operation` will be reported\nas gRPC Status errors, while errors that occurred while running the\naction will be reported in the `status` field of the `ExecuteResponse`. The\nserver MUST NOT set the `error` field of the `Operation` proto.\nThe possible errors include:\n* `INVALID_ARGUMENT`: One or more arguments are invalid.\n* `FAILED_PRECONDITION`: One or more errors occurred in setting up the\n  action requested, such as a missing input or command or no worker being\n  available. The client may be able to fix the errors and retry.\n* `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run\n  the action.\n* `UNAVAILABLE`: Due to a transient condition, such as all workers being\n  occupied (and the server does not support a queue), the action could not\n  be started. The client should retry.\n* `INTERNAL`: An internal error occurred in the execution engine or the\n  worker.\n* `DEADLINE_EXCEEDED`: The execution timed out.\n\nIn the case of a missing input or command, the server SHOULD additionally\nsend a PreconditionFailure error detail\nwhere, for each requested blob not present in the CAS, there is a\n`Violation` with a `type` of `MISSING` and a `subject` of\n`\"blobs/{hash}/{size}\"` indicating the digest of the missing blob.",
+          "flatPath": "v2/{v2Id}/actions:execute",
+          "httpMethod": "POST",
+          "id": "remotebuildexecution.actions.execute",
+          "parameterOrder": [
+            "instanceName"
+          ],
+          "parameters": {
+            "instanceName": {
+              "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+instanceName}/actions:execute",
+          "request": {
+            "$ref": "BuildBazelRemoteExecutionV2ExecuteRequest"
+          },
+          "response": {
+            "$ref": "GoogleLongrunningOperation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      }
+    },
+    "blobs": {
+      "methods": {
+        "batchRead": {
+          "description": "Download many blobs at once.\n\nThe server may enforce a limit of the combined total size of blobs\nto be downloaded using this API. This limit may be obtained using the\nCapabilities API.\nRequests exceeding the limit should either be split into smaller\nchunks or downloaded using the\nByteStream API, as appropriate.\n\nThis request is equivalent to calling a Bytestream `Read` request\non each individual blob, in parallel. The requests may succeed or fail\nindependently.\n\nErrors:\n* `INVALID_ARGUMENT`: The client attempted to read more than the\n  server supported limit.\n\nEvery error on individual read will be returned in the corresponding digest\nstatus.",
+          "flatPath": "v2/{v2Id}/blobs:batchRead",
+          "httpMethod": "POST",
+          "id": "remotebuildexecution.blobs.batchRead",
+          "parameterOrder": [
+            "instanceName"
+          ],
+          "parameters": {
+            "instanceName": {
+              "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+instanceName}/blobs:batchRead",
+          "request": {
+            "$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsRequest"
+          },
+          "response": {
+            "$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "batchUpdate": {
+          "description": "Upload many blobs at once.\n\nThe server may enforce a limit of the combined total size of blobs\nto be uploaded using this API. This limit may be obtained using the\nCapabilities API.\nRequests exceeding the limit should either be split into smaller\nchunks or uploaded using the\nByteStream API, as appropriate.\n\nThis request is equivalent to calling a Bytestream `Write` request\non each individual blob, in parallel. The requests may succeed or fail\nindependently.\n\nErrors:\n* `INVALID_ARGUMENT`: The client attempted to upload more than the\n  server supported limit.\n\nIndividual requests may return the following errors, additionally:\n* `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob.\n* `INVALID_ARGUMENT`: The\nDigest does not match the\nprovided data.",
+          "flatPath": "v2/{v2Id}/blobs:batchUpdate",
+          "httpMethod": "POST",
+          "id": "remotebuildexecution.blobs.batchUpdate",
+          "parameterOrder": [
+            "instanceName"
+          ],
+          "parameters": {
+            "instanceName": {
+              "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+instanceName}/blobs:batchUpdate",
+          "request": {
+            "$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest"
+          },
+          "response": {
+            "$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "findMissing": {
+          "description": "Determine if blobs are present in the CAS.\n\nClients can use this API before uploading blobs to determine which ones are\nalready present in the CAS and do not need to be uploaded again.\n\nThere are no method-specific errors.",
+          "flatPath": "v2/{v2Id}/blobs:findMissing",
+          "httpMethod": "POST",
+          "id": "remotebuildexecution.blobs.findMissing",
+          "parameterOrder": [
+            "instanceName"
+          ],
+          "parameters": {
+            "instanceName": {
+              "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+instanceName}/blobs:findMissing",
+          "request": {
+            "$ref": "BuildBazelRemoteExecutionV2FindMissingBlobsRequest"
+          },
+          "response": {
+            "$ref": "BuildBazelRemoteExecutionV2FindMissingBlobsResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        },
+        "getTree": {
+          "description": "Fetch the entire directory tree rooted at a node.\n\nThis request must be targeted at a\nDirectory stored in the\nContentAddressableStorage\n(CAS). The server will enumerate the `Directory` tree recursively and\nreturn every node descended from the root.\n\nThe GetTreeRequest.page_token parameter can be used to skip ahead in\nthe stream (e.g. when retrying a partially completed and aborted request),\nby setting it to a value taken from GetTreeResponse.next_page_token of the\nlast successfully processed GetTreeResponse).\n\nThe exact traversal order is unspecified and, unless retrieving subsequent\npages from an earlier request, is not guaranteed to be stable across\nmultiple invocations of `GetTree`.\n\nIf part of the tree is missing from the CAS, the server will return the\nportion present and omit the rest.\n\n* `NOT_FOUND`: The requested tree root is not present in the CAS.",
+          "flatPath": "v2/{v2Id}/blobs/{hash}/{sizeBytes}:getTree",
+          "httpMethod": "GET",
+          "id": "remotebuildexecution.blobs.getTree",
+          "parameterOrder": [
+            "instanceName",
+            "hash",
+            "sizeBytes"
+          ],
+          "parameters": {
+            "hash": {
+              "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+              "location": "path",
+              "required": true,
+              "type": "string"
+            },
+            "instanceName": {
+              "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            },
+            "pageSize": {
+              "description": "A maximum page size to request. If present, the server will request no more\nthan this many items. Regardless of whether a page size is specified, the\nserver may place its own limit on the number of items to be returned and\nrequire the client to retrieve more items using a subsequent request.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
+            "pageToken": {
+              "description": "A page token, which must be a value received in a previous\nGetTreeResponse.\nIf present, the server will use it to return the following page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "sizeBytes": {
+              "description": "The size of the blob, in bytes.",
+              "format": "int64",
+              "location": "path",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+instanceName}/blobs/{hash}/{sizeBytes}:getTree",
+          "response": {
+            "$ref": "BuildBazelRemoteExecutionV2GetTreeResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      }
+    },
+    "operations": {
+      "methods": {
+        "waitExecution": {
+          "description": "Wait for an execution operation to complete. When the client initially\nmakes the request, the server immediately responds with the current status\nof the execution. The server will leave the request stream open until the\noperation completes, and then respond with the completed operation. The\nserver MAY choose to stream additional updates as execution progresses,\nsuch as to provide an update as to the state of the execution.",
+          "flatPath": "v2/operations/{operationsId}:waitExecution",
+          "httpMethod": "POST",
+          "id": "remotebuildexecution.operations.waitExecution",
+          "parameterOrder": [
+            "name"
+          ],
+          "parameters": {
+            "name": {
+              "description": "The name of the Operation\nreturned by Execute.",
+              "location": "path",
+              "pattern": "^operations/.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+name}:waitExecution",
+          "request": {
+            "$ref": "BuildBazelRemoteExecutionV2WaitExecutionRequest"
+          },
+          "response": {
+            "$ref": "GoogleLongrunningOperation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      }
+    },
+    "v2": {
+      "methods": {
+        "getCapabilities": {
+          "description": "GetCapabilities returns the server capabilities configuration.",
+          "flatPath": "v2/{v2Id}/capabilities",
+          "httpMethod": "GET",
+          "id": "remotebuildexecution.getCapabilities",
+          "parameterOrder": [
+            "instanceName"
+          ],
+          "parameters": {
+            "instanceName": {
+              "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+              "location": "path",
+              "pattern": "^.+$",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "v2/{+instanceName}/capabilities",
+          "response": {
+            "$ref": "BuildBazelRemoteExecutionV2ServerCapabilities"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform"
+          ]
+        }
+      }
+    }
+  },
+  "revision": "20190103",
+  "rootUrl": "https://remotebuildexecution.googleapis.com/",
+  "schemas": {
+    "BuildBazelRemoteExecutionV2Action": {
+      "description": "An `Action` captures all the information about an execution which is required\nto reproduce it.\n\n`Action`s are the core component of the [Execution] service. A single\n`Action` represents a repeatable action that can be performed by the\nexecution service. `Action`s can be succinctly identified by the digest of\ntheir wire format encoding and, once an `Action` has been executed, will be\ncached in the action cache. Future requests can then use the cached result\nrather than needing to run afresh.\n\nWhen a server completes execution of an\nAction, it MAY choose to\ncache the result in\nthe ActionCache unless\n`do_not_cache` is `true`. Clients SHOULD expect the server to do so. By\ndefault, future calls to\nExecute the same\n`Action` will also serve their results from the cache. Clients must take care\nto understand the caching behaviour. Ideally, all `Action`s will be\nreproducible so that serving a result from cache is always desirable and\ncorrect.",
+      "id": "BuildBazelRemoteExecutionV2Action",
+      "properties": {
+        "commandDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the Command\nto run, which MUST be present in the\nContentAddressableStorage."
+        },
+        "doNotCache": {
+          "description": "If true, then the `Action`'s result cannot be cached.",
+          "type": "boolean"
+        },
+        "inputRootDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the root\nDirectory for the input\nfiles. The files in the directory tree are available in the correct\nlocation on the build machine before the command is executed. The root\ndirectory, as well as every subdirectory and content blob referred to, MUST\nbe in the\nContentAddressableStorage."
+        },
+        "timeout": {
+          "description": "A timeout after which the execution should be killed. If the timeout is\nabsent, then the client is specifying that the execution should continue\nas long as the server will let it. The server SHOULD impose a timeout if\nthe client does not specify one, however, if the client does specify a\ntimeout that is longer than the server's maximum timeout, the server MUST\nreject the request.\n\nThe timeout is a part of the\nAction message, and\ntherefore two `Actions` with different timeouts are different, even if they\nare otherwise identical. This is because, if they were not, running an\n`Action` with a lower timeout than is required might result in a cache hit\nfrom an execution run with a longer timeout, hiding the fact that the\ntimeout is too short. By encoding it directly in the `Action`, a lower\ntimeout will result in a cache miss and the execution timeout will fail\nimmediately, rather than whenever the cache entry gets evicted.",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities": {
+      "description": "Describes the server/instance capabilities for updating the action cache.",
+      "id": "BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities",
+      "properties": {
+        "updateEnabled": {
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ActionResult": {
+      "description": "An ActionResult represents the result of an\nAction being run.",
+      "id": "BuildBazelRemoteExecutionV2ActionResult",
+      "properties": {
+        "executionMetadata": {
+          "$ref": "BuildBazelRemoteExecutionV2ExecutedActionMetadata",
+          "description": "The details of the execution that originally produced this result."
+        },
+        "exitCode": {
+          "description": "The exit code of the command.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputDirectories": {
+          "description": "The output directories of the action. For each output directory requested\nin the `output_directories` field of the Action, if the corresponding\ndirectory existed after the action completed, a single entry will be\npresent in the output list, which will contain the digest of a\nTree message containing the\ndirectory tree, and the path equal exactly to the corresponding Action\noutput_directories member.\n\nAs an example, suppose the Action had an output directory `a/b/dir` and the\nexecution produced the following contents in `a/b/dir`: a file named `bar`\nand a directory named `foo` with an executable file named `baz`. Then,\noutput_directory will contain (hashes shortened for readability):\n\n```json\n// OutputDirectory proto:\n{\n  path: \"a/b/dir\"\n  tree_digest: {\n    hash: \"4a73bc9d03...\",\n    size: 55\n  }\n}\n// Tree proto with hash \"4a73bc9d03...\" and size 55:\n{\n  root: {\n    files: [\n      {\n        name: \"bar\",\n        digest: {\n          hash: \"4a73bc9d03...\",\n          size: 65534\n        }\n      }\n    ],\n    directories: [\n      {\n        name: \"foo\",\n        digest: {\n          hash: \"4cf2eda940...\",\n          size: 43\n        }\n      }\n    ]\n  }\n  children : {\n    // (Directory proto with hash \"4cf2eda940...\" and size 43)\n    files: [\n      {\n        name: \"baz\",\n        digest: {\n          hash: \"b2c941073e...\",\n          size: 1294,\n        },\n        is_executable: true\n      }\n    ]\n  }\n}\n```",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputDirectory"
+          },
+          "type": "array"
+        },
+        "outputDirectorySymlinks": {
+          "description": "The output directories of the action that are symbolic links to other\ndirectories. Those may be links to other output directories, or input\ndirectories, or even absolute paths outside of the working directory,\nif the server supports\nSymlinkAbsolutePathStrategy.ALLOWED.\nFor each output directory requested in the `output_directories` field of\nthe Action, if the directory file existed after\nthe action completed, a single entry will be present either in this field,\nor in the `output_directories` field, if the directory was not a symbolic link.\n\nIf the action does not produce the requested output, or produces a\nfile where a directory is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputSymlink"
+          },
+          "type": "array"
+        },
+        "outputFileSymlinks": {
+          "description": "The output files of the action that are symbolic links to other files. Those\nmay be links to other output files, or input files, or even absolute paths\noutside of the working directory, if the server supports\nSymlinkAbsolutePathStrategy.ALLOWED.\nFor each output file requested in the `output_files` field of the Action,\nif the corresponding file existed after\nthe action completed, a single entry will be present either in this field,\nor in the `output_files` field, if the file was not a symbolic link.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputSymlink"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "The output files of the action. For each output file requested in the\n`output_files` field of the Action, if the corresponding file existed after\nthe action completed, a single entry will be present either in this field,\nor in the output_file_symlinks field, if the file was a symbolic link to\nanother file.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2OutputFile"
+          },
+          "type": "array"
+        },
+        "stderrDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest for a blob containing the standard error of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stderr_raw` for when this will be set."
+        },
+        "stderrRaw": {
+          "description": "The standard error buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stderr_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        },
+        "stdoutDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest for a blob containing the standard output of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stdout_raw` for when this will be set."
+        },
+        "stdoutRaw": {
+          "description": "The standard output buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stdout_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2BatchReadBlobsRequest": {
+      "description": "A request message for\nContentAddressableStorage.BatchReadBlobs.",
+      "id": "BuildBazelRemoteExecutionV2BatchReadBlobsRequest",
+      "properties": {
+        "digests": {
+          "description": "The individual blob digests.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2Digest"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2BatchReadBlobsResponse": {
+      "description": "A response message for\nContentAddressableStorage.BatchReadBlobs.",
+      "id": "BuildBazelRemoteExecutionV2BatchReadBlobsResponse",
+      "properties": {
+        "responses": {
+          "description": "The responses to the requests.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse": {
+      "description": "A response corresponding to a single blob that the client tried to upload.",
+      "id": "BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse",
+      "properties": {
+        "data": {
+          "description": "The raw binary data.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest to which this response corresponds."
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "The result of attempting to download that blob."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest": {
+      "description": "A request message for\nContentAddressableStorage.BatchUpdateBlobs.",
+      "id": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest",
+      "properties": {
+        "requests": {
+          "description": "The individual upload requests.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest": {
+      "description": "A request corresponding to a single blob that the client wants to upload.",
+      "id": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest",
+      "properties": {
+        "data": {
+          "description": "The raw binary data.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the blob. This MUST be the digest of `data`."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse": {
+      "description": "A response message for\nContentAddressableStorage.BatchUpdateBlobs.",
+      "id": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse",
+      "properties": {
+        "responses": {
+          "description": "The responses to the requests.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse": {
+      "description": "A response corresponding to a single blob that the client tried to upload.",
+      "id": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The blob digest to which this response corresponds."
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "The result of attempting to upload that blob."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2CacheCapabilities": {
+      "description": "Capabilities of the remote cache system.",
+      "id": "BuildBazelRemoteExecutionV2CacheCapabilities",
+      "properties": {
+        "actionCacheUpdateCapabilities": {
+          "$ref": "BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities",
+          "description": "Capabilities for updating the action cache."
+        },
+        "cachePriorityCapabilities": {
+          "$ref": "BuildBazelRemoteExecutionV2PriorityCapabilities",
+          "description": "Supported cache priority range for both CAS and ActionCache."
+        },
+        "digestFunction": {
+          "description": "All the digest functions supported by the remote cache.\nRemote cache may support multiple digest functions simultaneously.",
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            ""
+          ],
+          "items": {
+            "enum": [
+              "UNKNOWN",
+              "SHA256",
+              "SHA1",
+              "MD5"
+            ],
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "maxBatchTotalSizeBytes": {
+          "description": "Maximum total size of blobs to be uploaded/downloaded using\nbatch methods. A value of 0 means no limit is set, although\nin practice there will always be a message size limitation\nof the protocol in use, e.g. GRPC.",
+          "format": "int64",
+          "type": "string"
+        },
+        "symlinkAbsolutePathStrategy": {
+          "description": "Whether absolute symlink targets are supported.",
+          "enum": [
+            "UNKNOWN",
+            "DISALLOWED",
+            "ALLOWED"
+          ],
+          "enumDescriptions": [
+            "",
+            "Server will return an INVALID_ARGUMENT on input symlinks with absolute targets.\nIf an action tries to create an output symlink with an absolute target, a\nFAILED_PRECONDITION will be returned.",
+            "Server will allow symlink targets to escape the input root tree, possibly\nresulting in non-hermetic builds."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Command": {
+      "description": "A `Command` is the actual command executed by a worker running an\nAction and specifications of its\nenvironment.\n\nExcept as otherwise required, the environment (such as which system\nlibraries or binaries are available, and what filesystems are mounted where)\nis defined by and specific to the implementation of the remote execution API.",
+      "id": "BuildBazelRemoteExecutionV2Command",
+      "properties": {
+        "arguments": {
+          "description": "The arguments to the command. The first argument must be the path to the\nexecutable, which must be either a relative path, in which case it is\nevaluated with respect to the input root, or an absolute path.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "The environment variables to set when running the program. The worker may\nprovide its own default environment variables; these defaults can be\noverridden using this field. Additional variables can also be specified.\n\nIn order to ensure that equivalent `Command`s always hash to the same\nvalue, the environment variables MUST be lexicographically sorted by name.\nSorting of strings is done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2CommandEnvironmentVariable"
+          },
+          "type": "array"
+        },
+        "outputDirectories": {
+          "description": "A list of the output directories that the client expects to retrieve from\nthe action. Only the contents of the indicated directories (recursively\nincluding the contents of their subdirectories) will be\nreturned, as well as files listed in `output_files`. Other files that may\nbe created during command execution are discarded.\n\nThe paths are relative to the working directory of the action execution.\nThe paths are specified using a single forward slash (`/`) as a path\nseparator, even if the execution platform natively uses a different\nseparator. The path MUST NOT include a trailing slash, nor a leading slash,\nbeing a relative path. The special value of empty string is allowed,\nalthough not recommended, and can be used to capture the entire working\ndirectory tree, including inputs.\n\nIn order to ensure consistent hashing of the same Action, the output paths\nMUST be sorted lexicographically by code point (or, equivalently, by UTF-8\nbytes).\n\nAn output directory cannot be duplicated, be a parent of another output\ndirectory, be a parent of a listed output file, or have the same path as\nany of the listed output files.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "A list of the output files that the client expects to retrieve from the\naction. Only the listed files, as well as directories listed in\n`output_directories`, will be returned to the client as output.\nOther files that may be created during command execution are discarded.\n\nThe paths are relative to the working directory of the action execution.\nThe paths are specified using a single forward slash (`/`) as a path\nseparator, even if the execution platform natively uses a different\nseparator. The path MUST NOT include a trailing slash, nor a leading slash,\nbeing a relative path.\n\nIn order to ensure consistent hashing of the same Action, the output paths\nMUST be sorted lexicographically by code point (or, equivalently, by UTF-8\nbytes).\n\nAn output file cannot be duplicated, be a parent of another output file, be\na child of a listed output directory, or have the same path as any of the\nlisted output directories.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "platform": {
+          "$ref": "BuildBazelRemoteExecutionV2Platform",
+          "description": "The platform requirements for the execution environment. The server MAY\nchoose to execute the action on any worker satisfying the requirements, so\nthe client SHOULD ensure that running the action on any such worker will\nhave the same result."
+        },
+        "workingDirectory": {
+          "description": "The working directory, relative to the input root, for the command to run\nin. It must be a directory which exists in the input tree. If it is left\nempty, then the action is run in the input root.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2CommandEnvironmentVariable": {
+      "description": "An `EnvironmentVariable` is one variable to set in the running program's\nenvironment.",
+      "id": "BuildBazelRemoteExecutionV2CommandEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The variable name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The variable value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Digest": {
+      "description": "A content digest. A digest for a given blob consists of the size of the blob\nand its hash. The hash algorithm to use is defined by the server, but servers\nSHOULD use SHA-256.\n\nThe size is considered to be an integral part of the digest and cannot be\nseparated. That is, even if the `hash` field is correctly specified but\n`size_bytes` is not, the server MUST reject the request.\n\nThe reason for including the size in the digest is as follows: in a great\nmany cases, the server needs to know the size of the blob it is about to work\nwith prior to starting an operation with it, such as flattening Merkle tree\nstructures or streaming it to a worker. Technically, the server could\nimplement a separate metadata store, but this results in a significantly more\ncomplicated implementation as opposed to having the client specify the size\nup-front (or storing the size along with the digest in every message where\ndigests are embedded). This does mean that the API leaks some implementation\ndetails of (what we consider to be) a reasonable server implementation, but\nwe consider this to be a worthwhile tradeoff.\n\nWhen a `Digest` is used to refer to a proto message, it always refers to the\nmessage in binary encoded form. To ensure consistent hashing, clients and\nservers MUST ensure that they serialize messages according to the following\nrules, even if there are alternate valid encodings for the same message.\n- Fields are serialized in tag order.\n- There are no unknown fields.\n- There are no duplicate fields.\n- Fields are serialized according to the default semantics for their type.\n\nMost protocol buffer implementations will always follow these rules when\nserializing, but care should be taken to avoid shortcuts. For instance,\nconcatenating two messages to merge them may produce duplicate fields.",
+      "id": "BuildBazelRemoteExecutionV2Digest",
+      "properties": {
+        "hash": {
+          "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the blob, in bytes.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Directory": {
+      "description": "A `Directory` represents a directory node in a file tree, containing zero or\nmore children FileNodes,\nDirectoryNodes and\nSymlinkNodes.\nEach `Node` contains its name in the directory, either the digest of its\ncontent (either a file blob or a `Directory` proto) or a symlink target, as\nwell as possibly some metadata about the file or directory.\n\nIn order to ensure that two equivalent directory trees hash to the same\nvalue, the following restrictions MUST be obeyed when constructing a\na `Directory`:\n  - Every child in the directory must have a path of exactly one segment.\n    Multiple levels of directory hierarchy may not be collapsed.\n  - Each child in the directory must have a unique path segment (file name).\n  - The files, directories and symlinks in the directory must each be sorted\n    in lexicographical order by path. The path strings must be sorted by code\n    point, equivalently, by UTF-8 bytes.\n\nA `Directory` that obeys the restrictions is said to be in canonical form.\n\nAs an example, the following could be used for a file named `bar` and a\ndirectory named `foo` with an executable file named `baz` (hashes shortened\nfor readability):\n\n```json\n// (Directory proto)\n{\n  files: [\n    {\n      name: \"bar\",\n      digest: {\n        hash: \"4a73bc9d03...\",\n        size: 65534\n      }\n    }\n  ],\n  directories: [\n    {\n      name: \"foo\",\n      digest: {\n        hash: \"4cf2eda940...\",\n        size: 43\n      }\n    }\n  ]\n}\n\n// (Directory proto with hash \"4cf2eda940...\" and size 43)\n{\n  files: [\n    {\n      name: \"baz\",\n      digest: {\n        hash: \"b2c941073e...\",\n        size: 1294,\n      },\n      is_executable: true\n    }\n  ]\n}\n```",
+      "id": "BuildBazelRemoteExecutionV2Directory",
+      "properties": {
+        "directories": {
+          "description": "The subdirectories in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2DirectoryNode"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2FileNode"
+          },
+          "type": "array"
+        },
+        "symlinks": {
+          "description": "The symlinks in the directory.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2SymlinkNode"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2DirectoryNode": {
+      "description": "A `DirectoryNode` represents a child of a\nDirectory which is itself\na `Directory` and its associated metadata.",
+      "id": "BuildBazelRemoteExecutionV2DirectoryNode",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the\nDirectory object\nrepresented. See Digest\nfor information about how to take the digest of a proto message."
+        },
+        "name": {
+          "description": "The name of the directory.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecuteOperationMetadata": {
+      "description": "Metadata about an ongoing\nexecution, which\nwill be contained in the metadata\nfield of the\nOperation.",
+      "id": "BuildBazelRemoteExecutionV2ExecuteOperationMetadata",
+      "properties": {
+        "actionDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the Action\nbeing executed."
+        },
+        "stage": {
+          "enum": [
+            "UNKNOWN",
+            "CACHE_CHECK",
+            "QUEUED",
+            "EXECUTING",
+            "COMPLETED"
+          ],
+          "enumDescriptions": [
+            "",
+            "Checking the result against the cache.",
+            "Currently idle, awaiting a free machine to execute.",
+            "Currently being executed by a worker.",
+            "Finished execution."
+          ],
+          "type": "string"
+        },
+        "stderrStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard error.",
+          "type": "string"
+        },
+        "stdoutStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard output.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecuteRequest": {
+      "description": "A request message for\nExecution.Execute.",
+      "id": "BuildBazelRemoteExecutionV2ExecuteRequest",
+      "properties": {
+        "actionDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the Action to\nexecute."
+        },
+        "executionPolicy": {
+          "$ref": "BuildBazelRemoteExecutionV2ExecutionPolicy",
+          "description": "An optional policy for execution of the action.\nThe server will have a default policy if this is not provided."
+        },
+        "resultsCachePolicy": {
+          "$ref": "BuildBazelRemoteExecutionV2ResultsCachePolicy",
+          "description": "An optional policy for the results of this execution in the remote cache.\nThe server will have a default policy if this is not provided.\nThis may be applied to both the ActionResult and the associated blobs."
+        },
+        "skipCacheLookup": {
+          "description": "If true, the action will be executed anew even if its result was already\npresent in the cache. If false, the result may be served from the\nActionCache.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecuteResponse": {
+      "description": "The response message for\nExecution.Execute,\nwhich will be contained in the response\nfield of the\nOperation.",
+      "id": "BuildBazelRemoteExecutionV2ExecuteResponse",
+      "properties": {
+        "cachedResult": {
+          "description": "True if the result was served from cache, false if it was executed.",
+          "type": "boolean"
+        },
+        "result": {
+          "$ref": "BuildBazelRemoteExecutionV2ActionResult",
+          "description": "The result of the action."
+        },
+        "serverLogs": {
+          "additionalProperties": {
+            "$ref": "BuildBazelRemoteExecutionV2LogFile"
+          },
+          "description": "An optional list of additional log outputs the server wishes to provide. A\nserver can use this to return execution-specific logs however it wishes.\nThis is intended primarily to make it easier for users to debug issues that\nmay be outside of the actual job execution, such as by identifying the\nworker executing the action or by providing logs from the worker's setup\nphase. The keys SHOULD be human readable so that a client can display them\nto a user.",
+          "type": "object"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "If the status has a code other than `OK`, it indicates that the action did\nnot finish execution. For example, if the operation times out during\nexecution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST\nuse this field for errors in execution, rather than the error field on the\n`Operation` object.\n\nIf the status code is other than `OK`, then the result MUST NOT be cached.\nFor an error status, the `result` field is optional; the server may\npopulate the output-, stdout-, and stderr-related fields if it has any\ninformation available, such as the stdout and stderr of a timed-out action."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecutedActionMetadata": {
+      "description": "ExecutedActionMetadata contains details about a completed execution.",
+      "id": "BuildBazelRemoteExecutionV2ExecutedActionMetadata",
+      "properties": {
+        "executionCompletedTimestamp": {
+          "description": "When the worker completed executing the action command.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "executionStartTimestamp": {
+          "description": "When the worker started executing the action command.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "inputFetchCompletedTimestamp": {
+          "description": "When the worker finished fetching action inputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "inputFetchStartTimestamp": {
+          "description": "When the worker started fetching action inputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "outputUploadCompletedTimestamp": {
+          "description": "When the worker finished uploading action outputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "outputUploadStartTimestamp": {
+          "description": "When the worker started uploading action outputs.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "queuedTimestamp": {
+          "description": "When was the action added to the queue.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "worker": {
+          "description": "The name of the worker which ran the execution.",
+          "type": "string"
+        },
+        "workerCompletedTimestamp": {
+          "description": "When the worker completed the action, including all stages.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "workerStartTimestamp": {
+          "description": "When the worker received the action.",
+          "format": "google-datetime",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecutionCapabilities": {
+      "description": "Capabilities of the remote execution system.",
+      "id": "BuildBazelRemoteExecutionV2ExecutionCapabilities",
+      "properties": {
+        "digestFunction": {
+          "description": "Remote execution may only support a single digest function.",
+          "enum": [
+            "UNKNOWN",
+            "SHA256",
+            "SHA1",
+            "MD5"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            ""
+          ],
+          "type": "string"
+        },
+        "execEnabled": {
+          "description": "Whether remote execution is enabled for the particular server/instance.",
+          "type": "boolean"
+        },
+        "executionPriorityCapabilities": {
+          "$ref": "BuildBazelRemoteExecutionV2PriorityCapabilities",
+          "description": "Supported execution priority range."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ExecutionPolicy": {
+      "description": "An `ExecutionPolicy` can be used to control the scheduling of the action.",
+      "id": "BuildBazelRemoteExecutionV2ExecutionPolicy",
+      "properties": {
+        "priority": {
+          "description": "The priority (relative importance) of this action. Generally, a lower value\nmeans that the action should be run sooner than actions having a greater\npriority value, but the interpretation of a given value is server-\ndependent. A priority of 0 means the *default* priority. Priorities may be\npositive or negative, and such actions should run later or sooner than\nactions having the default priority, respectively. The particular semantics\nof this field is up to the server. In particular, every server will have\ntheir own supported range of priorities, and will decide how these map into\nscheduling policy.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2FileNode": {
+      "description": "A `FileNode` represents a single file and associated metadata.",
+      "id": "BuildBazelRemoteExecutionV2FileNode",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "The name of the file.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2FindMissingBlobsRequest": {
+      "description": "A request message for\nContentAddressableStorage.FindMissingBlobs.",
+      "id": "BuildBazelRemoteExecutionV2FindMissingBlobsRequest",
+      "properties": {
+        "blobDigests": {
+          "description": "A list of the blobs to check.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2Digest"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2FindMissingBlobsResponse": {
+      "description": "A response message for\nContentAddressableStorage.FindMissingBlobs.",
+      "id": "BuildBazelRemoteExecutionV2FindMissingBlobsResponse",
+      "properties": {
+        "missingBlobDigests": {
+          "description": "A list of the blobs requested *not* present in the storage.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2Digest"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2GetTreeResponse": {
+      "description": "A response message for\nContentAddressableStorage.GetTree.",
+      "id": "BuildBazelRemoteExecutionV2GetTreeResponse",
+      "properties": {
+        "directories": {
+          "description": "The directories descended from the requested root.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2Directory"
+          },
+          "type": "array"
+        },
+        "nextPageToken": {
+          "description": "If present, signifies that there are more results which the client can\nretrieve by passing this as the page_token in a subsequent\nrequest.\nIf empty, signifies that this is the last page of results.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2LogFile": {
+      "description": "A `LogFile` is a log stored in the CAS.",
+      "id": "BuildBazelRemoteExecutionV2LogFile",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the log contents."
+        },
+        "humanReadable": {
+          "description": "This is a hint as to the purpose of the log, and is set to true if the log\nis human-readable text that can be usefully displayed to a user, and false\notherwise. For instance, if a command-line client wishes to print the\nserver logs to the terminal for a failed action, this allows it to avoid\ndisplaying a binary file.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputDirectory": {
+      "description": "An `OutputDirectory` is the output in an `ActionResult` corresponding to a\ndirectory's full contents rather than a single file.",
+      "id": "BuildBazelRemoteExecutionV2OutputDirectory",
+      "properties": {
+        "path": {
+          "description": "The full path of the directory relative to the working directory. The path\nseparator is a forward slash `/`. Since this is a relative path, it MUST\nNOT begin with a leading forward slash. The empty string value is allowed,\nand it denotes the entire working directory.",
+          "type": "string"
+        },
+        "treeDigest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the encoded\nTree proto containing the\ndirectory's contents."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputFile": {
+      "description": "An `OutputFile` is similar to a\nFileNode, but it is used as an\noutput in an `ActionResult`. It allows a full file path rather than\nonly a name.\n\n`OutputFile` is binary-compatible with `FileNode`.",
+      "id": "BuildBazelRemoteExecutionV2OutputFile",
+      "properties": {
+        "digest": {
+          "$ref": "BuildBazelRemoteExecutionV2Digest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The full path of the file relative to the working directory, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2OutputSymlink": {
+      "description": "An `OutputSymlink` is similar to a\nSymlink, but it is used as an\noutput in an `ActionResult`.\n\n`OutputSymlink` is binary-compatible with `SymlinkNode`.",
+      "id": "BuildBazelRemoteExecutionV2OutputSymlink",
+      "properties": {
+        "path": {
+          "description": "The full path of the symlink relative to the working directory, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        },
+        "target": {
+          "description": "The target path of the symlink. The path separator is a forward slash `/`.\nThe target path can be relative to the parent directory of the symlink or\nit can be an absolute path starting with `/`. Support for absolute paths\ncan be checked using the Capabilities\nAPI. The canonical form forbids the substrings `/./` and `//` in the target\npath. `..` components are allowed anywhere in the target path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Platform": {
+      "description": "A `Platform` is a set of requirements, such as hardware, operating system, or\ncompiler toolchain, for an\nAction's execution\nenvironment. A `Platform` is represented as a series of key-value pairs\nrepresenting the properties that are required of the platform.",
+      "id": "BuildBazelRemoteExecutionV2Platform",
+      "properties": {
+        "properties": {
+          "description": "The properties that make up this platform. In order to ensure that\nequivalent `Platform`s always hash to the same value, the properties MUST\nbe lexicographically sorted by name, and then by value. Sorting of strings\nis done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2PlatformProperty"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2PlatformProperty": {
+      "description": "A single property for the environment. The server is responsible for\nspecifying the property `name`s that it accepts. If an unknown `name` is\nprovided in the requirements for an\nAction, the server SHOULD\nreject the execution request. If permitted by the server, the same `name`\nmay occur multiple times.\n\nThe server is also responsible for specifying the interpretation of\nproperty `value`s. For instance, a property describing how much RAM must be\navailable may be interpreted as allowing a worker with 16GB to fulfill a\nrequest for 8GB, while a property describing the OS environment on which\nthe action must be performed may require an exact match with the worker's\nOS.\n\nThe server MAY use the `value` of one or more properties to determine how\nit sets up the execution environment, such as by making specific system\nfiles available to the worker.",
+      "id": "BuildBazelRemoteExecutionV2PlatformProperty",
+      "properties": {
+        "name": {
+          "description": "The property name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The property value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2PriorityCapabilities": {
+      "description": "Allowed values for priority in\nResultsCachePolicy\nUsed for querying both cache and execution valid priority ranges.",
+      "id": "BuildBazelRemoteExecutionV2PriorityCapabilities",
+      "properties": {
+        "priorities": {
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange": {
+      "description": "Supported range of priorities, including boundaries.",
+      "id": "BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange",
+      "properties": {
+        "maxPriority": {
+          "format": "int32",
+          "type": "integer"
+        },
+        "minPriority": {
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2RequestMetadata": {
+      "description": "An optional Metadata to attach to any RPC request to tell the server about an\nexternal context of the request. The server may use this for logging or other\npurposes. To use it, the client attaches the header to the call using the\ncanonical proto serialization:\nname: build.bazel.remote.execution.v2.requestmetadata-bin\ncontents: the base64 encoded binary RequestMetadata message.",
+      "id": "BuildBazelRemoteExecutionV2RequestMetadata",
+      "properties": {
+        "actionId": {
+          "description": "An identifier that ties multiple requests to the same action.\nFor example, multiple requests to the CAS, Action Cache, and Execution\nAPI are used in order to compile foo.cc.",
+          "type": "string"
+        },
+        "correlatedInvocationsId": {
+          "description": "An identifier to tie multiple tool invocations together. For example,\nruns of foo_test, bar_test and baz_test on a post-submit of a given patch.",
+          "type": "string"
+        },
+        "toolDetails": {
+          "$ref": "BuildBazelRemoteExecutionV2ToolDetails",
+          "description": "The details for the tool invoking the requests."
+        },
+        "toolInvocationId": {
+          "description": "An identifier that ties multiple actions together to a final result.\nFor example, multiple actions are required to build and run foo_test.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ResultsCachePolicy": {
+      "description": "A `ResultsCachePolicy` is used for fine-grained control over how action\noutputs are stored in the CAS and Action Cache.",
+      "id": "BuildBazelRemoteExecutionV2ResultsCachePolicy",
+      "properties": {
+        "priority": {
+          "description": "The priority (relative importance) of this content in the overall cache.\nGenerally, a lower value means a longer retention time or other advantage,\nbut the interpretation of a given value is server-dependent. A priority of\n0 means a *default* value, decided by the server.\n\nThe particular semantics of this field is up to the server. In particular,\nevery server will have their own supported range of priorities, and will\ndecide how these map into retention/eviction policy.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ServerCapabilities": {
+      "description": "A response message for\nCapabilities.GetCapabilities.",
+      "id": "BuildBazelRemoteExecutionV2ServerCapabilities",
+      "properties": {
+        "cacheCapabilities": {
+          "$ref": "BuildBazelRemoteExecutionV2CacheCapabilities",
+          "description": "Capabilities of the remote cache system."
+        },
+        "deprecatedApiVersion": {
+          "$ref": "BuildBazelSemverSemVer",
+          "description": "Earliest RE API version supported, including deprecated versions."
+        },
+        "executionCapabilities": {
+          "$ref": "BuildBazelRemoteExecutionV2ExecutionCapabilities",
+          "description": "Capabilities of the remote execution system."
+        },
+        "highApiVersion": {
+          "$ref": "BuildBazelSemverSemVer",
+          "description": "Latest RE API version supported."
+        },
+        "lowApiVersion": {
+          "$ref": "BuildBazelSemverSemVer",
+          "description": "Earliest non-deprecated RE API version supported."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2SymlinkNode": {
+      "description": "A `SymlinkNode` represents a symbolic link.",
+      "id": "BuildBazelRemoteExecutionV2SymlinkNode",
+      "properties": {
+        "name": {
+          "description": "The name of the symlink.",
+          "type": "string"
+        },
+        "target": {
+          "description": "The target path of the symlink. The path separator is a forward slash `/`.\nThe target path can be relative to the parent directory of the symlink or\nit can be an absolute path starting with `/`. Support for absolute paths\ncan be checked using the Capabilities\nAPI. The canonical form forbids the substrings `/./` and `//` in the target\npath. `..` components are allowed anywhere in the target path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2ToolDetails": {
+      "description": "Details for the tool used to call the API.",
+      "id": "BuildBazelRemoteExecutionV2ToolDetails",
+      "properties": {
+        "toolName": {
+          "description": "Name of the tool, e.g. bazel.",
+          "type": "string"
+        },
+        "toolVersion": {
+          "description": "Version of the tool used for the request, e.g. 5.0.3.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2Tree": {
+      "description": "A `Tree` contains all the\nDirectory protos in a\nsingle directory Merkle tree, compressed into one message.",
+      "id": "BuildBazelRemoteExecutionV2Tree",
+      "properties": {
+        "children": {
+          "description": "All the child directories: the directories referred to by the root and,\nrecursively, all its children. In order to reconstruct the directory tree,\nthe client must take the digests of each of the child directories and then\nbuild up a tree starting from the `root`.",
+          "items": {
+            "$ref": "BuildBazelRemoteExecutionV2Directory"
+          },
+          "type": "array"
+        },
+        "root": {
+          "$ref": "BuildBazelRemoteExecutionV2Directory",
+          "description": "The root directory in the tree."
+        }
+      },
+      "type": "object"
+    },
+    "BuildBazelRemoteExecutionV2WaitExecutionRequest": {
+      "description": "A request message for\nWaitExecution.",
+      "id": "BuildBazelRemoteExecutionV2WaitExecutionRequest",
+      "properties": {},
+      "type": "object"
+    },
+    "BuildBazelSemverSemVer": {
+      "id": "BuildBazelSemverSemVer",
+      "properties": {
+        "major": {
+          "format": "int32",
+          "type": "integer"
+        },
+        "minor": {
+          "format": "int32",
+          "type": "integer"
+        },
+        "patch": {
+          "format": "int32",
+          "type": "integer"
+        },
+        "prerelease": {
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildbotCommandDurations": {
+      "description": "CommandDuration contains the various duration metrics tracked when a bot\nperforms a command.",
+      "id": "GoogleDevtoolsRemotebuildbotCommandDurations",
+      "properties": {
+        "dockerPrep": {
+          "description": "The time spent preparing the command to be run in a Docker container\n(includes pulling the Docker image, if necessary).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "download": {
+          "description": "The time spent downloading the input files and constructing the working\ndirectory.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "execution": {
+          "description": "The time spent executing the command (i.e., doing useful work).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "isoPrepDone": {
+          "description": "The timestamp when preparation is done and bot starts downloading files.",
+          "format": "google-datetime",
+          "type": "string"
+        },
+        "overall": {
+          "description": "The time spent completing the command, in total.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "stdout": {
+          "description": "The time spent uploading the stdout logs.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "upload": {
+          "description": "The time spent uploading the output files.",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildbotCommandEvents": {
+      "description": "CommandEvents contains counters for the number of warnings and errors\nthat occurred during the execution of a command.",
+      "id": "GoogleDevtoolsRemotebuildbotCommandEvents",
+      "properties": {
+        "dockerCacheHit": {
+          "description": "Indicates whether we are using a cached Docker image (true) or had to pull\nthe Docker image (false) for this command.",
+          "type": "boolean"
+        },
+        "numErrors": {
+          "description": "The number of errors reported.",
+          "format": "uint64",
+          "type": "string"
+        },
+        "numWarnings": {
+          "description": "The number of warnings reported.",
+          "format": "uint64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest": {
+      "description": "The request used for `CreateInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest",
+      "properties": {
+        "instance": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance",
+          "description": "Specifies the instance to create.\nThe name in the instance, if specified in the instance, is ignored."
+        },
+        "instanceId": {
+          "description": "ID of the created instance.\nA valid `instance_id` must:\nbe 6-50 characters long,\ncontains only lowercase letters, digits, hyphens and underscores,\nstart with a lowercase letter, and\nend with a lowercase letter or a digit.",
+          "type": "string"
+        },
+        "parent": {
+          "description": "Resource name of the project containing the instance.\nFormat: `projects/[PROJECT_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest": {
+      "description": "The request used for `CreateWorkerPool`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the instance in which to create the new worker pool.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        },
+        "poolId": {
+          "description": "ID of the created worker pool.\nA valid pool ID must:\nbe 6-50 characters long,\ncontain only lowercase letters, digits, hyphens and underscores,\nstart with a lowercase letter, and\nend with a lowercase letter or a digit.",
+          "type": "string"
+        },
+        "workerPool": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+          "description": "Specifies the worker pool to create.\nThe name in the worker pool, if specified, is ignored."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest": {
+      "description": "The request used for `DeleteInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the instance to delete.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest": {
+      "description": "The request used for DeleteWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the worker pool to delete.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest": {
+      "description": "The request used for `GetInstance`.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the instance to retrieve.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest": {
+      "description": "The request used for GetWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest",
+      "properties": {
+        "name": {
+          "description": "Name of the worker pool to retrieve.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance": {
+      "description": "Instance conceptually encapsulates all Remote Build Execution resources\nfor remote builds.\nAn instance consists of storage and compute resources (for example,\n`ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for\nrunning remote builds.\nAll Remote Build Execution API calls are scoped to an instance.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance",
+      "properties": {
+        "location": {
+          "description": "The location is a GCP region. Currently only `us-central1` is supported.",
+          "type": "string"
+        },
+        "name": {
+          "description": "Output only. Instance resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.\nName should not be populated when creating an instance since it is provided\nin the `instance_id` field.",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. State of the instance.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "CREATING",
+            "RUNNING",
+            "INACTIVE"
+          ],
+          "enumDescriptions": [
+            "Not a valid state, but the default value of the enum.",
+            "The instance is in state `CREATING` once `CreateInstance` is called and\nbefore the instance is ready for use.",
+            "The instance is in state `RUNNING` when it is ready for use.",
+            "An `INACTIVE` instance indicates that there is a problem that needs to be\nfixed. Such instances cannot be used for execution and instances that\nremain in this state for a significant period of time will be removed\npermanently."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the project.\nFormat: `projects/[PROJECT_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse",
+      "properties": {
+        "instances": {
+          "description": "The list of instances in a given project.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest",
+      "properties": {
+        "parent": {
+          "description": "Resource name of the instance.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse": {
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse",
+      "properties": {
+        "workerPools": {
+          "description": "The list of worker pools in a given instance.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest": {
+      "description": "The request used for UpdateWorkerPool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest",
+      "properties": {
+        "updateMask": {
+          "description": "The update mask applies to worker_pool. For the `FieldMask` definition,\nsee https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask\nIf an empty update_mask is provided, only the non-default valued field in\nthe worker pool field will be updated. Note that in order to update a field\nto the default value (zero, false, empty string) an explicit update_mask\nmust be provided.",
+          "format": "google-fieldmask",
+          "type": "string"
+        },
+        "workerPool": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+          "description": "Specifies the worker pool to update."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig": {
+      "description": "Defines the configuration to be used for a creating workers in\nthe worker pool.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
+      "properties": {
+        "diskSizeGb": {
+          "description": "Required. Size of the disk attached to the worker, in GB.\nSee https://cloud.google.com/compute/docs/disks/",
+          "format": "int64",
+          "type": "string"
+        },
+        "diskType": {
+          "description": "Required. Disk Type to use for the worker.\nSee [Storage options](https://cloud.google.com/compute/docs/disks/#introduction).\nCurrently only `pd-standard` is supported.",
+          "type": "string"
+        },
+        "machineType": {
+          "description": "Required. Machine type of the worker, such as n1-standard-2.\nSee https://cloud.google.com/compute/docs/machine-types for a list of\nsupported machine types.",
+          "type": "string"
+        },
+        "minCpuPlatform": {
+          "description": "Minimum CPU platform to use when creating the worker.\nSee [CPU Platforms](https://cloud.google.com/compute/docs/cpu-platforms).",
+          "type": "string"
+        },
+        "reserved": {
+          "description": "Output only. `reserved=true` means the worker is reserved and won't be\npreempted.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool": {
+      "description": "A worker pool resource in the Remote Build Execution API.",
+      "id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
+      "properties": {
+        "name": {
+          "description": "WorkerPool resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.\nname should not be populated when creating a worker pool since it is\nprovided in the `poolId` field.",
+          "type": "string"
+        },
+        "state": {
+          "description": "Output only. State of the worker pool.",
+          "enum": [
+            "STATE_UNSPECIFIED",
+            "CREATING",
+            "RUNNING",
+            "UPDATING",
+            "DELETING",
+            "INACTIVE"
+          ],
+          "enumDescriptions": [
+            "Not a valid state, but the default value of the enum.",
+            "The worker pool is in state `CREATING` once `CreateWorkerPool` is called\nand before all requested workers are ready.",
+            "The worker pool is in state `RUNNING` when all its workers are ready for\nuse.",
+            "The worker pool is in state `UPDATING` once `UpdateWorkerPool` is called\nand before the new configuration has all the requested workers ready for\nuse, and no older configuration has any workers. At that point the state\ntransitions to `RUNNING`.",
+            "The worker pool is in state `DELETING` once the `Delete` method is called\nand before the deletion completes.",
+            "The worker pool is in state `INACTIVE` when the instance hosting the\nworker pool in not running."
+          ],
+          "type": "string"
+        },
+        "workerConfig": {
+          "$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
+          "description": "Specifies the properties, such as machine type and disk size, used for\ncreating workers in a worker pool."
+        },
+        "workerCount": {
+          "description": "The desired number of workers in the worker pool. Must be a value between\n0 and 1000.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testActionResult": {
+      "description": "An ActionResult represents the result of an\nAction being run.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testActionResult",
+      "properties": {
+        "exitCode": {
+          "description": "The exit code of the command.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputDirectories": {
+          "description": "The output directories of the action. For each output directory requested\nin the `output_directories` field of the Action, if the corresponding\ndirectory existed after the action completed, a single entry will be\npresent in the output list, which will contain the digest of\na Tree message containing\nthe directory tree, and the path equal exactly to the corresponding Action\noutput_directories member.\nAs an example, suppose the Action had an output directory `a/b/dir` and the\nexecution produced the following contents in `a/b/dir`: a file named `bar`\nand a directory named `foo` with an executable file named `baz`. Then,\noutput_directory will contain (hashes shortened for readability):\n\n```json\n// OutputDirectory proto:\n{\n  path: \"a/b/dir\"\n  tree_digest: {\n    hash: \"4a73bc9d03...\",\n    size: 55\n  }\n}\n// Tree proto with hash \"4a73bc9d03...\" and size 55:\n{\n  root: {\n    files: [\n      {\n        name: \"bar\",\n        digest: {\n          hash: \"4a73bc9d03...\",\n          size: 65534\n        }\n      }\n    ],\n    directories: [\n      {\n        name: \"foo\",\n        digest: {\n          hash: \"4cf2eda940...\",\n          size: 43\n        }\n      }\n    ]\n  }\n  children : {\n    // (Directory proto with hash \"4cf2eda940...\" and size 43)\n    files: [\n      {\n        name: \"baz\",\n        digest: {\n          hash: \"b2c941073e...\",\n          size: 1294,\n        },\n        is_executable: true\n      }\n    ]\n  }\n}\n```",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testOutputDirectory"
+          },
+          "type": "array"
+        },
+        "outputFiles": {
+          "description": "The output files of the action. For each output file requested in the\n`output_files` field of the Action, if the corresponding file existed after\nthe action completed, a single entry will be present in the output list.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testOutputFile"
+          },
+          "type": "array"
+        },
+        "stderrDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest for a blob containing the standard error of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stderr_raw` for when this will be set."
+        },
+        "stderrRaw": {
+          "description": "The standard error buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stderr_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        },
+        "stdoutDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest for a blob containing the standard output of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stdout_raw` for when this will be set."
+        },
+        "stdoutRaw": {
+          "description": "The standard output buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stdout_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
+          "format": "byte",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testCommand": {
+      "description": "A `Command` is the actual command executed by a worker running an\nAction.\n\nExcept as otherwise required, the environment (such as which system\nlibraries or binaries are available, and what filesystems are mounted where)\nis defined by and specific to the implementation of the remote execution API.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testCommand",
+      "properties": {
+        "arguments": {
+          "description": "The arguments to the command. The first argument must be the path to the\nexecutable, which must be either a relative path, in which case it is\nevaluated with respect to the input root, or an absolute path.\n\nThe working directory will always be the input root.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "The environment variables to set when running the program. The worker may\nprovide its own default environment variables; these defaults can be\noverridden using this field. Additional variables can also be specified.\n\nIn order to ensure that equivalent `Command`s always hash to the same\nvalue, the environment variables MUST be lexicographically sorted by name.\nSorting of strings is done by code point, equivalently, by the UTF-8 bytes.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable": {
+      "description": "An `EnvironmentVariable` is one variable to set in the running program's\nenvironment.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The variable name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The variable value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDigest": {
+      "description": "A content digest. A digest for a given blob consists of the size of the blob\nand its hash. The hash algorithm to use is defined by the server, but servers\nSHOULD use SHA-256.\n\nThe size is considered to be an integral part of the digest and cannot be\nseparated. That is, even if the `hash` field is correctly specified but\n`size_bytes` is not, the server MUST reject the request.\n\nThe reason for including the size in the digest is as follows: in a great\nmany cases, the server needs to know the size of the blob it is about to work\nwith prior to starting an operation with it, such as flattening Merkle tree\nstructures or streaming it to a worker. Technically, the server could\nimplement a separate metadata store, but this results in a significantly more\ncomplicated implementation as opposed to having the client specify the size\nup-front (or storing the size along with the digest in every message where\ndigests are embedded). This does mean that the API leaks some implementation\ndetails of (what we consider to be) a reasonable server implementation, but\nwe consider this to be a worthwhile tradeoff.\n\nWhen a `Digest` is used to refer to a proto message, it always refers to the\nmessage in binary encoded form. To ensure consistent hashing, clients and\nservers MUST ensure that they serialize messages according to the following\nrules, even if there are alternate valid encodings for the same message.\n- Fields are serialized in tag order.\n- There are no unknown fields.\n- There are no duplicate fields.\n- Fields are serialized according to the default semantics for their type.\n\nMost protocol buffer implementations will always follow these rules when\nserializing, but care should be taken to avoid shortcuts. For instance,\nconcatenating two messages to merge them may produce duplicate fields.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDigest",
+      "properties": {
+        "hash": {
+          "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the blob, in bytes.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDirectory": {
+      "description": "A `Directory` represents a directory node in a file tree, containing zero or\nmore children FileNodes\nand DirectoryNodes.\nEach `Node` contains its name in the directory, the digest of its content\n(either a file blob or a `Directory` proto), as well as possibly some\nmetadata about the file or directory.\n\nIn order to ensure that two equivalent directory trees hash to the same\nvalue, the following restrictions MUST be obeyed when constructing a\na `Directory`:\n  - Every child in the directory must have a path of exactly one segment.\n    Multiple levels of directory hierarchy may not be collapsed.\n  - Each child in the directory must have a unique path segment (file name).\n  - The files and directories in the directory must each be sorted in\n    lexicographical order by path. The path strings must be sorted by code\n    point, equivalently, by UTF-8 bytes.\n\nA `Directory` that obeys the restrictions is said to be in canonical form.\n\nAs an example, the following could be used for a file named `bar` and a\ndirectory named `foo` with an executable file named `baz` (hashes shortened\nfor readability):\n\n```json\n// (Directory proto)\n{\n  files: [\n    {\n      name: \"bar\",\n      digest: {\n        hash: \"4a73bc9d03...\",\n        size: 65534\n      }\n    }\n  ],\n  directories: [\n    {\n      name: \"foo\",\n      digest: {\n        hash: \"4cf2eda940...\",\n        size: 43\n      }\n    }\n  ]\n}\n\n// (Directory proto with hash \"4cf2eda940...\" and size 43)\n{\n  files: [\n    {\n      name: \"baz\",\n      digest: {\n        hash: \"b2c941073e...\",\n        size: 1294,\n      },\n      is_executable: true\n    }\n  ]\n}\n```",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDirectory",
+      "properties": {
+        "directories": {
+          "description": "The subdirectories in the directory.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectoryNode"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in the directory.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testFileNode"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testDirectoryNode": {
+      "description": "A `DirectoryNode` represents a child of a\nDirectory which is itself\na `Directory` and its associated metadata.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testDirectoryNode",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the\nDirectory object\nrepresented. See Digest\nfor information about how to take the digest of a proto message."
+        },
+        "name": {
+          "description": "The name of the directory.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata": {
+      "description": "Metadata about an ongoing\nexecution, which\nwill be contained in the metadata\nfield of the\nOperation.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata",
+      "properties": {
+        "actionDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the Action\nbeing executed."
+        },
+        "stage": {
+          "enum": [
+            "UNKNOWN",
+            "CACHE_CHECK",
+            "QUEUED",
+            "EXECUTING",
+            "COMPLETED"
+          ],
+          "enumDescriptions": [
+            "",
+            "Checking the result against the cache.",
+            "Currently idle, awaiting a free machine to execute.",
+            "Currently being executed by a worker.",
+            "Finished execution."
+          ],
+          "type": "string"
+        },
+        "stderrStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard error.",
+          "type": "string"
+        },
+        "stdoutStreamName": {
+          "description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard output.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testExecuteResponse": {
+      "description": "The response message for\nExecution.Execute,\nwhich will be contained in the response\nfield of the\nOperation.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testExecuteResponse",
+      "properties": {
+        "cachedResult": {
+          "description": "True if the result was served from cache, false if it was executed.",
+          "type": "boolean"
+        },
+        "result": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testActionResult",
+          "description": "The result of the action."
+        },
+        "serverLogs": {
+          "additionalProperties": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testLogFile"
+          },
+          "description": "An optional list of additional log outputs the server wishes to provide. A\nserver can use this to return execution-specific logs however it wishes.\nThis is intended primarily to make it easier for users to debug issues that\nmay be outside of the actual job execution, such as by identifying the\nworker executing the action or by providing logs from the worker's setup\nphase. The keys SHOULD be human readable so that a client can display them\nto a user.",
+          "type": "object"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "If the status has a code other than `OK`, it indicates that the action did\nnot finish execution. For example, if the operation times out during\nexecution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST\nuse this field for errors in execution, rather than the error field on the\n`Operation` object.\n\nIf the status code is other than `OK`, then the result MUST NOT be cached.\nFor an error status, the `result` field is optional; the server may\npopulate the output-, stdout-, and stderr-related fields if it has any\ninformation available, such as the stdout and stderr of a timed-out action."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testFileNode": {
+      "description": "A `FileNode` represents a single file and associated metadata.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testFileNode",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "name": {
+          "description": "The name of the file.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testLogFile": {
+      "description": "A `LogFile` is a log stored in the CAS.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testLogFile",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the log contents."
+        },
+        "humanReadable": {
+          "description": "This is a hint as to the purpose of the log, and is set to true if the log\nis human-readable text that can be usefully displayed to a user, and false\notherwise. For instance, if a command-line client wishes to print the\nserver logs to the terminal for a failed action, this allows it to avoid\ndisplaying a binary file.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testOutputDirectory": {
+      "description": "An `OutputDirectory` is the output in an `ActionResult` corresponding to a\ndirectory's full contents rather than a single file.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testOutputDirectory",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "DEPRECATED: This field is deprecated and should no longer be used."
+        },
+        "path": {
+          "description": "The full path of the directory relative to the working directory. The path\nseparator is a forward slash `/`. Since this is a relative path, it MUST\nNOT begin with a leading forward slash. The empty string value is allowed,\nand it denotes the entire working directory.",
+          "type": "string"
+        },
+        "treeDigest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the encoded\nTree proto containing the\ndirectory's contents."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testOutputFile": {
+      "description": "An `OutputFile` is similar to a\nFileNode, but it is\ntailored for output as part of an `ActionResult`. It allows a full file path\nrather than only a name, and allows the server to include content inline.\n\n`OutputFile` is binary-compatible with `FileNode`.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testOutputFile",
+      "properties": {
+        "content": {
+          "description": "The raw content of the file.\n\nThis field may be used by the server to provide the content of a file\ninline in an\nActionResult and\navoid requiring that the client make a separate call to\n[ContentAddressableStorage.GetBlob] to retrieve it.\n\nThe client SHOULD NOT assume that it will get raw content with any request,\nand always be prepared to retrieve it via `digest`.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
+          "description": "The digest of the file's content."
+        },
+        "isExecutable": {
+          "description": "True if file is executable, false otherwise.",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The full path of the file relative to the input root, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testRequestMetadata": {
+      "description": "An optional Metadata to attach to any RPC request to tell the server about an\nexternal context of the request. The server may use this for logging or other\npurposes. To use it, the client attaches the header to the call using the\ncanonical proto serialization:\nname: google.devtools.remoteexecution.v1test.requestmetadata-bin\ncontents: the base64 encoded binary RequestMetadata message.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testRequestMetadata",
+      "properties": {
+        "actionId": {
+          "description": "An identifier that ties multiple requests to the same action.\nFor example, multiple requests to the CAS, Action Cache, and Execution\nAPI are used in order to compile foo.cc.",
+          "type": "string"
+        },
+        "correlatedInvocationsId": {
+          "description": "An identifier to tie multiple tool invocations together. For example,\nruns of foo_test, bar_test and baz_test on a post-submit of a given patch.",
+          "type": "string"
+        },
+        "toolDetails": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testToolDetails",
+          "description": "The details for the tool invoking the requests."
+        },
+        "toolInvocationId": {
+          "description": "An identifier that ties multiple actions together to a final result.\nFor example, multiple actions are required to build and run foo_test.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testToolDetails": {
+      "description": "Details for the tool used to call the API.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testToolDetails",
+      "properties": {
+        "toolName": {
+          "description": "Name of the tool, e.g. bazel.",
+          "type": "string"
+        },
+        "toolVersion": {
+          "description": "Version of the tool used for the request, e.g. 5.0.3.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteexecutionV1testTree": {
+      "description": "A `Tree` contains all the\nDirectory protos in a\nsingle directory Merkle tree, compressed into one message.",
+      "id": "GoogleDevtoolsRemoteexecutionV1testTree",
+      "properties": {
+        "children": {
+          "description": "All the child directories: the directories referred to by the root and,\nrecursively, all its children. In order to reconstruct the directory tree,\nthe client must take the digests of each of the child directories and then\nbuild up a tree starting from the `root`.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectory"
+          },
+          "type": "array"
+        },
+        "root": {
+          "$ref": "GoogleDevtoolsRemoteexecutionV1testDirectory",
+          "description": "The root directory in the tree."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2AdminTemp": {
+      "description": "AdminTemp is a prelimiary set of administration tasks. It's called \"Temp\"\nbecause we do not yet know the best way to represent admin tasks; it's\npossible that this will be entirely replaced in later versions of this API.\nIf this message proves to be sufficient, it will be renamed in the alpha or\nbeta release of this API.\n\nThis message (suitably marshalled into a protobuf.Any) can be used as the\ninline_assignment field in a lease; the lease assignment field should simply\nbe `\"admin\"` in these cases.\n\nThis message is heavily based on Swarming administration tasks from the LUCI\nproject (http://github.com/luci/luci-py/appengine/swarming).",
+      "id": "GoogleDevtoolsRemoteworkersV1test2AdminTemp",
+      "properties": {
+        "arg": {
+          "description": "The argument to the admin action; see `Command` for semantics.",
+          "type": "string"
+        },
+        "command": {
+          "description": "The admin action; see `Command` for legal values.",
+          "enum": [
+            "UNSPECIFIED",
+            "BOT_UPDATE",
+            "BOT_RESTART",
+            "BOT_TERMINATE",
+            "HOST_RESTART"
+          ],
+          "enumDescriptions": [
+            "Illegal value.",
+            "Download and run a new version of the bot. `arg` will be a resource\naccessible via `ByteStream.Read` to obtain the new bot code.",
+            "Restart the bot without downloading a new version. `arg` will be a\nmessage to log.",
+            "Shut down the bot. `arg` will be a task resource name (similar to those\nin tasks.proto) that the bot can use to tell the server that it is\nterminating.",
+            "Restart the host computer. `arg` will be a message to log."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Blob": {
+      "description": "Describes a blob of binary content with its digest.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Blob",
+      "properties": {
+        "contents": {
+          "description": "The contents of the blob.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The digest of the blob. This should be verified by the receiver."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandOutputs": {
+      "description": "DEPRECATED - use CommandResult instead.\nDescribes the actual outputs from the task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandOutputs",
+      "properties": {
+        "exitCode": {
+          "description": "exit_code is only fully reliable if the status' code is OK. If the task\nexceeded its deadline or was cancelled, the process may still produce an\nexit code as it is cancelled, and this will be populated, but a successful\n(zero) is unlikely to be correct unless the status code is OK.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The output files. The blob referenced by the digest should contain\none of the following (implementation-dependent):\n   * A marshalled DirectoryMetadata of the returned filesystem\n   * A LUCI-style .isolated file"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandOverhead": {
+      "description": "DEPRECATED - use CommandResult instead.\nCan be used as part of CompleteRequest.metadata, or are part of a more\nsophisticated message.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandOverhead",
+      "properties": {
+        "duration": {
+          "description": "The elapsed time between calling Accept and Complete. The server will also\nhave its own idea of what this should be, but this excludes the overhead of\nthe RPCs and the bot response time.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "overhead": {
+          "description": "The amount of time *not* spent executing the command (ie\nuploading/downloading files).",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandResult": {
+      "description": "All information about the execution of a command, suitable for providing as\nthe Bots interface's `Lease.result` field.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandResult",
+      "properties": {
+        "duration": {
+          "description": "The elapsed time between calling Accept and Complete. The server will also\nhave its own idea of what this should be, but this excludes the overhead of\nthe RPCs and the bot response time.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "exitCode": {
+          "description": "The exit code of the process. An exit code of \"0\" should only be trusted if\n`status` has a code of OK (otherwise it may simply be unset).",
+          "format": "int32",
+          "type": "integer"
+        },
+        "outputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "The output files. The blob referenced by the digest should contain\none of the following (implementation-dependent):\n   * A marshalled DirectoryMetadata of the returned filesystem\n   * A LUCI-style .isolated file"
+        },
+        "overhead": {
+          "description": "The amount of time *not* spent executing the command (ie\nuploading/downloading files).",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "statistics": {
+          "description": "Implementation-dependent statistics about the task. Both servers and bots\nmay define messages which can be encoded here; bots are free to provide\nstatistics in multiple formats, and servers are free to choose one or more\nof the values to process and ignore others. In particular, it is *not*\nconsidered an error for the bot to provide the server with a field that it\ndoesn't know about.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "status": {
+          "$ref": "GoogleRpcStatus",
+          "description": "An overall status for the command. For example, if the command timed out,\nthis might have a code of DEADLINE_EXCEEDED; if it was killed by the OS for\nmemory exhaustion, it might have a code of RESOURCE_EXHAUSTED."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTask": {
+      "description": "Describes a shell-style task to execute, suitable for providing as the Bots\ninterface's `Lease.payload` field.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTask",
+      "properties": {
+        "expectedOutputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs",
+          "description": "The expected outputs from the task."
+        },
+        "inputs": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs",
+          "description": "The inputs to the task."
+        },
+        "timeouts": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts",
+          "description": "The timeouts of this task."
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs": {
+      "description": "Describes the inputs to a shell-style task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs",
+      "properties": {
+        "arguments": {
+          "description": "The command itself to run (e.g., argv).\n\nThis field should be passed directly to the underlying operating system,\nand so it must be sensible to that operating system. For example, on\nWindows, the first argument might be \"C:\\Windows\\System32\\ping.exe\" -\nthat is, using drive letters and backslashes. A command for a *nix\nsystem, on the other hand, would use forward slashes.\n\nAll other fields in the RWAPI must consistently use forward slashes,\nsince those fields may be interpretted by both the service and the bot.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "environmentVariables": {
+          "description": "All environment variables required by the task.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The input filesystem to be set up prior to the task beginning. The\ncontents should be a repeated set of FileMetadata messages though other\nformats are allowed if better for the implementation (eg, a LUCI-style\n.isolated file).\n\nThis field is repeated since implementations might want to cache the\nmetadata, in which case it may be useful to break up portions of the\nfilesystem that change frequently (eg, specific input files) from those\nthat don't (eg, standard header files).",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest"
+          },
+          "type": "array"
+        },
+        "inlineBlobs": {
+          "description": "Inline contents for blobs expected to be needed by the bot to execute the\ntask. For example, contents of entries in `files` or blobs that are\nindirectly referenced by an entry there.\n\nThe bot should check against this list before downloading required task\ninputs to reduce the number of communications between itself and the\nremote CAS server.",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2Blob"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable": {
+      "description": "An environment variable required by this task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable",
+      "properties": {
+        "name": {
+          "description": "The envvar name.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The envvar value.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs": {
+      "description": "Describes the expected outputs of the command.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs",
+      "properties": {
+        "directories": {
+          "description": "A list of expected directories, relative to the execution root. All paths\nMUST be delimited by forward slashes.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "A list of expected files, relative to the execution root. All paths\nMUST be delimited by forward slashes.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "stderrDestination": {
+          "description": "The destination to which any stderr should be sent. The method by which\nthe bot should send the stream contents to that destination is not\ndefined in this API. As examples, the destination could be a file\nreferenced in the `files` field in this message, or it could be a URI\nthat must be written via the ByteStream API.",
+          "type": "string"
+        },
+        "stdoutDestination": {
+          "description": "The destination to which any stdout should be sent. The method by which\nthe bot should send the stream contents to that destination is not\ndefined in this API. As examples, the destination could be a file\nreferenced in the `files` field in this message, or it could be a URI\nthat must be written via the ByteStream API.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts": {
+      "description": "Describes the timeouts associated with this task.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts",
+      "properties": {
+        "execution": {
+          "description": "This specifies the maximum time that the task can run, excluding the\ntime required to download inputs or upload outputs. That is, the worker\nwill terminate the task if it runs longer than this.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "idle": {
+          "description": "This specifies the maximum amount of time the task can be idle - that is,\ngo without generating some output in either stdout or stderr. If the\nprocess is silent for more than the specified time, the worker will\nterminate the task.",
+          "format": "google-duration",
+          "type": "string"
+        },
+        "shutdown": {
+          "description": "If the execution or IO timeouts are exceeded, the worker will try to\ngracefully terminate the task and return any existing logs. However,\ntasks may be hard-frozen in which case this process will fail. This\ntimeout specifies how long to wait for a terminated task to shut down\ngracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.\nSIGKILL on *nix, CTRL_BREAK_EVENT on Windows).",
+          "format": "google-duration",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Digest": {
+      "description": "The CommandTask and CommandResult messages assume the existence of a service\nthat can serve blobs of content, identified by a hash and size known as a\n\"digest.\" The method by which these blobs may be retrieved is not specified\nhere, but a model implementation is in the Remote Execution API's\n\"ContentAddressibleStorage\" interface.\n\nIn the context of the RWAPI, a Digest will virtually always refer to the\ncontents of a file or a directory. The latter is represented by the\nbyte-encoded Directory message.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Digest",
+      "properties": {
+        "hash": {
+          "description": "A string-encoded hash (eg \"1a2b3c\", not the byte array [0x1a, 0x2b, 0x3c])\nusing an implementation-defined hash algorithm (eg SHA-256).",
+          "type": "string"
+        },
+        "sizeBytes": {
+          "description": "The size of the contents. While this is not strictly required as part of an\nidentifier (after all, any given hash will have exactly one canonical\nsize), it's useful in almost all cases when one might want to send or\nretrieve blobs of content and is included here for this reason.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2Directory": {
+      "description": "The contents of a directory. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2Directory",
+      "properties": {
+        "directories": {
+          "description": "Any subdirectories",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata"
+          },
+          "type": "array"
+        },
+        "files": {
+          "description": "The files in this directory",
+          "items": {
+            "$ref": "GoogleDevtoolsRemoteworkersV1test2FileMetadata"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata": {
+      "description": "The metadata for a directory. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata",
+      "properties": {
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "A pointer to the contents of the directory, in the form of a marshalled\nDirectory message."
+        },
+        "path": {
+          "description": "The path of the directory, as in FileMetadata.path.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleDevtoolsRemoteworkersV1test2FileMetadata": {
+      "description": "The metadata for a file. Similar to the equivalent message in the Remote\nExecution API.",
+      "id": "GoogleDevtoolsRemoteworkersV1test2FileMetadata",
+      "properties": {
+        "contents": {
+          "description": "If the file is small enough, its contents may also or alternatively be\nlisted here.",
+          "format": "byte",
+          "type": "string"
+        },
+        "digest": {
+          "$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
+          "description": "A pointer to the contents of the file. The method by which a client\nretrieves the contents from a CAS system is not defined here."
+        },
+        "isExecutable": {
+          "description": "Properties of the file",
+          "type": "boolean"
+        },
+        "path": {
+          "description": "The path of this file. If this message is part of the\nCommandOutputs.outputs fields, the path is relative to the execution root\nand must correspond to an entry in CommandTask.outputs.files. If this\nmessage is part of a Directory message, then the path is relative to the\nroot of that directory. All paths MUST be delimited by forward slashes.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleLongrunningOperation": {
+      "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
+      "id": "GoogleLongrunningOperation",
+      "properties": {
+        "done": {
+          "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
+          "type": "boolean"
+        },
+        "error": {
+          "$ref": "GoogleRpcStatus",
+          "description": "The error result of the operation in case of failure or cancellation."
+        },
+        "metadata": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "Service-specific metadata associated with the operation.  It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata.  Any method that returns a\nlong-running operation should document the metadata type, if any.",
+          "type": "object"
+        },
+        "name": {
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "type": "string"
+        },
+        "response": {
+          "additionalProperties": {
+            "description": "Properties of the object. Contains field @type with type URL.",
+            "type": "any"
+          },
+          "description": "The normal response of the operation in case of success.  If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`.  If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource.  For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name.  For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "GoogleRpcStatus": {
+      "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "id": "GoogleRpcStatus",
+      "properties": {
+        "code": {
+          "description": "The status code, which should be an enum value of google.rpc.Code.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "details": {
+          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use.",
+          "items": {
+            "additionalProperties": {
+              "description": "Properties of the object. Contains field @type with type URL.",
+              "type": "any"
+            },
+            "type": "object"
+          },
+          "type": "array"
+        },
+        "message": {
+          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    }
+  },
+  "servicePath": "",
+  "title": "Remote Build Execution API",
+  "version": "v2",
+  "version_module": true
+}
\ No newline at end of file
diff --git a/remotebuildexecution/v2/remotebuildexecution-gen.go b/remotebuildexecution/v2/remotebuildexecution-gen.go
new file mode 100644
index 0000000..2cbc3a4
--- /dev/null
+++ b/remotebuildexecution/v2/remotebuildexecution-gen.go
@@ -0,0 +1,6340 @@
+// Copyright 2019 Google Inc. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Code generated file. DO NOT EDIT.
+
+// Package remotebuildexecution provides access to the Remote Build Execution API.
+//
+// See https://cloud.google.com/remote-build-execution/docs/
+//
+// Usage example:
+//
+//   import "google.golang.org/api/remotebuildexecution/v2"
+//   ...
+//   remotebuildexecutionService, err := remotebuildexecution.New(oauthHttpClient)
+package remotebuildexecution // import "google.golang.org/api/remotebuildexecution/v2"
+
+import (
+	"bytes"
+	"context"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"net/http"
+	"net/url"
+	"strconv"
+	"strings"
+
+	gensupport "google.golang.org/api/gensupport"
+	googleapi "google.golang.org/api/googleapi"
+)
+
+// Always reference these packages, just in case the auto-generated code
+// below doesn't.
+var _ = bytes.NewBuffer
+var _ = strconv.Itoa
+var _ = fmt.Sprintf
+var _ = json.NewDecoder
+var _ = io.Copy
+var _ = url.Parse
+var _ = gensupport.MarshalJSON
+var _ = googleapi.Version
+var _ = errors.New
+var _ = strings.Replace
+var _ = context.Canceled
+
+const apiId = "remotebuildexecution:v2"
+const apiName = "remotebuildexecution"
+const apiVersion = "v2"
+const basePath = "https://remotebuildexecution.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"
+)
+
+func New(client *http.Client) (*Service, error) {
+	if client == nil {
+		return nil, errors.New("client is nil")
+	}
+	s := &Service{client: client, BasePath: basePath}
+	s.ActionResults = NewActionResultsService(s)
+	s.Actions = NewActionsService(s)
+	s.Blobs = NewBlobsService(s)
+	s.Operations = NewOperationsService(s)
+	s.V2 = NewV2Service(s)
+	return s, nil
+}
+
+type Service struct {
+	client    *http.Client
+	BasePath  string // API endpoint base URL
+	UserAgent string // optional additional User-Agent fragment
+
+	ActionResults *ActionResultsService
+
+	Actions *ActionsService
+
+	Blobs *BlobsService
+
+	Operations *OperationsService
+
+	V2 *V2Service
+}
+
+func (s *Service) userAgent() string {
+	if s.UserAgent == "" {
+		return googleapi.UserAgent
+	}
+	return googleapi.UserAgent + " " + s.UserAgent
+}
+
+func NewActionResultsService(s *Service) *ActionResultsService {
+	rs := &ActionResultsService{s: s}
+	return rs
+}
+
+type ActionResultsService struct {
+	s *Service
+}
+
+func NewActionsService(s *Service) *ActionsService {
+	rs := &ActionsService{s: s}
+	return rs
+}
+
+type ActionsService struct {
+	s *Service
+}
+
+func NewBlobsService(s *Service) *BlobsService {
+	rs := &BlobsService{s: s}
+	return rs
+}
+
+type BlobsService struct {
+	s *Service
+}
+
+func NewOperationsService(s *Service) *OperationsService {
+	rs := &OperationsService{s: s}
+	return rs
+}
+
+type OperationsService struct {
+	s *Service
+}
+
+func NewV2Service(s *Service) *V2Service {
+	rs := &V2Service{s: s}
+	return rs
+}
+
+type V2Service struct {
+	s *Service
+}
+
+// BuildBazelRemoteExecutionV2Action: An `Action` captures all the
+// information about an execution which is required
+// to reproduce it.
+//
+// `Action`s are the core component of the [Execution] service. A
+// single
+// `Action` represents a repeatable action that can be performed by
+// the
+// execution service. `Action`s can be succinctly identified by the
+// digest of
+// their wire format encoding and, once an `Action` has been executed,
+// will be
+// cached in the action cache. Future requests can then use the cached
+// result
+// rather than needing to run afresh.
+//
+// When a server completes execution of an
+// Action, it MAY choose to
+// cache the result in
+// the ActionCache unless
+// `do_not_cache` is `true`. Clients SHOULD expect the server to do so.
+// By
+// default, future calls to
+// Execute the same
+// `Action` will also serve their results from the cache. Clients must
+// take care
+// to understand the caching behaviour. Ideally, all `Action`s will
+// be
+// reproducible so that serving a result from cache is always desirable
+// and
+// correct.
+type BuildBazelRemoteExecutionV2Action struct {
+	// CommandDigest: The digest of the Command
+	// to run, which MUST be present in the
+	// ContentAddressableStorage.
+	CommandDigest *BuildBazelRemoteExecutionV2Digest `json:"commandDigest,omitempty"`
+
+	// DoNotCache: If true, then the `Action`'s result cannot be cached.
+	DoNotCache bool `json:"doNotCache,omitempty"`
+
+	// InputRootDigest: The digest of the root
+	// Directory for the input
+	// files. The files in the directory tree are available in the
+	// correct
+	// location on the build machine before the command is executed. The
+	// root
+	// directory, as well as every subdirectory and content blob referred
+	// to, MUST
+	// be in the
+	// ContentAddressableStorage.
+	InputRootDigest *BuildBazelRemoteExecutionV2Digest `json:"inputRootDigest,omitempty"`
+
+	// Timeout: A timeout after which the execution should be killed. If the
+	// timeout is
+	// absent, then the client is specifying that the execution should
+	// continue
+	// as long as the server will let it. The server SHOULD impose a timeout
+	// if
+	// the client does not specify one, however, if the client does specify
+	// a
+	// timeout that is longer than the server's maximum timeout, the server
+	// MUST
+	// reject the request.
+	//
+	// The timeout is a part of the
+	// Action message, and
+	// therefore two `Actions` with different timeouts are different, even
+	// if they
+	// are otherwise identical. This is because, if they were not, running
+	// an
+	// `Action` with a lower timeout than is required might result in a
+	// cache hit
+	// from an execution run with a longer timeout, hiding the fact that
+	// the
+	// timeout is too short. By encoding it directly in the `Action`, a
+	// lower
+	// timeout will result in a cache miss and the execution timeout will
+	// fail
+	// immediately, rather than whenever the cache entry gets evicted.
+	Timeout string `json:"timeout,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CommandDigest") 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. "CommandDigest") 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 *BuildBazelRemoteExecutionV2Action) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Action
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities: Describes
+// the server/instance capabilities for updating the action cache.
+type BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities struct {
+	UpdateEnabled bool `json:"updateEnabled,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "UpdateEnabled") 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. "UpdateEnabled") 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 *BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ActionResult: An ActionResult represents
+// the result of an
+// Action being run.
+type BuildBazelRemoteExecutionV2ActionResult struct {
+	// ExecutionMetadata: The details of the execution that originally
+	// produced this result.
+	ExecutionMetadata *BuildBazelRemoteExecutionV2ExecutedActionMetadata `json:"executionMetadata,omitempty"`
+
+	// ExitCode: The exit code of the command.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// OutputDirectories: The output directories of the action. For each
+	// output directory requested
+	// in the `output_directories` field of the Action, if the
+	// corresponding
+	// directory existed after the action completed, a single entry will
+	// be
+	// present in the output list, which will contain the digest of a
+	// Tree message containing the
+	// directory tree, and the path equal exactly to the corresponding
+	// Action
+	// output_directories member.
+	//
+	// As an example, suppose the Action had an output directory `a/b/dir`
+	// and the
+	// execution produced the following contents in `a/b/dir`: a file named
+	// `bar`
+	// and a directory named `foo` with an executable file named `baz`.
+	// Then,
+	// output_directory will contain (hashes shortened for
+	// readability):
+	//
+	// ```json
+	// // OutputDirectory proto:
+	// {
+	//   path: "a/b/dir"
+	//   tree_digest: {
+	//     hash: "4a73bc9d03...",
+	//     size: 55
+	//   }
+	// }
+	// // Tree proto with hash "4a73bc9d03..." and size 55:
+	// {
+	//   root: {
+	//     files: [
+	//       {
+	//         name: "bar",
+	//         digest: {
+	//           hash: "4a73bc9d03...",
+	//           size: 65534
+	//         }
+	//       }
+	//     ],
+	//     directories: [
+	//       {
+	//         name: "foo",
+	//         digest: {
+	//           hash: "4cf2eda940...",
+	//           size: 43
+	//         }
+	//       }
+	//     ]
+	//   }
+	//   children : {
+	//     // (Directory proto with hash "4cf2eda940..." and size 43)
+	//     files: [
+	//       {
+	//         name: "baz",
+	//         digest: {
+	//           hash: "b2c941073e...",
+	//           size: 1294,
+	//         },
+	//         is_executable: true
+	//       }
+	//     ]
+	//   }
+	// }
+	// ```
+	OutputDirectories []*BuildBazelRemoteExecutionV2OutputDirectory `json:"outputDirectories,omitempty"`
+
+	// OutputDirectorySymlinks: The output directories of the action that
+	// are symbolic links to other
+	// directories. Those may be links to other output directories, or
+	// input
+	// directories, or even absolute paths outside of the working
+	// directory,
+	// if the server supports
+	// SymlinkAbsolutePathStrategy.ALLOWED.
+	// For each output directory requested in the `output_directories` field
+	// of
+	// the Action, if the directory file existed after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the `output_directories` field, if the directory was not a
+	// symbolic link.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// file where a directory is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputDirectorySymlinks []*BuildBazelRemoteExecutionV2OutputSymlink `json:"outputDirectorySymlinks,omitempty"`
+
+	// OutputFileSymlinks: The output files of the action that are symbolic
+	// links to other files. Those
+	// may be links to other output files, or input files, or even absolute
+	// paths
+	// outside of the working directory, if the server
+	// supports
+	// SymlinkAbsolutePathStrategy.ALLOWED.
+	// For each output file requested in the `output_files` field of the
+	// Action,
+	// if the corresponding file existed after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the `output_files` field, if the file was not a symbolic
+	// link.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFileSymlinks []*BuildBazelRemoteExecutionV2OutputSymlink `json:"outputFileSymlinks,omitempty"`
+
+	// OutputFiles: The output files of the action. For each output file
+	// requested in the
+	// `output_files` field of the Action, if the corresponding file existed
+	// after
+	// the action completed, a single entry will be present either in this
+	// field,
+	// or in the output_file_symlinks field, if the file was a symbolic link
+	// to
+	// another file.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFiles []*BuildBazelRemoteExecutionV2OutputFile `json:"outputFiles,omitempty"`
+
+	// StderrDigest: The digest for a blob containing the standard error of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stderr_raw` for when this will be set.
+	StderrDigest *BuildBazelRemoteExecutionV2Digest `json:"stderrDigest,omitempty"`
+
+	// StderrRaw: The standard error buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stderr_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StderrRaw string `json:"stderrRaw,omitempty"`
+
+	// StdoutDigest: The digest for a blob containing the standard output of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stdout_raw` for when this will be set.
+	StdoutDigest *BuildBazelRemoteExecutionV2Digest `json:"stdoutDigest,omitempty"`
+
+	// StdoutRaw: The standard output buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stdout_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StdoutRaw string `json:"stdoutRaw,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ExecutionMetadata")
+	// 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. "ExecutionMetadata") 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 *BuildBazelRemoteExecutionV2ActionResult) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ActionResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2BatchReadBlobsRequest: A request message
+// for
+// ContentAddressableStorage.BatchReadBlobs.
+type BuildBazelRemoteExecutionV2BatchReadBlobsRequest struct {
+	// Digests: The individual blob digests.
+	Digests []*BuildBazelRemoteExecutionV2Digest `json:"digests,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digests") 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. "Digests") 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 *BuildBazelRemoteExecutionV2BatchReadBlobsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2BatchReadBlobsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2BatchReadBlobsResponse: A response message
+// for
+// ContentAddressableStorage.BatchReadBlobs.
+type BuildBazelRemoteExecutionV2BatchReadBlobsResponse struct {
+	// Responses: The responses to the requests.
+	Responses []*BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse `json:"responses,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Responses") 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. "Responses") 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 *BuildBazelRemoteExecutionV2BatchReadBlobsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2BatchReadBlobsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse: A response
+// corresponding to a single blob that the client tried to upload.
+type BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse struct {
+	// Data: The raw binary data.
+	Data string `json:"data,omitempty"`
+
+	// Digest: The digest to which this response corresponds.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// Status: The result of attempting to download that blob.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Data") 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. "Data") 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 *BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest: A request message
+// for
+// ContentAddressableStorage.BatchUpdateBlobs.
+type BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest struct {
+	// Requests: The individual upload requests.
+	Requests []*BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest `json:"requests,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Requests") 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. "Requests") 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 *BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest: A request
+// corresponding to a single blob that the client wants to upload.
+type BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest struct {
+	// Data: The raw binary data.
+	Data string `json:"data,omitempty"`
+
+	// Digest: The digest of the blob. This MUST be the digest of `data`.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Data") 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. "Data") 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 *BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse: A response
+// message for
+// ContentAddressableStorage.BatchUpdateBlobs.
+type BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse struct {
+	// Responses: The responses to the requests.
+	Responses []*BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse `json:"responses,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Responses") 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. "Responses") 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 *BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse: A
+// response corresponding to a single blob that the client tried to
+// upload.
+type BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse struct {
+	// Digest: The blob digest to which this response corresponds.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// Status: The result of attempting to upload that blob.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2CacheCapabilities: Capabilities of the
+// remote cache system.
+type BuildBazelRemoteExecutionV2CacheCapabilities struct {
+	// ActionCacheUpdateCapabilities: Capabilities for updating the action
+	// cache.
+	ActionCacheUpdateCapabilities *BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities `json:"actionCacheUpdateCapabilities,omitempty"`
+
+	// CachePriorityCapabilities: Supported cache priority range for both
+	// CAS and ActionCache.
+	CachePriorityCapabilities *BuildBazelRemoteExecutionV2PriorityCapabilities `json:"cachePriorityCapabilities,omitempty"`
+
+	// DigestFunction: All the digest functions supported by the remote
+	// cache.
+	// Remote cache may support multiple digest functions simultaneously.
+	//
+	// Possible values:
+	//   "UNKNOWN"
+	//   "SHA256"
+	//   "SHA1"
+	//   "MD5"
+	DigestFunction []string `json:"digestFunction,omitempty"`
+
+	// MaxBatchTotalSizeBytes: Maximum total size of blobs to be
+	// uploaded/downloaded using
+	// batch methods. A value of 0 means no limit is set, although
+	// in practice there will always be a message size limitation
+	// of the protocol in use, e.g. GRPC.
+	MaxBatchTotalSizeBytes int64 `json:"maxBatchTotalSizeBytes,omitempty,string"`
+
+	// SymlinkAbsolutePathStrategy: Whether absolute symlink targets are
+	// supported.
+	//
+	// Possible values:
+	//   "UNKNOWN"
+	//   "DISALLOWED" - Server will return an INVALID_ARGUMENT on input
+	// symlinks with absolute targets.
+	// If an action tries to create an output symlink with an absolute
+	// target, a
+	// FAILED_PRECONDITION will be returned.
+	//   "ALLOWED" - Server will allow symlink targets to escape the input
+	// root tree, possibly
+	// resulting in non-hermetic builds.
+	SymlinkAbsolutePathStrategy string `json:"symlinkAbsolutePathStrategy,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ActionCacheUpdateCapabilities") 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.
+	// "ActionCacheUpdateCapabilities") 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 *BuildBazelRemoteExecutionV2CacheCapabilities) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2CacheCapabilities
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Command: A `Command` is the actual command
+// executed by a worker running an
+// Action and specifications of its
+// environment.
+//
+// Except as otherwise required, the environment (such as which
+// system
+// libraries or binaries are available, and what filesystems are mounted
+// where)
+// is defined by and specific to the implementation of the remote
+// execution API.
+type BuildBazelRemoteExecutionV2Command struct {
+	// Arguments: The arguments to the command. The first argument must be
+	// the path to the
+	// executable, which must be either a relative path, in which case it
+	// is
+	// evaluated with respect to the input root, or an absolute path.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: The environment variables to set when running
+	// the program. The worker may
+	// provide its own default environment variables; these defaults can
+	// be
+	// overridden using this field. Additional variables can also be
+	// specified.
+	//
+	// In order to ensure that equivalent `Command`s always hash to the
+	// same
+	// value, the environment variables MUST be lexicographically sorted by
+	// name.
+	// Sorting of strings is done by code point, equivalently, by the UTF-8
+	// bytes.
+	EnvironmentVariables []*BuildBazelRemoteExecutionV2CommandEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// OutputDirectories: A list of the output directories that the client
+	// expects to retrieve from
+	// the action. Only the contents of the indicated directories
+	// (recursively
+	// including the contents of their subdirectories) will be
+	// returned, as well as files listed in `output_files`. Other files that
+	// may
+	// be created during command execution are discarded.
+	//
+	// The paths are relative to the working directory of the action
+	// execution.
+	// The paths are specified using a single forward slash (`/`) as a
+	// path
+	// separator, even if the execution platform natively uses a
+	// different
+	// separator. The path MUST NOT include a trailing slash, nor a leading
+	// slash,
+	// being a relative path. The special value of empty string is
+	// allowed,
+	// although not recommended, and can be used to capture the entire
+	// working
+	// directory tree, including inputs.
+	//
+	// In order to ensure consistent hashing of the same Action, the output
+	// paths
+	// MUST be sorted lexicographically by code point (or, equivalently, by
+	// UTF-8
+	// bytes).
+	//
+	// An output directory cannot be duplicated, be a parent of another
+	// output
+	// directory, be a parent of a listed output file, or have the same path
+	// as
+	// any of the listed output files.
+	OutputDirectories []string `json:"outputDirectories,omitempty"`
+
+	// OutputFiles: A list of the output files that the client expects to
+	// retrieve from the
+	// action. Only the listed files, as well as directories listed
+	// in
+	// `output_directories`, will be returned to the client as output.
+	// Other files that may be created during command execution are
+	// discarded.
+	//
+	// The paths are relative to the working directory of the action
+	// execution.
+	// The paths are specified using a single forward slash (`/`) as a
+	// path
+	// separator, even if the execution platform natively uses a
+	// different
+	// separator. The path MUST NOT include a trailing slash, nor a leading
+	// slash,
+	// being a relative path.
+	//
+	// In order to ensure consistent hashing of the same Action, the output
+	// paths
+	// MUST be sorted lexicographically by code point (or, equivalently, by
+	// UTF-8
+	// bytes).
+	//
+	// An output file cannot be duplicated, be a parent of another output
+	// file, be
+	// a child of a listed output directory, or have the same path as any of
+	// the
+	// listed output directories.
+	OutputFiles []string `json:"outputFiles,omitempty"`
+
+	// Platform: The platform requirements for the execution environment.
+	// The server MAY
+	// choose to execute the action on any worker satisfying the
+	// requirements, so
+	// the client SHOULD ensure that running the action on any such worker
+	// will
+	// have the same result.
+	Platform *BuildBazelRemoteExecutionV2Platform `json:"platform,omitempty"`
+
+	// WorkingDirectory: The working directory, relative to the input root,
+	// for the command to run
+	// in. It must be a directory which exists in the input tree. If it is
+	// left
+	// empty, then the action is run in the input root.
+	WorkingDirectory string `json:"workingDirectory,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *BuildBazelRemoteExecutionV2Command) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Command
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2CommandEnvironmentVariable: An
+// `EnvironmentVariable` is one variable to set in the running
+// program's
+// environment.
+type BuildBazelRemoteExecutionV2CommandEnvironmentVariable struct {
+	// Name: The variable name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The variable 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 *BuildBazelRemoteExecutionV2CommandEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2CommandEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Digest: A content digest. A digest for a
+// given blob consists of the size of the blob
+// and its hash. The hash algorithm to use is defined by the server, but
+// servers
+// SHOULD use SHA-256.
+//
+// The size is considered to be an integral part of the digest and
+// cannot be
+// separated. That is, even if the `hash` field is correctly specified
+// but
+// `size_bytes` is not, the server MUST reject the request.
+//
+// The reason for including the size in the digest is as follows: in a
+// great
+// many cases, the server needs to know the size of the blob it is about
+// to work
+// with prior to starting an operation with it, such as flattening
+// Merkle tree
+// structures or streaming it to a worker. Technically, the server
+// could
+// implement a separate metadata store, but this results in a
+// significantly more
+// complicated implementation as opposed to having the client specify
+// the size
+// up-front (or storing the size along with the digest in every message
+// where
+// digests are embedded). This does mean that the API leaks some
+// implementation
+// details of (what we consider to be) a reasonable server
+// implementation, but
+// we consider this to be a worthwhile tradeoff.
+//
+// When a `Digest` is used to refer to a proto message, it always refers
+// to the
+// message in binary encoded form. To ensure consistent hashing, clients
+// and
+// servers MUST ensure that they serialize messages according to the
+// following
+// rules, even if there are alternate valid encodings for the same
+// message.
+// - Fields are serialized in tag order.
+// - There are no unknown fields.
+// - There are no duplicate fields.
+// - Fields are serialized according to the default semantics for their
+// type.
+//
+// Most protocol buffer implementations will always follow these rules
+// when
+// serializing, but care should be taken to avoid shortcuts. For
+// instance,
+// concatenating two messages to merge them may produce duplicate
+// fields.
+type BuildBazelRemoteExecutionV2Digest struct {
+	// Hash: The hash. In the case of SHA-256, it will always be a lowercase
+	// hex string
+	// exactly 64 characters long.
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the blob, in bytes.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *BuildBazelRemoteExecutionV2Digest) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Digest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Directory: A `Directory` represents a
+// directory node in a file tree, containing zero or
+// more children FileNodes,
+// DirectoryNodes and
+// SymlinkNodes.
+// Each `Node` contains its name in the directory, either the digest of
+// its
+// content (either a file blob or a `Directory` proto) or a symlink
+// target, as
+// well as possibly some metadata about the file or directory.
+//
+// In order to ensure that two equivalent directory trees hash to the
+// same
+// value, the following restrictions MUST be obeyed when constructing
+// a
+// a `Directory`:
+//   - Every child in the directory must have a path of exactly one
+// segment.
+//     Multiple levels of directory hierarchy may not be collapsed.
+//   - Each child in the directory must have a unique path segment (file
+// name).
+//   - The files, directories and symlinks in the directory must each be
+// sorted
+//     in lexicographical order by path. The path strings must be sorted
+// by code
+//     point, equivalently, by UTF-8 bytes.
+//
+// A `Directory` that obeys the restrictions is said to be in canonical
+// form.
+//
+// As an example, the following could be used for a file named `bar` and
+// a
+// directory named `foo` with an executable file named `baz` (hashes
+// shortened
+// for readability):
+//
+// ```json
+// // (Directory proto)
+// {
+//   files: [
+//     {
+//       name: "bar",
+//       digest: {
+//         hash: "4a73bc9d03...",
+//         size: 65534
+//       }
+//     }
+//   ],
+//   directories: [
+//     {
+//       name: "foo",
+//       digest: {
+//         hash: "4cf2eda940...",
+//         size: 43
+//       }
+//     }
+//   ]
+// }
+//
+// // (Directory proto with hash "4cf2eda940..." and size 43)
+// {
+//   files: [
+//     {
+//       name: "baz",
+//       digest: {
+//         hash: "b2c941073e...",
+//         size: 1294,
+//       },
+//       is_executable: true
+//     }
+//   ]
+// }
+// ```
+type BuildBazelRemoteExecutionV2Directory struct {
+	// Directories: The subdirectories in the directory.
+	Directories []*BuildBazelRemoteExecutionV2DirectoryNode `json:"directories,omitempty"`
+
+	// Files: The files in the directory.
+	Files []*BuildBazelRemoteExecutionV2FileNode `json:"files,omitempty"`
+
+	// Symlinks: The symlinks in the directory.
+	Symlinks []*BuildBazelRemoteExecutionV2SymlinkNode `json:"symlinks,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *BuildBazelRemoteExecutionV2Directory) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Directory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2DirectoryNode: A `DirectoryNode`
+// represents a child of a
+// Directory which is itself
+// a `Directory` and its associated metadata.
+type BuildBazelRemoteExecutionV2DirectoryNode struct {
+	// Digest: The digest of the
+	// Directory object
+	// represented. See Digest
+	// for information about how to take the digest of a proto message.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// Name: The name of the directory.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2DirectoryNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2DirectoryNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecuteOperationMetadata: Metadata about
+// an ongoing
+// execution, which
+// will be contained in the metadata
+// field of the
+// Operation.
+type BuildBazelRemoteExecutionV2ExecuteOperationMetadata struct {
+	// ActionDigest: The digest of the Action
+	// being executed.
+	ActionDigest *BuildBazelRemoteExecutionV2Digest `json:"actionDigest,omitempty"`
+
+	// Possible values:
+	//   "UNKNOWN"
+	//   "CACHE_CHECK" - Checking the result against the cache.
+	//   "QUEUED" - Currently idle, awaiting a free machine to execute.
+	//   "EXECUTING" - Currently being executed by a worker.
+	//   "COMPLETED" - Finished execution.
+	Stage string `json:"stage,omitempty"`
+
+	// StderrStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard error.
+	StderrStreamName string `json:"stderrStreamName,omitempty"`
+
+	// StdoutStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard output.
+	StdoutStreamName string `json:"stdoutStreamName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionDigest") 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. "ActionDigest") 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 *BuildBazelRemoteExecutionV2ExecuteOperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecuteOperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecuteRequest: A request message
+// for
+// Execution.Execute.
+type BuildBazelRemoteExecutionV2ExecuteRequest struct {
+	// ActionDigest: The digest of the Action to
+	// execute.
+	ActionDigest *BuildBazelRemoteExecutionV2Digest `json:"actionDigest,omitempty"`
+
+	// ExecutionPolicy: An optional policy for execution of the action.
+	// The server will have a default policy if this is not provided.
+	ExecutionPolicy *BuildBazelRemoteExecutionV2ExecutionPolicy `json:"executionPolicy,omitempty"`
+
+	// ResultsCachePolicy: An optional policy for the results of this
+	// execution in the remote cache.
+	// The server will have a default policy if this is not provided.
+	// This may be applied to both the ActionResult and the associated
+	// blobs.
+	ResultsCachePolicy *BuildBazelRemoteExecutionV2ResultsCachePolicy `json:"resultsCachePolicy,omitempty"`
+
+	// SkipCacheLookup: If true, the action will be executed anew even if
+	// its result was already
+	// present in the cache. If false, the result may be served from
+	// the
+	// ActionCache.
+	SkipCacheLookup bool `json:"skipCacheLookup,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionDigest") 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. "ActionDigest") 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 *BuildBazelRemoteExecutionV2ExecuteRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecuteRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecuteResponse: The response message
+// for
+// Execution.Execute,
+// which will be contained in the response
+// field of the
+// Operation.
+type BuildBazelRemoteExecutionV2ExecuteResponse struct {
+	// CachedResult: True if the result was served from cache, false if it
+	// was executed.
+	CachedResult bool `json:"cachedResult,omitempty"`
+
+	// Result: The result of the action.
+	Result *BuildBazelRemoteExecutionV2ActionResult `json:"result,omitempty"`
+
+	// ServerLogs: An optional list of additional log outputs the server
+	// wishes to provide. A
+	// server can use this to return execution-specific logs however it
+	// wishes.
+	// This is intended primarily to make it easier for users to debug
+	// issues that
+	// may be outside of the actual job execution, such as by identifying
+	// the
+	// worker executing the action or by providing logs from the worker's
+	// setup
+	// phase. The keys SHOULD be human readable so that a client can display
+	// them
+	// to a user.
+	ServerLogs map[string]BuildBazelRemoteExecutionV2LogFile `json:"serverLogs,omitempty"`
+
+	// Status: If the status has a code other than `OK`, it indicates that
+	// the action did
+	// not finish execution. For example, if the operation times out
+	// during
+	// execution, the status will have a `DEADLINE_EXCEEDED` code. Servers
+	// MUST
+	// use this field for errors in execution, rather than the error field
+	// on the
+	// `Operation` object.
+	//
+	// If the status code is other than `OK`, then the result MUST NOT be
+	// cached.
+	// For an error status, the `result` field is optional; the server
+	// may
+	// populate the output-, stdout-, and stderr-related fields if it has
+	// any
+	// information available, such as the stdout and stderr of a timed-out
+	// action.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CachedResult") 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. "CachedResult") 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 *BuildBazelRemoteExecutionV2ExecuteResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecuteResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecutedActionMetadata:
+// ExecutedActionMetadata contains details about a completed execution.
+type BuildBazelRemoteExecutionV2ExecutedActionMetadata struct {
+	// ExecutionCompletedTimestamp: When the worker completed executing the
+	// action command.
+	ExecutionCompletedTimestamp string `json:"executionCompletedTimestamp,omitempty"`
+
+	// ExecutionStartTimestamp: When the worker started executing the action
+	// command.
+	ExecutionStartTimestamp string `json:"executionStartTimestamp,omitempty"`
+
+	// InputFetchCompletedTimestamp: When the worker finished fetching
+	// action inputs.
+	InputFetchCompletedTimestamp string `json:"inputFetchCompletedTimestamp,omitempty"`
+
+	// InputFetchStartTimestamp: When the worker started fetching action
+	// inputs.
+	InputFetchStartTimestamp string `json:"inputFetchStartTimestamp,omitempty"`
+
+	// OutputUploadCompletedTimestamp: When the worker finished uploading
+	// action outputs.
+	OutputUploadCompletedTimestamp string `json:"outputUploadCompletedTimestamp,omitempty"`
+
+	// OutputUploadStartTimestamp: When the worker started uploading action
+	// outputs.
+	OutputUploadStartTimestamp string `json:"outputUploadStartTimestamp,omitempty"`
+
+	// QueuedTimestamp: When was the action added to the queue.
+	QueuedTimestamp string `json:"queuedTimestamp,omitempty"`
+
+	// Worker: The name of the worker which ran the execution.
+	Worker string `json:"worker,omitempty"`
+
+	// WorkerCompletedTimestamp: When the worker completed the action,
+	// including all stages.
+	WorkerCompletedTimestamp string `json:"workerCompletedTimestamp,omitempty"`
+
+	// WorkerStartTimestamp: When the worker received the action.
+	WorkerStartTimestamp string `json:"workerStartTimestamp,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "ExecutionCompletedTimestamp") 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.
+	// "ExecutionCompletedTimestamp") 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 *BuildBazelRemoteExecutionV2ExecutedActionMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecutedActionMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecutionCapabilities: Capabilities of the
+// remote execution system.
+type BuildBazelRemoteExecutionV2ExecutionCapabilities struct {
+	// DigestFunction: Remote execution may only support a single digest
+	// function.
+	//
+	// Possible values:
+	//   "UNKNOWN"
+	//   "SHA256"
+	//   "SHA1"
+	//   "MD5"
+	DigestFunction string `json:"digestFunction,omitempty"`
+
+	// ExecEnabled: Whether remote execution is enabled for the particular
+	// server/instance.
+	ExecEnabled bool `json:"execEnabled,omitempty"`
+
+	// ExecutionPriorityCapabilities: Supported execution priority range.
+	ExecutionPriorityCapabilities *BuildBazelRemoteExecutionV2PriorityCapabilities `json:"executionPriorityCapabilities,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DigestFunction") 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. "DigestFunction") 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 *BuildBazelRemoteExecutionV2ExecutionCapabilities) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecutionCapabilities
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ExecutionPolicy: An `ExecutionPolicy` can
+// be used to control the scheduling of the action.
+type BuildBazelRemoteExecutionV2ExecutionPolicy struct {
+	// Priority: The priority (relative importance) of this action.
+	// Generally, a lower value
+	// means that the action should be run sooner than actions having a
+	// greater
+	// priority value, but the interpretation of a given value is
+	// server-
+	// dependent. A priority of 0 means the *default* priority. Priorities
+	// may be
+	// positive or negative, and such actions should run later or sooner
+	// than
+	// actions having the default priority, respectively. The particular
+	// semantics
+	// of this field is up to the server. In particular, every server will
+	// have
+	// their own supported range of priorities, and will decide how these
+	// map into
+	// scheduling policy.
+	Priority int64 `json:"priority,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Priority") 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. "Priority") 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 *BuildBazelRemoteExecutionV2ExecutionPolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ExecutionPolicy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2FileNode: A `FileNode` represents a single
+// file and associated metadata.
+type BuildBazelRemoteExecutionV2FileNode struct {
+	// Digest: The digest of the file's content.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Name: The name of the file.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2FileNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2FileNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2FindMissingBlobsRequest: A request message
+// for
+// ContentAddressableStorage.FindMissingBlobs.
+type BuildBazelRemoteExecutionV2FindMissingBlobsRequest struct {
+	// BlobDigests: A list of the blobs to check.
+	BlobDigests []*BuildBazelRemoteExecutionV2Digest `json:"blobDigests,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BlobDigests") 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. "BlobDigests") 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 *BuildBazelRemoteExecutionV2FindMissingBlobsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2FindMissingBlobsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2FindMissingBlobsResponse: A response
+// message for
+// ContentAddressableStorage.FindMissingBlobs.
+type BuildBazelRemoteExecutionV2FindMissingBlobsResponse struct {
+	// MissingBlobDigests: A list of the blobs requested *not* present in
+	// the storage.
+	MissingBlobDigests []*BuildBazelRemoteExecutionV2Digest `json:"missingBlobDigests,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "MissingBlobDigests")
+	// 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. "MissingBlobDigests") 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 *BuildBazelRemoteExecutionV2FindMissingBlobsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2FindMissingBlobsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2GetTreeResponse: A response message
+// for
+// ContentAddressableStorage.GetTree.
+type BuildBazelRemoteExecutionV2GetTreeResponse struct {
+	// Directories: The directories descended from the requested root.
+	Directories []*BuildBazelRemoteExecutionV2Directory `json:"directories,omitempty"`
+
+	// NextPageToken: If present, signifies that there are more results
+	// which the client can
+	// retrieve by passing this as the page_token in a
+	// subsequent
+	// request.
+	// If empty, signifies that this is the last page of 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. "Directories") 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. "Directories") 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 *BuildBazelRemoteExecutionV2GetTreeResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2GetTreeResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2LogFile: A `LogFile` is a log stored in
+// the CAS.
+type BuildBazelRemoteExecutionV2LogFile struct {
+	// Digest: The digest of the log contents.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// HumanReadable: This is a hint as to the purpose of the log, and is
+	// set to true if the log
+	// is human-readable text that can be usefully displayed to a user, and
+	// false
+	// otherwise. For instance, if a command-line client wishes to print
+	// the
+	// server logs to the terminal for a failed action, this allows it to
+	// avoid
+	// displaying a binary file.
+	HumanReadable bool `json:"humanReadable,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2LogFile) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2LogFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputDirectory: An `OutputDirectory` is
+// the output in an `ActionResult` corresponding to a
+// directory's full contents rather than a single file.
+type BuildBazelRemoteExecutionV2OutputDirectory struct {
+	// Path: The full path of the directory relative to the working
+	// directory. The path
+	// separator is a forward slash `/`. Since this is a relative path, it
+	// MUST
+	// NOT begin with a leading forward slash. The empty string value is
+	// allowed,
+	// and it denotes the entire working directory.
+	Path string `json:"path,omitempty"`
+
+	// TreeDigest: The digest of the encoded
+	// Tree proto containing the
+	// directory's contents.
+	TreeDigest *BuildBazelRemoteExecutionV2Digest `json:"treeDigest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Path") 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. "Path") 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 *BuildBazelRemoteExecutionV2OutputDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputFile: An `OutputFile` is similar to
+// a
+// FileNode, but it is used as an
+// output in an `ActionResult`. It allows a full file path rather
+// than
+// only a name.
+//
+// `OutputFile` is binary-compatible with `FileNode`.
+type BuildBazelRemoteExecutionV2OutputFile struct {
+	// Digest: The digest of the file's content.
+	Digest *BuildBazelRemoteExecutionV2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The full path of the file relative to the working directory,
+	// including the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *BuildBazelRemoteExecutionV2OutputFile) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2OutputSymlink: An `OutputSymlink` is
+// similar to a
+// Symlink, but it is used as an
+// output in an `ActionResult`.
+//
+// `OutputSymlink` is binary-compatible with `SymlinkNode`.
+type BuildBazelRemoteExecutionV2OutputSymlink struct {
+	// Path: The full path of the symlink relative to the working directory,
+	// including the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// Target: The target path of the symlink. The path separator is a
+	// forward slash `/`.
+	// The target path can be relative to the parent directory of the
+	// symlink or
+	// it can be an absolute path starting with `/`. Support for absolute
+	// paths
+	// can be checked using the Capabilities
+	// API. The canonical form forbids the substrings `/./` and `//` in the
+	// target
+	// path. `..` components are allowed anywhere in the target path.
+	Target string `json:"target,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Path") 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. "Path") 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 *BuildBazelRemoteExecutionV2OutputSymlink) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2OutputSymlink
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Platform: A `Platform` is a set of
+// requirements, such as hardware, operating system, or
+// compiler toolchain, for an
+// Action's execution
+// environment. A `Platform` is represented as a series of key-value
+// pairs
+// representing the properties that are required of the platform.
+type BuildBazelRemoteExecutionV2Platform struct {
+	// Properties: The properties that make up this platform. In order to
+	// ensure that
+	// equivalent `Platform`s always hash to the same value, the properties
+	// MUST
+	// be lexicographically sorted by name, and then by value. Sorting of
+	// strings
+	// is done by code point, equivalently, by the UTF-8 bytes.
+	Properties []*BuildBazelRemoteExecutionV2PlatformProperty `json:"properties,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Properties") 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. "Properties") 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 *BuildBazelRemoteExecutionV2Platform) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Platform
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2PlatformProperty: A single property for
+// the environment. The server is responsible for
+// specifying the property `name`s that it accepts. If an unknown `name`
+// is
+// provided in the requirements for an
+// Action, the server SHOULD
+// reject the execution request. If permitted by the server, the same
+// `name`
+// may occur multiple times.
+//
+// The server is also responsible for specifying the interpretation
+// of
+// property `value`s. For instance, a property describing how much RAM
+// must be
+// available may be interpreted as allowing a worker with 16GB to
+// fulfill a
+// request for 8GB, while a property describing the OS environment on
+// which
+// the action must be performed may require an exact match with the
+// worker's
+// OS.
+//
+// The server MAY use the `value` of one or more properties to determine
+// how
+// it sets up the execution environment, such as by making specific
+// system
+// files available to the worker.
+type BuildBazelRemoteExecutionV2PlatformProperty struct {
+	// Name: The property name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The property 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 *BuildBazelRemoteExecutionV2PlatformProperty) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2PlatformProperty
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2PriorityCapabilities: Allowed values for
+// priority in
+// ResultsCachePolicy
+// Used for querying both cache and execution valid priority ranges.
+type BuildBazelRemoteExecutionV2PriorityCapabilities struct {
+	Priorities []*BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange `json:"priorities,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Priorities") 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. "Priorities") 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 *BuildBazelRemoteExecutionV2PriorityCapabilities) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2PriorityCapabilities
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange:
+// Supported range of priorities, including boundaries.
+type BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange struct {
+	MaxPriority int64 `json:"maxPriority,omitempty"`
+
+	MinPriority int64 `json:"minPriority,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "MaxPriority") 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. "MaxPriority") 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 *BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2RequestMetadata: An optional Metadata to
+// attach to any RPC request to tell the server about an
+// external context of the request. The server may use this for logging
+// or other
+// purposes. To use it, the client attaches the header to the call using
+// the
+// canonical proto serialization:
+// name: build.bazel.remote.execution.v2.requestmetadata-bin
+// contents: the base64 encoded binary RequestMetadata message.
+type BuildBazelRemoteExecutionV2RequestMetadata struct {
+	// ActionId: An identifier that ties multiple requests to the same
+	// action.
+	// For example, multiple requests to the CAS, Action Cache, and
+	// Execution
+	// API are used in order to compile foo.cc.
+	ActionId string `json:"actionId,omitempty"`
+
+	// CorrelatedInvocationsId: An identifier to tie multiple tool
+	// invocations together. For example,
+	// runs of foo_test, bar_test and baz_test on a post-submit of a given
+	// patch.
+	CorrelatedInvocationsId string `json:"correlatedInvocationsId,omitempty"`
+
+	// ToolDetails: The details for the tool invoking the requests.
+	ToolDetails *BuildBazelRemoteExecutionV2ToolDetails `json:"toolDetails,omitempty"`
+
+	// ToolInvocationId: An identifier that ties multiple actions together
+	// to a final result.
+	// For example, multiple actions are required to build and run foo_test.
+	ToolInvocationId string `json:"toolInvocationId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionId") 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. "ActionId") 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 *BuildBazelRemoteExecutionV2RequestMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2RequestMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ResultsCachePolicy: A `ResultsCachePolicy`
+// is used for fine-grained control over how action
+// outputs are stored in the CAS and Action Cache.
+type BuildBazelRemoteExecutionV2ResultsCachePolicy struct {
+	// Priority: The priority (relative importance) of this content in the
+	// overall cache.
+	// Generally, a lower value means a longer retention time or other
+	// advantage,
+	// but the interpretation of a given value is server-dependent. A
+	// priority of
+	// 0 means a *default* value, decided by the server.
+	//
+	// The particular semantics of this field is up to the server. In
+	// particular,
+	// every server will have their own supported range of priorities, and
+	// will
+	// decide how these map into retention/eviction policy.
+	Priority int64 `json:"priority,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Priority") 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. "Priority") 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 *BuildBazelRemoteExecutionV2ResultsCachePolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ResultsCachePolicy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ServerCapabilities: A response message
+// for
+// Capabilities.GetCapabilities.
+type BuildBazelRemoteExecutionV2ServerCapabilities struct {
+	// CacheCapabilities: Capabilities of the remote cache system.
+	CacheCapabilities *BuildBazelRemoteExecutionV2CacheCapabilities `json:"cacheCapabilities,omitempty"`
+
+	// DeprecatedApiVersion: Earliest RE API version supported, including
+	// deprecated versions.
+	DeprecatedApiVersion *BuildBazelSemverSemVer `json:"deprecatedApiVersion,omitempty"`
+
+	// ExecutionCapabilities: Capabilities of the remote execution system.
+	ExecutionCapabilities *BuildBazelRemoteExecutionV2ExecutionCapabilities `json:"executionCapabilities,omitempty"`
+
+	// HighApiVersion: Latest RE API version supported.
+	HighApiVersion *BuildBazelSemverSemVer `json:"highApiVersion,omitempty"`
+
+	// LowApiVersion: Earliest non-deprecated RE API version supported.
+	LowApiVersion *BuildBazelSemverSemVer `json:"lowApiVersion,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "CacheCapabilities")
+	// 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. "CacheCapabilities") 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 *BuildBazelRemoteExecutionV2ServerCapabilities) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ServerCapabilities
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2SymlinkNode: A `SymlinkNode` represents a
+// symbolic link.
+type BuildBazelRemoteExecutionV2SymlinkNode struct {
+	// Name: The name of the symlink.
+	Name string `json:"name,omitempty"`
+
+	// Target: The target path of the symlink. The path separator is a
+	// forward slash `/`.
+	// The target path can be relative to the parent directory of the
+	// symlink or
+	// it can be an absolute path starting with `/`. Support for absolute
+	// paths
+	// can be checked using the Capabilities
+	// API. The canonical form forbids the substrings `/./` and `//` in the
+	// target
+	// path. `..` components are allowed anywhere in the target path.
+	Target string `json:"target,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 *BuildBazelRemoteExecutionV2SymlinkNode) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2SymlinkNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2ToolDetails: Details for the tool used to
+// call the API.
+type BuildBazelRemoteExecutionV2ToolDetails struct {
+	// ToolName: Name of the tool, e.g. bazel.
+	ToolName string `json:"toolName,omitempty"`
+
+	// ToolVersion: Version of the tool used for the request, e.g. 5.0.3.
+	ToolVersion string `json:"toolVersion,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ToolName") 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. "ToolName") 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 *BuildBazelRemoteExecutionV2ToolDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2ToolDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2Tree: A `Tree` contains all the
+// Directory protos in a
+// single directory Merkle tree, compressed into one message.
+type BuildBazelRemoteExecutionV2Tree struct {
+	// Children: All the child directories: the directories referred to by
+	// the root and,
+	// recursively, all its children. In order to reconstruct the directory
+	// tree,
+	// the client must take the digests of each of the child directories and
+	// then
+	// build up a tree starting from the `root`.
+	Children []*BuildBazelRemoteExecutionV2Directory `json:"children,omitempty"`
+
+	// Root: The root directory in the tree.
+	Root *BuildBazelRemoteExecutionV2Directory `json:"root,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Children") 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. "Children") 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 *BuildBazelRemoteExecutionV2Tree) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelRemoteExecutionV2Tree
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// BuildBazelRemoteExecutionV2WaitExecutionRequest: A request message
+// for
+// WaitExecution.
+type BuildBazelRemoteExecutionV2WaitExecutionRequest struct {
+}
+
+type BuildBazelSemverSemVer struct {
+	Major int64 `json:"major,omitempty"`
+
+	Minor int64 `json:"minor,omitempty"`
+
+	Patch int64 `json:"patch,omitempty"`
+
+	Prerelease string `json:"prerelease,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Major") 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. "Major") 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 *BuildBazelSemverSemVer) MarshalJSON() ([]byte, error) {
+	type NoMethod BuildBazelSemverSemVer
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildbotCommandDurations: CommandDuration
+// contains the various duration metrics tracked when a bot
+// performs a command.
+type GoogleDevtoolsRemotebuildbotCommandDurations struct {
+	// DockerPrep: The time spent preparing the command to be run in a
+	// Docker container
+	// (includes pulling the Docker image, if necessary).
+	DockerPrep string `json:"dockerPrep,omitempty"`
+
+	// Download: The time spent downloading the input files and constructing
+	// the working
+	// directory.
+	Download string `json:"download,omitempty"`
+
+	// Execution: The time spent executing the command (i.e., doing useful
+	// work).
+	Execution string `json:"execution,omitempty"`
+
+	// IsoPrepDone: The timestamp when preparation is done and bot starts
+	// downloading files.
+	IsoPrepDone string `json:"isoPrepDone,omitempty"`
+
+	// Overall: The time spent completing the command, in total.
+	Overall string `json:"overall,omitempty"`
+
+	// Stdout: The time spent uploading the stdout logs.
+	Stdout string `json:"stdout,omitempty"`
+
+	// Upload: The time spent uploading the output files.
+	Upload string `json:"upload,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DockerPrep") 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. "DockerPrep") 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 *GoogleDevtoolsRemotebuildbotCommandDurations) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildbotCommandDurations
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildbotCommandEvents: CommandEvents contains
+// counters for the number of warnings and errors
+// that occurred during the execution of a command.
+type GoogleDevtoolsRemotebuildbotCommandEvents struct {
+	// DockerCacheHit: Indicates whether we are using a cached Docker image
+	// (true) or had to pull
+	// the Docker image (false) for this command.
+	DockerCacheHit bool `json:"dockerCacheHit,omitempty"`
+
+	// NumErrors: The number of errors reported.
+	NumErrors uint64 `json:"numErrors,omitempty,string"`
+
+	// NumWarnings: The number of warnings reported.
+	NumWarnings uint64 `json:"numWarnings,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "DockerCacheHit") 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. "DockerCacheHit") 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 *GoogleDevtoolsRemotebuildbotCommandEvents) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildbotCommandEvents
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest:
+// The request used for `CreateInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest struct {
+	// Instance: Specifies the instance to create.
+	// The name in the instance, if specified in the instance, is ignored.
+	Instance *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance `json:"instance,omitempty"`
+
+	// InstanceId: ID of the created instance.
+	// A valid `instance_id` must:
+	// be 6-50 characters long,
+	// contains only lowercase letters, digits, hyphens and
+	// underscores,
+	// start with a lowercase letter, and
+	// end with a lowercase letter or a digit.
+	InstanceId string `json:"instanceId,omitempty"`
+
+	// Parent: Resource name of the project containing the instance.
+	// Format: `projects/[PROJECT_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Instance") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Instance") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest:
+//  The request used for `CreateWorkerPool`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest struct {
+	// Parent: Resource name of the instance in which to create the new
+	// worker pool.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// PoolId: ID of the created worker pool.
+	// A valid pool ID must:
+	// be 6-50 characters long,
+	// contain only lowercase letters, digits, hyphens and
+	// underscores,
+	// start with a lowercase letter, and
+	// end with a lowercase letter or a digit.
+	PoolId string `json:"poolId,omitempty"`
+
+	// WorkerPool: Specifies the worker pool to create.
+	// The name in the worker pool, if specified, is ignored.
+	WorkerPool *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPool,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest:
+// The request used for `DeleteInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest struct {
+	// Name: Name of the instance to delete.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest:
+//  The request used for DeleteWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest struct {
+	// Name: Name of the worker pool to
+	// delete.
+	// Format:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerp
+	// ools/[POOL_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest: The
+// request used for `GetInstance`.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest struct {
+	// Name: Name of the instance to retrieve.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest:
+// The request used for GetWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest struct {
+	// Name: Name of the worker pool to
+	// retrieve.
+	// Format:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/worke
+	// rpools/[POOL_ID]`.
+	Name string `json:"name,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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance: Instance
+// conceptually encapsulates all Remote Build Execution resources
+// for remote builds.
+// An instance consists of storage and compute resources (for
+// example,
+// `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used
+// for
+// running remote builds.
+// All Remote Build Execution API calls are scoped to an instance.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance struct {
+	// Location: The location is a GCP region. Currently only `us-central1`
+	// is supported.
+	Location string `json:"location,omitempty"`
+
+	// Name: Output only. Instance resource name formatted
+	// as:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	// Name should not be populated when creating an instance since it is
+	// provided
+	// in the `instance_id` field.
+	Name string `json:"name,omitempty"`
+
+	// State: Output only. State of the instance.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Not a valid state, but the default value of
+	// the enum.
+	//   "CREATING" - The instance is in state `CREATING` once
+	// `CreateInstance` is called and
+	// before the instance is ready for use.
+	//   "RUNNING" - The instance is in state `RUNNING` when it is ready for
+	// use.
+	//   "INACTIVE" - An `INACTIVE` instance indicates that there is a
+	// problem that needs to be
+	// fixed. Such instances cannot be used for execution and instances
+	// that
+	// remain in this state for a significant period of time will be
+	// removed
+	// permanently.
+	State string `json:"state,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Location") 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. "Location") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest struct {
+	// Parent: Resource name of the project.
+	// Format: `projects/[PROJECT_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse struct {
+	// Instances: The list of instances in a given project.
+	Instances []*GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance `json:"instances,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Instances") 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. "Instances") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest struct {
+	// Parent: Resource name of the instance.
+	// Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
+	Parent string `json:"parent,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Parent") 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. "Parent") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse struct {
+	// WorkerPools: The list of worker pools in a given instance.
+	WorkerPools []*GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPools,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "WorkerPools") 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. "WorkerPools") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest:
+//  The request used for UpdateWorkerPool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest struct {
+	// UpdateMask: The update mask applies to worker_pool. For the
+	// `FieldMask` definition,
+	// see
+	// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
+	// If an empty update_mask is provided, only the non-default valued
+	// field in
+	// the worker pool field will be updated. Note that in order to update a
+	// field
+	// to the default value (zero, false, empty string) an explicit
+	// update_mask
+	// must be provided.
+	UpdateMask string `json:"updateMask,omitempty"`
+
+	// WorkerPool: Specifies the worker pool to update.
+	WorkerPool *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool `json:"workerPool,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "UpdateMask") 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. "UpdateMask") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig: Defines
+// the configuration to be used for a creating workers in
+// the worker pool.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig struct {
+	// DiskSizeGb: Required. Size of the disk attached to the worker, in
+	// GB.
+	// See https://cloud.google.com/compute/docs/disks/
+	DiskSizeGb int64 `json:"diskSizeGb,omitempty,string"`
+
+	// DiskType: Required. Disk Type to use for the worker.
+	// See [Storage
+	// options](https://cloud.google.com/compute/docs/disks/#introduction).
+	// C
+	// urrently only `pd-standard` is supported.
+	DiskType string `json:"diskType,omitempty"`
+
+	// MachineType: Required. Machine type of the worker, such as
+	// n1-standard-2.
+	// See https://cloud.google.com/compute/docs/machine-types for a list
+	// of
+	// supported machine types.
+	MachineType string `json:"machineType,omitempty"`
+
+	// MinCpuPlatform: Minimum CPU platform to use when creating the
+	// worker.
+	// See [CPU
+	// Platforms](https://cloud.google.com/compute/docs/cpu-platforms).
+	MinCpuPlatform string `json:"minCpuPlatform,omitempty"`
+
+	// Reserved: Output only. `reserved=true` means the worker is reserved
+	// and won't be
+	// preempted.
+	Reserved bool `json:"reserved,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DiskSizeGb") 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. "DiskSizeGb") 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool: A worker
+// pool resource in the Remote Build Execution API.
+type GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool struct {
+	// Name: WorkerPool resource name formatted
+	// as:
+	// `projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_I
+	// D]`.
+	// name should not be populated when creating a worker pool since it
+	// is
+	// provided in the `poolId` field.
+	Name string `json:"name,omitempty"`
+
+	// State: Output only. State of the worker pool.
+	//
+	// Possible values:
+	//   "STATE_UNSPECIFIED" - Not a valid state, but the default value of
+	// the enum.
+	//   "CREATING" - The worker pool is in state `CREATING` once
+	// `CreateWorkerPool` is called
+	// and before all requested workers are ready.
+	//   "RUNNING" - The worker pool is in state `RUNNING` when all its
+	// workers are ready for
+	// use.
+	//   "UPDATING" - The worker pool is in state `UPDATING` once
+	// `UpdateWorkerPool` is called
+	// and before the new configuration has all the requested workers ready
+	// for
+	// use, and no older configuration has any workers. At that point the
+	// state
+	// transitions to `RUNNING`.
+	//   "DELETING" - The worker pool is in state `DELETING` once the
+	// `Delete` method is called
+	// and before the deletion completes.
+	//   "INACTIVE" - The worker pool is in state `INACTIVE` when the
+	// instance hosting the
+	// worker pool in not running.
+	State string `json:"state,omitempty"`
+
+	// WorkerConfig: Specifies the properties, such as machine type and disk
+	// size, used for
+	// creating workers in a worker pool.
+	WorkerConfig *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig `json:"workerConfig,omitempty"`
+
+	// WorkerCount: The desired number of workers in the worker pool. Must
+	// be a value between
+	// 0 and 1000.
+	WorkerCount int64 `json:"workerCount,omitempty,string"`
+
+	// 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 *GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testActionResult: An ActionResult
+// represents the result of an
+// Action being run.
+type GoogleDevtoolsRemoteexecutionV1testActionResult struct {
+	// ExitCode: The exit code of the command.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// OutputDirectories: The output directories of the action. For each
+	// output directory requested
+	// in the `output_directories` field of the Action, if the
+	// corresponding
+	// directory existed after the action completed, a single entry will
+	// be
+	// present in the output list, which will contain the digest of
+	// a Tree message containing
+	// the directory tree, and the path equal exactly to the corresponding
+	// Action
+	// output_directories member.
+	// As an example, suppose the Action had an output directory `a/b/dir`
+	// and the
+	// execution produced the following contents in `a/b/dir`: a file named
+	// `bar`
+	// and a directory named `foo` with an executable file named `baz`.
+	// Then,
+	// output_directory will contain (hashes shortened for
+	// readability):
+	//
+	// ```json
+	// // OutputDirectory proto:
+	// {
+	//   path: "a/b/dir"
+	//   tree_digest: {
+	//     hash: "4a73bc9d03...",
+	//     size: 55
+	//   }
+	// }
+	// // Tree proto with hash "4a73bc9d03..." and size 55:
+	// {
+	//   root: {
+	//     files: [
+	//       {
+	//         name: "bar",
+	//         digest: {
+	//           hash: "4a73bc9d03...",
+	//           size: 65534
+	//         }
+	//       }
+	//     ],
+	//     directories: [
+	//       {
+	//         name: "foo",
+	//         digest: {
+	//           hash: "4cf2eda940...",
+	//           size: 43
+	//         }
+	//       }
+	//     ]
+	//   }
+	//   children : {
+	//     // (Directory proto with hash "4cf2eda940..." and size 43)
+	//     files: [
+	//       {
+	//         name: "baz",
+	//         digest: {
+	//           hash: "b2c941073e...",
+	//           size: 1294,
+	//         },
+	//         is_executable: true
+	//       }
+	//     ]
+	//   }
+	// }
+	// ```
+	OutputDirectories []*GoogleDevtoolsRemoteexecutionV1testOutputDirectory `json:"outputDirectories,omitempty"`
+
+	// OutputFiles: The output files of the action. For each output file
+	// requested in the
+	// `output_files` field of the Action, if the corresponding file existed
+	// after
+	// the action completed, a single entry will be present in the output
+	// list.
+	//
+	// If the action does not produce the requested output, or produces
+	// a
+	// directory where a regular file is expected or vice versa, then that
+	// output
+	// will be omitted from the list. The server is free to arrange the
+	// output
+	// list as desired; clients MUST NOT assume that the output list is
+	// sorted.
+	OutputFiles []*GoogleDevtoolsRemoteexecutionV1testOutputFile `json:"outputFiles,omitempty"`
+
+	// StderrDigest: The digest for a blob containing the standard error of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stderr_raw` for when this will be set.
+	StderrDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"stderrDigest,omitempty"`
+
+	// StderrRaw: The standard error buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stderr_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StderrRaw string `json:"stderrRaw,omitempty"`
+
+	// StdoutDigest: The digest for a blob containing the standard output of
+	// the action, which
+	// can be retrieved from the
+	// ContentAddressableStorage.
+	// See `stdout_raw` for when this will be set.
+	StdoutDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"stdoutDigest,omitempty"`
+
+	// StdoutRaw: The standard output buffer of the action. The server will
+	// determine, based
+	// on the size of the buffer, whether to return it in raw form or to
+	// return
+	// a digest in `stdout_digest` that points to the buffer. If neither is
+	// set,
+	// then the buffer is empty. The client SHOULD NOT assume it will get
+	// one of
+	// the raw buffer or a digest on any given request and should be
+	// prepared to
+	// handle either.
+	StdoutRaw string `json:"stdoutRaw,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExitCode") 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. "ExitCode") 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 *GoogleDevtoolsRemoteexecutionV1testActionResult) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testActionResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testCommand: A `Command` is the actual
+// command executed by a worker running an
+// Action.
+//
+// Except as otherwise required, the environment (such as which
+// system
+// libraries or binaries are available, and what filesystems are mounted
+// where)
+// is defined by and specific to the implementation of the remote
+// execution API.
+type GoogleDevtoolsRemoteexecutionV1testCommand struct {
+	// Arguments: The arguments to the command. The first argument must be
+	// the path to the
+	// executable, which must be either a relative path, in which case it
+	// is
+	// evaluated with respect to the input root, or an absolute path.
+	//
+	// The working directory will always be the input root.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: The environment variables to set when running
+	// the program. The worker may
+	// provide its own default environment variables; these defaults can
+	// be
+	// overridden using this field. Additional variables can also be
+	// specified.
+	//
+	// In order to ensure that equivalent `Command`s always hash to the
+	// same
+	// value, the environment variables MUST be lexicographically sorted by
+	// name.
+	// Sorting of strings is done by code point, equivalently, by the UTF-8
+	// bytes.
+	EnvironmentVariables []*GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *GoogleDevtoolsRemoteexecutionV1testCommand) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testCommand
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable: An
+// `EnvironmentVariable` is one variable to set in the running
+// program's
+// environment.
+type GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable struct {
+	// Name: The variable name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The variable 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 *GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDigest: A content digest. A digest
+// for a given blob consists of the size of the blob
+// and its hash. The hash algorithm to use is defined by the server, but
+// servers
+// SHOULD use SHA-256.
+//
+// The size is considered to be an integral part of the digest and
+// cannot be
+// separated. That is, even if the `hash` field is correctly specified
+// but
+// `size_bytes` is not, the server MUST reject the request.
+//
+// The reason for including the size in the digest is as follows: in a
+// great
+// many cases, the server needs to know the size of the blob it is about
+// to work
+// with prior to starting an operation with it, such as flattening
+// Merkle tree
+// structures or streaming it to a worker. Technically, the server
+// could
+// implement a separate metadata store, but this results in a
+// significantly more
+// complicated implementation as opposed to having the client specify
+// the size
+// up-front (or storing the size along with the digest in every message
+// where
+// digests are embedded). This does mean that the API leaks some
+// implementation
+// details of (what we consider to be) a reasonable server
+// implementation, but
+// we consider this to be a worthwhile tradeoff.
+//
+// When a `Digest` is used to refer to a proto message, it always refers
+// to the
+// message in binary encoded form. To ensure consistent hashing, clients
+// and
+// servers MUST ensure that they serialize messages according to the
+// following
+// rules, even if there are alternate valid encodings for the same
+// message.
+// - Fields are serialized in tag order.
+// - There are no unknown fields.
+// - There are no duplicate fields.
+// - Fields are serialized according to the default semantics for their
+// type.
+//
+// Most protocol buffer implementations will always follow these rules
+// when
+// serializing, but care should be taken to avoid shortcuts. For
+// instance,
+// concatenating two messages to merge them may produce duplicate
+// fields.
+type GoogleDevtoolsRemoteexecutionV1testDigest struct {
+	// Hash: The hash. In the case of SHA-256, it will always be a lowercase
+	// hex string
+	// exactly 64 characters long.
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the blob, in bytes.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *GoogleDevtoolsRemoteexecutionV1testDigest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDigest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDirectory: A `Directory`
+// represents a directory node in a file tree, containing zero or
+// more children FileNodes
+// and DirectoryNodes.
+// Each `Node` contains its name in the directory, the digest of its
+// content
+// (either a file blob or a `Directory` proto), as well as possibly
+// some
+// metadata about the file or directory.
+//
+// In order to ensure that two equivalent directory trees hash to the
+// same
+// value, the following restrictions MUST be obeyed when constructing
+// a
+// a `Directory`:
+//   - Every child in the directory must have a path of exactly one
+// segment.
+//     Multiple levels of directory hierarchy may not be collapsed.
+//   - Each child in the directory must have a unique path segment (file
+// name).
+//   - The files and directories in the directory must each be sorted
+// in
+//     lexicographical order by path. The path strings must be sorted by
+// code
+//     point, equivalently, by UTF-8 bytes.
+//
+// A `Directory` that obeys the restrictions is said to be in canonical
+// form.
+//
+// As an example, the following could be used for a file named `bar` and
+// a
+// directory named `foo` with an executable file named `baz` (hashes
+// shortened
+// for readability):
+//
+// ```json
+// // (Directory proto)
+// {
+//   files: [
+//     {
+//       name: "bar",
+//       digest: {
+//         hash: "4a73bc9d03...",
+//         size: 65534
+//       }
+//     }
+//   ],
+//   directories: [
+//     {
+//       name: "foo",
+//       digest: {
+//         hash: "4cf2eda940...",
+//         size: 43
+//       }
+//     }
+//   ]
+// }
+//
+// // (Directory proto with hash "4cf2eda940..." and size 43)
+// {
+//   files: [
+//     {
+//       name: "baz",
+//       digest: {
+//         hash: "b2c941073e...",
+//         size: 1294,
+//       },
+//       is_executable: true
+//     }
+//   ]
+// }
+// ```
+type GoogleDevtoolsRemoteexecutionV1testDirectory struct {
+	// Directories: The subdirectories in the directory.
+	Directories []*GoogleDevtoolsRemoteexecutionV1testDirectoryNode `json:"directories,omitempty"`
+
+	// Files: The files in the directory.
+	Files []*GoogleDevtoolsRemoteexecutionV1testFileNode `json:"files,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteexecutionV1testDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testDirectoryNode: A `DirectoryNode`
+// represents a child of a
+// Directory which is itself
+// a `Directory` and its associated metadata.
+type GoogleDevtoolsRemoteexecutionV1testDirectoryNode struct {
+	// Digest: The digest of the
+	// Directory object
+	// represented. See Digest
+	// for information about how to take the digest of a proto message.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// Name: The name of the directory.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testDirectoryNode) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testDirectoryNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata: Metadata
+// about an ongoing
+// execution, which
+// will be contained in the metadata
+// field of the
+// Operation.
+type GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata struct {
+	// ActionDigest: The digest of the Action
+	// being executed.
+	ActionDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"actionDigest,omitempty"`
+
+	// Possible values:
+	//   "UNKNOWN"
+	//   "CACHE_CHECK" - Checking the result against the cache.
+	//   "QUEUED" - Currently idle, awaiting a free machine to execute.
+	//   "EXECUTING" - Currently being executed by a worker.
+	//   "COMPLETED" - Finished execution.
+	Stage string `json:"stage,omitempty"`
+
+	// StderrStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard error.
+	StderrStreamName string `json:"stderrStreamName,omitempty"`
+
+	// StdoutStreamName: If set, the client can use this name
+	// with
+	// ByteStream.Read to stream the
+	// standard output.
+	StdoutStreamName string `json:"stdoutStreamName,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionDigest") 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. "ActionDigest") 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 *GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testExecuteResponse: The response
+// message for
+// Execution.Execute,
+// which will be contained in the response
+// field of the
+// Operation.
+type GoogleDevtoolsRemoteexecutionV1testExecuteResponse struct {
+	// CachedResult: True if the result was served from cache, false if it
+	// was executed.
+	CachedResult bool `json:"cachedResult,omitempty"`
+
+	// Result: The result of the action.
+	Result *GoogleDevtoolsRemoteexecutionV1testActionResult `json:"result,omitempty"`
+
+	// ServerLogs: An optional list of additional log outputs the server
+	// wishes to provide. A
+	// server can use this to return execution-specific logs however it
+	// wishes.
+	// This is intended primarily to make it easier for users to debug
+	// issues that
+	// may be outside of the actual job execution, such as by identifying
+	// the
+	// worker executing the action or by providing logs from the worker's
+	// setup
+	// phase. The keys SHOULD be human readable so that a client can display
+	// them
+	// to a user.
+	ServerLogs map[string]GoogleDevtoolsRemoteexecutionV1testLogFile `json:"serverLogs,omitempty"`
+
+	// Status: If the status has a code other than `OK`, it indicates that
+	// the action did
+	// not finish execution. For example, if the operation times out
+	// during
+	// execution, the status will have a `DEADLINE_EXCEEDED` code. Servers
+	// MUST
+	// use this field for errors in execution, rather than the error field
+	// on the
+	// `Operation` object.
+	//
+	// If the status code is other than `OK`, then the result MUST NOT be
+	// cached.
+	// For an error status, the `result` field is optional; the server
+	// may
+	// populate the output-, stdout-, and stderr-related fields if it has
+	// any
+	// information available, such as the stdout and stderr of a timed-out
+	// action.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CachedResult") 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. "CachedResult") 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 *GoogleDevtoolsRemoteexecutionV1testExecuteResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testExecuteResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testFileNode: A `FileNode` represents
+// a single file and associated metadata.
+type GoogleDevtoolsRemoteexecutionV1testFileNode struct {
+	// Digest: The digest of the file's content.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Name: The name of the file.
+	Name string `json:"name,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testFileNode) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testFileNode
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testLogFile: A `LogFile` is a log
+// stored in the CAS.
+type GoogleDevtoolsRemoteexecutionV1testLogFile struct {
+	// Digest: The digest of the log contents.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// HumanReadable: This is a hint as to the purpose of the log, and is
+	// set to true if the log
+	// is human-readable text that can be usefully displayed to a user, and
+	// false
+	// otherwise. For instance, if a command-line client wishes to print
+	// the
+	// server logs to the terminal for a failed action, this allows it to
+	// avoid
+	// displaying a binary file.
+	HumanReadable bool `json:"humanReadable,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testLogFile) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testLogFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testOutputDirectory: An
+// `OutputDirectory` is the output in an `ActionResult` corresponding to
+// a
+// directory's full contents rather than a single file.
+type GoogleDevtoolsRemoteexecutionV1testOutputDirectory struct {
+	// Digest: DEPRECATED: This field is deprecated and should no longer be
+	// used.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// Path: The full path of the directory relative to the working
+	// directory. The path
+	// separator is a forward slash `/`. Since this is a relative path, it
+	// MUST
+	// NOT begin with a leading forward slash. The empty string value is
+	// allowed,
+	// and it denotes the entire working directory.
+	Path string `json:"path,omitempty"`
+
+	// TreeDigest: The digest of the encoded
+	// Tree proto containing the
+	// directory's contents.
+	TreeDigest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"treeDigest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteexecutionV1testOutputDirectory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testOutputDirectory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testOutputFile: An `OutputFile` is
+// similar to a
+// FileNode, but it is
+// tailored for output as part of an `ActionResult`. It allows a full
+// file path
+// rather than only a name, and allows the server to include content
+// inline.
+//
+// `OutputFile` is binary-compatible with `FileNode`.
+type GoogleDevtoolsRemoteexecutionV1testOutputFile struct {
+	// Content: The raw content of the file.
+	//
+	// This field may be used by the server to provide the content of a
+	// file
+	// inline in an
+	// ActionResult and
+	// avoid requiring that the client make a separate call
+	// to
+	// [ContentAddressableStorage.GetBlob] to retrieve it.
+	//
+	// The client SHOULD NOT assume that it will get raw content with any
+	// request,
+	// and always be prepared to retrieve it via `digest`.
+	Content string `json:"content,omitempty"`
+
+	// Digest: The digest of the file's content.
+	Digest *GoogleDevtoolsRemoteexecutionV1testDigest `json:"digest,omitempty"`
+
+	// IsExecutable: True if file is executable, false otherwise.
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The full path of the file relative to the input root, including
+	// the
+	// filename. The path separator is a forward slash `/`. Since this is
+	// a
+	// relative path, it MUST NOT begin with a leading forward slash.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Content") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Content") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GoogleDevtoolsRemoteexecutionV1testOutputFile) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testOutputFile
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testRequestMetadata: An optional
+// Metadata to attach to any RPC request to tell the server about
+// an
+// external context of the request. The server may use this for logging
+// or other
+// purposes. To use it, the client attaches the header to the call using
+// the
+// canonical proto serialization:
+// name:
+// google.devtools.remoteexecution.v1test.requestmetadata-bin
+// contents: the base64 encoded binary RequestMetadata message.
+type GoogleDevtoolsRemoteexecutionV1testRequestMetadata struct {
+	// ActionId: An identifier that ties multiple requests to the same
+	// action.
+	// For example, multiple requests to the CAS, Action Cache, and
+	// Execution
+	// API are used in order to compile foo.cc.
+	ActionId string `json:"actionId,omitempty"`
+
+	// CorrelatedInvocationsId: An identifier to tie multiple tool
+	// invocations together. For example,
+	// runs of foo_test, bar_test and baz_test on a post-submit of a given
+	// patch.
+	CorrelatedInvocationsId string `json:"correlatedInvocationsId,omitempty"`
+
+	// ToolDetails: The details for the tool invoking the requests.
+	ToolDetails *GoogleDevtoolsRemoteexecutionV1testToolDetails `json:"toolDetails,omitempty"`
+
+	// ToolInvocationId: An identifier that ties multiple actions together
+	// to a final result.
+	// For example, multiple actions are required to build and run foo_test.
+	ToolInvocationId string `json:"toolInvocationId,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ActionId") 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. "ActionId") 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 *GoogleDevtoolsRemoteexecutionV1testRequestMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testRequestMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testToolDetails: Details for the tool
+// used to call the API.
+type GoogleDevtoolsRemoteexecutionV1testToolDetails struct {
+	// ToolName: Name of the tool, e.g. bazel.
+	ToolName string `json:"toolName,omitempty"`
+
+	// ToolVersion: Version of the tool used for the request, e.g. 5.0.3.
+	ToolVersion string `json:"toolVersion,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ToolName") 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. "ToolName") 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 *GoogleDevtoolsRemoteexecutionV1testToolDetails) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testToolDetails
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteexecutionV1testTree: A `Tree` contains all
+// the
+// Directory protos in a
+// single directory Merkle tree, compressed into one message.
+type GoogleDevtoolsRemoteexecutionV1testTree struct {
+	// Children: All the child directories: the directories referred to by
+	// the root and,
+	// recursively, all its children. In order to reconstruct the directory
+	// tree,
+	// the client must take the digests of each of the child directories and
+	// then
+	// build up a tree starting from the `root`.
+	Children []*GoogleDevtoolsRemoteexecutionV1testDirectory `json:"children,omitempty"`
+
+	// Root: The root directory in the tree.
+	Root *GoogleDevtoolsRemoteexecutionV1testDirectory `json:"root,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Children") 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. "Children") 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 *GoogleDevtoolsRemoteexecutionV1testTree) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteexecutionV1testTree
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2AdminTemp: AdminTemp is a
+// prelimiary set of administration tasks. It's called "Temp"
+// because we do not yet know the best way to represent admin tasks;
+// it's
+// possible that this will be entirely replaced in later versions of
+// this API.
+// If this message proves to be sufficient, it will be renamed in the
+// alpha or
+// beta release of this API.
+//
+// This message (suitably marshalled into a protobuf.Any) can be used as
+// the
+// inline_assignment field in a lease; the lease assignment field should
+// simply
+// be "admin" in these cases.
+//
+// This message is heavily based on Swarming administration tasks from
+// the LUCI
+// project (http://github.com/luci/luci-py/appengine/swarming).
+type GoogleDevtoolsRemoteworkersV1test2AdminTemp struct {
+	// Arg: The argument to the admin action; see `Command` for semantics.
+	Arg string `json:"arg,omitempty"`
+
+	// Command: The admin action; see `Command` for legal values.
+	//
+	// Possible values:
+	//   "UNSPECIFIED" - Illegal value.
+	//   "BOT_UPDATE" - Download and run a new version of the bot. `arg`
+	// will be a resource
+	// accessible via `ByteStream.Read` to obtain the new bot code.
+	//   "BOT_RESTART" - Restart the bot without downloading a new version.
+	// `arg` will be a
+	// message to log.
+	//   "BOT_TERMINATE" - Shut down the bot. `arg` will be a task resource
+	// name (similar to those
+	// in tasks.proto) that the bot can use to tell the server that it
+	// is
+	// terminating.
+	//   "HOST_RESTART" - Restart the host computer. `arg` will be a message
+	// to log.
+	Command string `json:"command,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arg") 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. "Arg") 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 *GoogleDevtoolsRemoteworkersV1test2AdminTemp) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2AdminTemp
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Blob: Describes a blob of binary
+// content with its digest.
+type GoogleDevtoolsRemoteworkersV1test2Blob struct {
+	// Contents: The contents of the blob.
+	Contents string `json:"contents,omitempty"`
+
+	// Digest: The digest of the blob. This should be verified by the
+	// receiver.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Contents") 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. "Contents") 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 *GoogleDevtoolsRemoteworkersV1test2Blob) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Blob
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandOutputs: DEPRECATED - use
+// CommandResult instead.
+// Describes the actual outputs from the task.
+type GoogleDevtoolsRemoteworkersV1test2CommandOutputs struct {
+	// ExitCode: exit_code is only fully reliable if the status' code is OK.
+	// If the task
+	// exceeded its deadline or was cancelled, the process may still produce
+	// an
+	// exit code as it is cancelled, and this will be populated, but a
+	// successful
+	// (zero) is unlikely to be correct unless the status code is OK.
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// Outputs: The output files. The blob referenced by the digest should
+	// contain
+	// one of the following (implementation-dependent):
+	//    * A marshalled DirectoryMetadata of the returned filesystem
+	//    * A LUCI-style .isolated file
+	Outputs *GoogleDevtoolsRemoteworkersV1test2Digest `json:"outputs,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExitCode") 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. "ExitCode") 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 *GoogleDevtoolsRemoteworkersV1test2CommandOutputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandOutputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandOverhead: DEPRECATED - use
+// CommandResult instead.
+// Can be used as part of CompleteRequest.metadata, or are part of a
+// more
+// sophisticated message.
+type GoogleDevtoolsRemoteworkersV1test2CommandOverhead struct {
+	// Duration: The elapsed time between calling Accept and Complete. The
+	// server will also
+	// have its own idea of what this should be, but this excludes the
+	// overhead of
+	// the RPCs and the bot response time.
+	Duration string `json:"duration,omitempty"`
+
+	// Overhead: The amount of time *not* spent executing the command
+	// (ie
+	// uploading/downloading files).
+	Overhead string `json:"overhead,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Duration") 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. "Duration") 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 *GoogleDevtoolsRemoteworkersV1test2CommandOverhead) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandOverhead
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandResult: All information
+// about the execution of a command, suitable for providing as
+// the Bots interface's `Lease.result` field.
+type GoogleDevtoolsRemoteworkersV1test2CommandResult struct {
+	// Duration: The elapsed time between calling Accept and Complete. The
+	// server will also
+	// have its own idea of what this should be, but this excludes the
+	// overhead of
+	// the RPCs and the bot response time.
+	Duration string `json:"duration,omitempty"`
+
+	// ExitCode: The exit code of the process. An exit code of "0" should
+	// only be trusted if
+	// `status` has a code of OK (otherwise it may simply be unset).
+	ExitCode int64 `json:"exitCode,omitempty"`
+
+	// Outputs: The output files. The blob referenced by the digest should
+	// contain
+	// one of the following (implementation-dependent):
+	//    * A marshalled DirectoryMetadata of the returned filesystem
+	//    * A LUCI-style .isolated file
+	Outputs *GoogleDevtoolsRemoteworkersV1test2Digest `json:"outputs,omitempty"`
+
+	// Overhead: The amount of time *not* spent executing the command
+	// (ie
+	// uploading/downloading files).
+	Overhead string `json:"overhead,omitempty"`
+
+	// Statistics: Implementation-dependent statistics about the task. Both
+	// servers and bots
+	// may define messages which can be encoded here; bots are free to
+	// provide
+	// statistics in multiple formats, and servers are free to choose one or
+	// more
+	// of the values to process and ignore others. In particular, it is
+	// *not*
+	// considered an error for the bot to provide the server with a field
+	// that it
+	// doesn't know about.
+	Statistics []googleapi.RawMessage `json:"statistics,omitempty"`
+
+	// Status: An overall status for the command. For example, if the
+	// command timed out,
+	// this might have a code of DEADLINE_EXCEEDED; if it was killed by the
+	// OS for
+	// memory exhaustion, it might have a code of RESOURCE_EXHAUSTED.
+	Status *GoogleRpcStatus `json:"status,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Duration") 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. "Duration") 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 *GoogleDevtoolsRemoteworkersV1test2CommandResult) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandResult
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTask: Describes a
+// shell-style task to execute, suitable for providing as the
+// Bots
+// interface's `Lease.payload` field.
+type GoogleDevtoolsRemoteworkersV1test2CommandTask struct {
+	// ExpectedOutputs: The expected outputs from the task.
+	ExpectedOutputs *GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs `json:"expectedOutputs,omitempty"`
+
+	// Inputs: The inputs to the task.
+	Inputs *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs `json:"inputs,omitempty"`
+
+	// Timeouts: The timeouts of this task.
+	Timeouts *GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts `json:"timeouts,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExpectedOutputs") 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. "ExpectedOutputs") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTask) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTask
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs: Describes the
+// inputs to a shell-style task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs struct {
+	// Arguments: The command itself to run (e.g., argv).
+	//
+	// This field should be passed directly to the underlying operating
+	// system,
+	// and so it must be sensible to that operating system. For example,
+	// on
+	// Windows, the first argument might be "C:\Windows\System32\ping.exe"
+	// -
+	// that is, using drive letters and backslashes. A command for a
+	// *nix
+	// system, on the other hand, would use forward slashes.
+	//
+	// All other fields in the RWAPI must consistently use forward
+	// slashes,
+	// since those fields may be interpretted by both the service and the
+	// bot.
+	Arguments []string `json:"arguments,omitempty"`
+
+	// EnvironmentVariables: All environment variables required by the task.
+	EnvironmentVariables []*GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable `json:"environmentVariables,omitempty"`
+
+	// Files: The input filesystem to be set up prior to the task beginning.
+	// The
+	// contents should be a repeated set of FileMetadata messages though
+	// other
+	// formats are allowed if better for the implementation (eg, a
+	// LUCI-style
+	// .isolated file).
+	//
+	// This field is repeated since implementations might want to cache
+	// the
+	// metadata, in which case it may be useful to break up portions of
+	// the
+	// filesystem that change frequently (eg, specific input files) from
+	// those
+	// that don't (eg, standard header files).
+	Files []*GoogleDevtoolsRemoteworkersV1test2Digest `json:"files,omitempty"`
+
+	// InlineBlobs: Inline contents for blobs expected to be needed by the
+	// bot to execute the
+	// task. For example, contents of entries in `files` or blobs that
+	// are
+	// indirectly referenced by an entry there.
+	//
+	// The bot should check against this list before downloading required
+	// task
+	// inputs to reduce the number of communications between itself and
+	// the
+	// remote CAS server.
+	InlineBlobs []*GoogleDevtoolsRemoteworkersV1test2Blob `json:"inlineBlobs,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Arguments") 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. "Arguments") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
+// : An environment variable required by this task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable struct {
+	// Name: The envvar name.
+	Name string `json:"name,omitempty"`
+
+	// Value: The envvar 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs: Describes the
+// expected outputs of the command.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs struct {
+	// Directories: A list of expected directories, relative to the
+	// execution root. All paths
+	// MUST be delimited by forward slashes.
+	Directories []string `json:"directories,omitempty"`
+
+	// Files: A list of expected files, relative to the execution root. All
+	// paths
+	// MUST be delimited by forward slashes.
+	Files []string `json:"files,omitempty"`
+
+	// StderrDestination: The destination to which any stderr should be
+	// sent. The method by which
+	// the bot should send the stream contents to that destination is
+	// not
+	// defined in this API. As examples, the destination could be a
+	// file
+	// referenced in the `files` field in this message, or it could be a
+	// URI
+	// that must be written via the ByteStream API.
+	StderrDestination string `json:"stderrDestination,omitempty"`
+
+	// StdoutDestination: The destination to which any stdout should be
+	// sent. The method by which
+	// the bot should send the stream contents to that destination is
+	// not
+	// defined in this API. As examples, the destination could be a
+	// file
+	// referenced in the `files` field in this message, or it could be a
+	// URI
+	// that must be written via the ByteStream API.
+	StdoutDestination string `json:"stdoutDestination,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts: Describes the
+// timeouts associated with this task.
+type GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts struct {
+	// Execution: This specifies the maximum time that the task can run,
+	// excluding the
+	// time required to download inputs or upload outputs. That is, the
+	// worker
+	// will terminate the task if it runs longer than this.
+	Execution string `json:"execution,omitempty"`
+
+	// Idle: This specifies the maximum amount of time the task can be idle
+	// - that is,
+	// go without generating some output in either stdout or stderr. If
+	// the
+	// process is silent for more than the specified time, the worker
+	// will
+	// terminate the task.
+	Idle string `json:"idle,omitempty"`
+
+	// Shutdown: If the execution or IO timeouts are exceeded, the worker
+	// will try to
+	// gracefully terminate the task and return any existing logs.
+	// However,
+	// tasks may be hard-frozen in which case this process will fail.
+	// This
+	// timeout specifies how long to wait for a terminated task to shut
+	// down
+	// gracefully (e.g. via SIGTERM) before we bring down the hammer
+	// (e.g.
+	// SIGKILL on *nix, CTRL_BREAK_EVENT on Windows).
+	Shutdown string `json:"shutdown,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Execution") 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. "Execution") 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 *GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Digest: The CommandTask and
+// CommandResult messages assume the existence of a service
+// that can serve blobs of content, identified by a hash and size known
+// as a
+// "digest." The method by which these blobs may be retrieved is not
+// specified
+// here, but a model implementation is in the Remote Execution
+// API's
+// "ContentAddressibleStorage" interface.
+//
+// In the context of the RWAPI, a Digest will virtually always refer to
+// the
+// contents of a file or a directory. The latter is represented by
+// the
+// byte-encoded Directory message.
+type GoogleDevtoolsRemoteworkersV1test2Digest struct {
+	// Hash: A string-encoded hash (eg "1a2b3c", not the byte array [0x1a,
+	// 0x2b, 0x3c])
+	// using an implementation-defined hash algorithm (eg SHA-256).
+	Hash string `json:"hash,omitempty"`
+
+	// SizeBytes: The size of the contents. While this is not strictly
+	// required as part of an
+	// identifier (after all, any given hash will have exactly one
+	// canonical
+	// size), it's useful in almost all cases when one might want to send
+	// or
+	// retrieve blobs of content and is included here for this reason.
+	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Hash") 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. "Hash") 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 *GoogleDevtoolsRemoteworkersV1test2Digest) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Digest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2Directory: The contents of a
+// directory. Similar to the equivalent message in the Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2Directory struct {
+	// Directories: Any subdirectories
+	Directories []*GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata `json:"directories,omitempty"`
+
+	// Files: The files in this directory
+	Files []*GoogleDevtoolsRemoteworkersV1test2FileMetadata `json:"files,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Directories") 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. "Directories") 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 *GoogleDevtoolsRemoteworkersV1test2Directory) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2Directory
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata: The metadata for
+// a directory. Similar to the equivalent message in the
+// Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata struct {
+	// Digest: A pointer to the contents of the directory, in the form of a
+	// marshalled
+	// Directory message.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// Path: The path of the directory, as in FileMetadata.path.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Digest") 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. "Digest") 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 *GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleDevtoolsRemoteworkersV1test2FileMetadata: The metadata for a
+// file. Similar to the equivalent message in the Remote
+// Execution API.
+type GoogleDevtoolsRemoteworkersV1test2FileMetadata struct {
+	// Contents: If the file is small enough, its contents may also or
+	// alternatively be
+	// listed here.
+	Contents string `json:"contents,omitempty"`
+
+	// Digest: A pointer to the contents of the file. The method by which a
+	// client
+	// retrieves the contents from a CAS system is not defined here.
+	Digest *GoogleDevtoolsRemoteworkersV1test2Digest `json:"digest,omitempty"`
+
+	// IsExecutable: Properties of the file
+	IsExecutable bool `json:"isExecutable,omitempty"`
+
+	// Path: The path of this file. If this message is part of
+	// the
+	// CommandOutputs.outputs fields, the path is relative to the execution
+	// root
+	// and must correspond to an entry in CommandTask.outputs.files. If
+	// this
+	// message is part of a Directory message, then the path is relative to
+	// the
+	// root of that directory. All paths MUST be delimited by forward
+	// slashes.
+	Path string `json:"path,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Contents") 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. "Contents") 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 *GoogleDevtoolsRemoteworkersV1test2FileMetadata) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleDevtoolsRemoteworkersV1test2FileMetadata
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleLongrunningOperation: This resource represents a long-running
+// operation that is the result of a
+// network API call.
+type GoogleLongrunningOperation struct {
+	// Done: If the value is `false`, it means the operation is still in
+	// progress.
+	// If `true`, the operation is completed, and either `error` or
+	// `response` is
+	// available.
+	Done bool `json:"done,omitempty"`
+
+	// Error: The error result of the operation in case of failure or
+	// cancellation.
+	Error *GoogleRpcStatus `json:"error,omitempty"`
+
+	// Metadata: Service-specific metadata associated with the operation.
+	// It typically
+	// contains progress information and common metadata such as create
+	// time.
+	// Some services might not provide such metadata.  Any method that
+	// returns a
+	// long-running operation should document the metadata type, if any.
+	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
+
+	// Name: The server-assigned name, which is only unique within the same
+	// service that
+	// originally returns it. If you use the default HTTP mapping,
+	// the
+	// `name` should have the format of `operations/some/unique/name`.
+	Name string `json:"name,omitempty"`
+
+	// Response: The normal response of the operation in case of success.
+	// If the original
+	// method returns no data on success, such as `Delete`, the response
+	// is
+	// `google.protobuf.Empty`.  If the original method is
+	// standard
+	// `Get`/`Create`/`Update`, the response should be the resource.  For
+	// other
+	// methods, the response should have the type `XxxResponse`, where
+	// `Xxx`
+	// is the original method name.  For example, if the original method
+	// name
+	// is `TakeSnapshot()`, the inferred response type
+	// is
+	// `TakeSnapshotResponse`.
+	Response googleapi.RawMessage `json:"response,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Done") 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. "Done") 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 *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleLongrunningOperation
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GoogleRpcStatus: The `Status` type defines a logical error model that
+// is suitable for different
+// programming environments, including REST APIs and RPC APIs. It is
+// used by
+// [gRPC](https://github.com/grpc). The error model is designed to
+// be:
+//
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code, error
+// message,
+// and error details. The error code should be an enum value
+// of
+// google.rpc.Code, but it may accept additional error codes if needed.
+// The
+// error message should be a developer-facing English message that
+// helps
+// developers *understand* and *resolve* the error. If a localized
+// user-facing
+// error message is needed, put the localized message in the error
+// details or
+// localize it in the client. The optional error details may contain
+// arbitrary
+// information about the error. There is a predefined set of error
+// detail types
+// in the package `google.rpc` that can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error
+// model, but it
+// is not necessarily the actual wire format. When the `Status` message
+// is
+// exposed in different client libraries and different wire protocols,
+// it can be
+// mapped differently. For example, it will likely be mapped to some
+// exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety
+// of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different
+// environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the
+// client,
+//     it may embed the `Status` in the normal response to indicate the
+// partial
+//     errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step
+// may
+//     have a `Status` message for error reporting.
+//
+// - Batch operations. If a client uses batch request and batch
+// response, the
+//     `Status` message should be used directly inside batch response,
+// one for
+//     each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous
+// operation
+//     results in its response, the status of those operations should
+// be
+//     represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message
+// `Status` could
+//     be used directly after any stripping needed for security/privacy
+// reasons.
+type GoogleRpcStatus struct {
+	// Code: The status code, which should be an enum value of
+	// google.rpc.Code.
+	Code int64 `json:"code,omitempty"`
+
+	// Details: A list of messages that carry the error details.  There is a
+	// common set of
+	// message types for APIs to use.
+	Details []googleapi.RawMessage `json:"details,omitempty"`
+
+	// Message: A developer-facing error message, which should be in
+	// English. Any
+	// user-facing error message should be localized and sent in
+	// the
+	// google.rpc.Status.details field, or localized by the client.
+	Message string `json:"message,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 *GoogleRpcStatus) MarshalJSON() ([]byte, error) {
+	type NoMethod GoogleRpcStatus
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// method id "remotebuildexecution.actionResults.get":
+
+type ActionResultsGetCall struct {
+	s            *Service
+	instanceName string
+	hash         string
+	sizeBytes    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Retrieve a cached execution result.
+//
+// Errors:
+// * `NOT_FOUND`: The requested `ActionResult` is not in the cache.
+func (r *ActionResultsService) Get(instanceName string, hash string, sizeBytes int64) *ActionResultsGetCall {
+	c := &ActionResultsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.instanceName = instanceName
+	c.hash = hash
+	c.sizeBytes = sizeBytes
+	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 *ActionResultsGetCall) Fields(s ...googleapi.Field) *ActionResultsGetCall {
+	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 *ActionResultsGetCall) IfNoneMatch(entityTag string) *ActionResultsGetCall {
+	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 *ActionResultsGetCall) Context(ctx context.Context) *ActionResultsGetCall {
+	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 *ActionResultsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ActionResultsGetCall) 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, "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}")
+	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{
+		"instanceName": c.instanceName,
+		"hash":         c.hash,
+		"sizeBytes":    strconv.FormatInt(c.sizeBytes, 10),
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.actionResults.get" call.
+// Exactly one of *BuildBazelRemoteExecutionV2ActionResult or error will
+// be non-nil. Any non-2xx status code is an error. Response headers are
+// in either
+// *BuildBazelRemoteExecutionV2ActionResult.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 *ActionResultsGetCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2ActionResult, 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 := &BuildBazelRemoteExecutionV2ActionResult{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieve a cached execution result.\n\nErrors:\n* `NOT_FOUND`: The requested `ActionResult` is not in the cache.",
+	//   "flatPath": "v2/{v2Id}/actionResults/{hash}/{sizeBytes}",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.actionResults.get",
+	//   "parameterOrder": [
+	//     "instanceName",
+	//     "hash",
+	//     "sizeBytes"
+	//   ],
+	//   "parameters": {
+	//     "hash": {
+	//       "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "instanceName": {
+	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "sizeBytes": {
+	//       "description": "The size of the blob, in bytes.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}",
+	//   "response": {
+	//     "$ref": "BuildBazelRemoteExecutionV2ActionResult"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.actionResults.update":
+
+type ActionResultsUpdateCall struct {
+	s                                       *Service
+	instanceName                            string
+	hash                                    string
+	sizeBytes                               int64
+	buildbazelremoteexecutionv2actionresult *BuildBazelRemoteExecutionV2ActionResult
+	urlParams_                              gensupport.URLParams
+	ctx_                                    context.Context
+	header_                                 http.Header
+}
+
+// Update: Upload a new execution result.
+//
+// This method is intended for servers which implement the distributed
+// cache
+// independently of the
+// Execution API. As a
+// result, it is OPTIONAL for servers to implement.
+//
+// In order to allow the server to perform access control based on the
+// type of
+// action, and to assist with client debugging, the client MUST first
+// upload
+// the Action that produced the
+// result, along with its
+// Command, into the
+// `ContentAddressableStorage`.
+//
+// Errors:
+// * `UNIMPLEMENTED`: This method is not supported by the server.
+// * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add
+// the
+//   entry to the cache.
+func (r *ActionResultsService) Update(instanceName string, hash string, sizeBytes int64, buildbazelremoteexecutionv2actionresult *BuildBazelRemoteExecutionV2ActionResult) *ActionResultsUpdateCall {
+	c := &ActionResultsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.instanceName = instanceName
+	c.hash = hash
+	c.sizeBytes = sizeBytes
+	c.buildbazelremoteexecutionv2actionresult = buildbazelremoteexecutionv2actionresult
+	return c
+}
+
+// ResultsCachePolicyPriority sets the optional parameter
+// "resultsCachePolicy.priority": The priority (relative importance) of
+// this content in the overall cache.
+// Generally, a lower value means a longer retention time or other
+// advantage,
+// but the interpretation of a given value is server-dependent. A
+// priority of
+// 0 means a *default* value, decided by the server.
+//
+// The particular semantics of this field is up to the server. In
+// particular,
+// every server will have their own supported range of priorities, and
+// will
+// decide how these map into retention/eviction policy.
+func (c *ActionResultsUpdateCall) ResultsCachePolicyPriority(resultsCachePolicyPriority int64) *ActionResultsUpdateCall {
+	c.urlParams_.Set("resultsCachePolicy.priority", fmt.Sprint(resultsCachePolicyPriority))
+	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 *ActionResultsUpdateCall) Fields(s ...googleapi.Field) *ActionResultsUpdateCall {
+	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 *ActionResultsUpdateCall) Context(ctx context.Context) *ActionResultsUpdateCall {
+	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 *ActionResultsUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ActionResultsUpdateCall) 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.buildbazelremoteexecutionv2actionresult)
+	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, "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}")
+	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{
+		"instanceName": c.instanceName,
+		"hash":         c.hash,
+		"sizeBytes":    strconv.FormatInt(c.sizeBytes, 10),
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.actionResults.update" call.
+// Exactly one of *BuildBazelRemoteExecutionV2ActionResult or error will
+// be non-nil. Any non-2xx status code is an error. Response headers are
+// in either
+// *BuildBazelRemoteExecutionV2ActionResult.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 *ActionResultsUpdateCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2ActionResult, 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 := &BuildBazelRemoteExecutionV2ActionResult{
+		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": "Upload a new execution result.\n\nThis method is intended for servers which implement the distributed cache\nindependently of the\nExecution API. As a\nresult, it is OPTIONAL for servers to implement.\n\nIn order to allow the server to perform access control based on the type of\naction, and to assist with client debugging, the client MUST first upload\nthe Action that produced the\nresult, along with its\nCommand, into the\n`ContentAddressableStorage`.\n\nErrors:\n* `UNIMPLEMENTED`: This method is not supported by the server.\n* `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the\n  entry to the cache.",
+	//   "flatPath": "v2/{v2Id}/actionResults/{hash}/{sizeBytes}",
+	//   "httpMethod": "PUT",
+	//   "id": "remotebuildexecution.actionResults.update",
+	//   "parameterOrder": [
+	//     "instanceName",
+	//     "hash",
+	//     "sizeBytes"
+	//   ],
+	//   "parameters": {
+	//     "hash": {
+	//       "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "instanceName": {
+	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "resultsCachePolicy.priority": {
+	//       "description": "The priority (relative importance) of this content in the overall cache.\nGenerally, a lower value means a longer retention time or other advantage,\nbut the interpretation of a given value is server-dependent. A priority of\n0 means a *default* value, decided by the server.\n\nThe particular semantics of this field is up to the server. In particular,\nevery server will have their own supported range of priorities, and will\ndecide how these map into retention/eviction policy.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "sizeBytes": {
+	//       "description": "The size of the blob, in bytes.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}",
+	//   "request": {
+	//     "$ref": "BuildBazelRemoteExecutionV2ActionResult"
+	//   },
+	//   "response": {
+	//     "$ref": "BuildBazelRemoteExecutionV2ActionResult"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.actions.execute":
+
+type ActionsExecuteCall struct {
+	s                                         *Service
+	instanceName                              string
+	buildbazelremoteexecutionv2executerequest *BuildBazelRemoteExecutionV2ExecuteRequest
+	urlParams_                                gensupport.URLParams
+	ctx_                                      context.Context
+	header_                                   http.Header
+}
+
+// Execute: Execute an action remotely.
+//
+// In order to execute an action, the client must first upload all of
+// the
+// inputs, the
+// Command to run, and the
+// Action into the
+// ContentAddressableStorage.
+// It then calls `Execute` with an `action_digest` referring to them.
+// The
+// server will run the action and eventually return the result.
+//
+// The input `Action`'s fields MUST meet the various
+// canonicalization
+// requirements specified in the documentation for their types so that
+// it has
+// the same digest as other logically equivalent `Action`s. The server
+// MAY
+// enforce the requirements and return errors if a non-canonical input
+// is
+// received. It MAY also proceed without verifying some or all of
+// the
+// requirements, such as for performance reasons. If the server does
+// not
+// verify the requirement, then it will treat the `Action` as distinct
+// from
+// another logically equivalent action if they hash
+// differently.
+//
+// Returns a stream of
+// google.longrunning.Operation messages
+// describing the resulting execution, with eventual
+// `response`
+// ExecuteResponse. The
+// `metadata` on the operation is of type
+// ExecuteOperationMetadata.
+//
+// If the client remains connected after the first response is returned
+// after
+// the server, then updates are streamed as if the client had
+// called
+// WaitExecution
+// until the execution completes or the request reaches an error.
+// The
+// operation can also be queried using Operations
+// API.
+//
+// The server NEED NOT implement other methods or functionality of
+// the
+// Operations API.
+//
+// Errors discovered during creation of the `Operation` will be
+// reported
+// as gRPC Status errors, while errors that occurred while running
+// the
+// action will be reported in the `status` field of the
+// `ExecuteResponse`. The
+// server MUST NOT set the `error` field of the `Operation` proto.
+// The possible errors include:
+// * `INVALID_ARGUMENT`: One or more arguments are invalid.
+// * `FAILED_PRECONDITION`: One or more errors occurred in setting up
+// the
+//   action requested, such as a missing input or command or no worker
+// being
+//   available. The client may be able to fix the errors and retry.
+// * `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource
+// to run
+//   the action.
+// * `UNAVAILABLE`: Due to a transient condition, such as all workers
+// being
+//   occupied (and the server does not support a queue), the action
+// could not
+//   be started. The client should retry.
+// * `INTERNAL`: An internal error occurred in the execution engine or
+// the
+//   worker.
+// * `DEADLINE_EXCEEDED`: The execution timed out.
+//
+// In the case of a missing input or command, the server SHOULD
+// additionally
+// send a PreconditionFailure error detail
+// where, for each requested blob not present in the CAS, there is
+// a
+// `Violation` with a `type` of `MISSING` and a `subject`
+// of
+// "blobs/{hash}/{size}" indicating the digest of the missing blob.
+func (r *ActionsService) Execute(instanceName string, buildbazelremoteexecutionv2executerequest *BuildBazelRemoteExecutionV2ExecuteRequest) *ActionsExecuteCall {
+	c := &ActionsExecuteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.instanceName = instanceName
+	c.buildbazelremoteexecutionv2executerequest = buildbazelremoteexecutionv2executerequest
+	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 *ActionsExecuteCall) Fields(s ...googleapi.Field) *ActionsExecuteCall {
+	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 *ActionsExecuteCall) Context(ctx context.Context) *ActionsExecuteCall {
+	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 *ActionsExecuteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ActionsExecuteCall) 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.buildbazelremoteexecutionv2executerequest)
+	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, "v2/{+instanceName}/actions:execute")
+	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{
+		"instanceName": c.instanceName,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.actions.execute" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *ActionsExecuteCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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": "Execute an action remotely.\n\nIn order to execute an action, the client must first upload all of the\ninputs, the\nCommand to run, and the\nAction into the\nContentAddressableStorage.\nIt then calls `Execute` with an `action_digest` referring to them. The\nserver will run the action and eventually return the result.\n\nThe input `Action`'s fields MUST meet the various canonicalization\nrequirements specified in the documentation for their types so that it has\nthe same digest as other logically equivalent `Action`s. The server MAY\nenforce the requirements and return errors if a non-canonical input is\nreceived. It MAY also proceed without verifying some or all of the\nrequirements, such as for performance reasons. If the server does not\nverify the requirement, then it will treat the `Action` as distinct from\nanother logically equivalent action if they hash differently.\n\nReturns a stream of\ngoogle.longrunning.Operation messages\ndescribing the resulting execution, with eventual `response`\nExecuteResponse. The\n`metadata` on the operation is of type\nExecuteOperationMetadata.\n\nIf the client remains connected after the first response is returned after\nthe server, then updates are streamed as if the client had called\nWaitExecution\nuntil the execution completes or the request reaches an error. The\noperation can also be queried using Operations\nAPI.\n\nThe server NEED NOT implement other methods or functionality of the\nOperations API.\n\nErrors discovered during creation of the `Operation` will be reported\nas gRPC Status errors, while errors that occurred while running the\naction will be reported in the `status` field of the `ExecuteResponse`. The\nserver MUST NOT set the `error` field of the `Operation` proto.\nThe possible errors include:\n* `INVALID_ARGUMENT`: One or more arguments are invalid.\n* `FAILED_PRECONDITION`: One or more errors occurred in setting up the\n  action requested, such as a missing input or command or no worker being\n  available. The client may be able to fix the errors and retry.\n* `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run\n  the action.\n* `UNAVAILABLE`: Due to a transient condition, such as all workers being\n  occupied (and the server does not support a queue), the action could not\n  be started. The client should retry.\n* `INTERNAL`: An internal error occurred in the execution engine or the\n  worker.\n* `DEADLINE_EXCEEDED`: The execution timed out.\n\nIn the case of a missing input or command, the server SHOULD additionally\nsend a PreconditionFailure error detail\nwhere, for each requested blob not present in the CAS, there is a\n`Violation` with a `type` of `MISSING` and a `subject` of\n`\"blobs/{hash}/{size}\"` indicating the digest of the missing blob.",
+	//   "flatPath": "v2/{v2Id}/actions:execute",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.actions.execute",
+	//   "parameterOrder": [
+	//     "instanceName"
+	//   ],
+	//   "parameters": {
+	//     "instanceName": {
+	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+instanceName}/actions:execute",
+	//   "request": {
+	//     "$ref": "BuildBazelRemoteExecutionV2ExecuteRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.blobs.batchRead":
+
+type BlobsBatchReadCall struct {
+	s                                                *Service
+	instanceName                                     string
+	buildbazelremoteexecutionv2batchreadblobsrequest *BuildBazelRemoteExecutionV2BatchReadBlobsRequest
+	urlParams_                                       gensupport.URLParams
+	ctx_                                             context.Context
+	header_                                          http.Header
+}
+
+// BatchRead: Download many blobs at once.
+//
+// The server may enforce a limit of the combined total size of blobs
+// to be downloaded using this API. This limit may be obtained using
+// the
+// Capabilities API.
+// Requests exceeding the limit should either be split into
+// smaller
+// chunks or downloaded using the
+// ByteStream API, as appropriate.
+//
+// This request is equivalent to calling a Bytestream `Read` request
+// on each individual blob, in parallel. The requests may succeed or
+// fail
+// independently.
+//
+// Errors:
+// * `INVALID_ARGUMENT`: The client attempted to read more than the
+//   server supported limit.
+//
+// Every error on individual read will be returned in the corresponding
+// digest
+// status.
+func (r *BlobsService) BatchRead(instanceName string, buildbazelremoteexecutionv2batchreadblobsrequest *BuildBazelRemoteExecutionV2BatchReadBlobsRequest) *BlobsBatchReadCall {
+	c := &BlobsBatchReadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.instanceName = instanceName
+	c.buildbazelremoteexecutionv2batchreadblobsrequest = buildbazelremoteexecutionv2batchreadblobsrequest
+	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 *BlobsBatchReadCall) Fields(s ...googleapi.Field) *BlobsBatchReadCall {
+	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 *BlobsBatchReadCall) Context(ctx context.Context) *BlobsBatchReadCall {
+	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 *BlobsBatchReadCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *BlobsBatchReadCall) 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.buildbazelremoteexecutionv2batchreadblobsrequest)
+	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, "v2/{+instanceName}/blobs:batchRead")
+	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{
+		"instanceName": c.instanceName,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.blobs.batchRead" call.
+// Exactly one of *BuildBazelRemoteExecutionV2BatchReadBlobsResponse or
+// error will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *BuildBazelRemoteExecutionV2BatchReadBlobsResponse.ServerResponse.Head
+// er 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 *BlobsBatchReadCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2BatchReadBlobsResponse, 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 := &BuildBazelRemoteExecutionV2BatchReadBlobsResponse{
+		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": "Download many blobs at once.\n\nThe server may enforce a limit of the combined total size of blobs\nto be downloaded using this API. This limit may be obtained using the\nCapabilities API.\nRequests exceeding the limit should either be split into smaller\nchunks or downloaded using the\nByteStream API, as appropriate.\n\nThis request is equivalent to calling a Bytestream `Read` request\non each individual blob, in parallel. The requests may succeed or fail\nindependently.\n\nErrors:\n* `INVALID_ARGUMENT`: The client attempted to read more than the\n  server supported limit.\n\nEvery error on individual read will be returned in the corresponding digest\nstatus.",
+	//   "flatPath": "v2/{v2Id}/blobs:batchRead",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.blobs.batchRead",
+	//   "parameterOrder": [
+	//     "instanceName"
+	//   ],
+	//   "parameters": {
+	//     "instanceName": {
+	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+instanceName}/blobs:batchRead",
+	//   "request": {
+	//     "$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.blobs.batchUpdate":
+
+type BlobsBatchUpdateCall struct {
+	s                                                  *Service
+	instanceName                                       string
+	buildbazelremoteexecutionv2batchupdateblobsrequest *BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest
+	urlParams_                                         gensupport.URLParams
+	ctx_                                               context.Context
+	header_                                            http.Header
+}
+
+// BatchUpdate: Upload many blobs at once.
+//
+// The server may enforce a limit of the combined total size of blobs
+// to be uploaded using this API. This limit may be obtained using
+// the
+// Capabilities API.
+// Requests exceeding the limit should either be split into
+// smaller
+// chunks or uploaded using the
+// ByteStream API, as appropriate.
+//
+// This request is equivalent to calling a Bytestream `Write` request
+// on each individual blob, in parallel. The requests may succeed or
+// fail
+// independently.
+//
+// Errors:
+// * `INVALID_ARGUMENT`: The client attempted to upload more than the
+//   server supported limit.
+//
+// Individual requests may return the following errors, additionally:
+// * `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the
+// blob.
+// * `INVALID_ARGUMENT`: The
+// Digest does not match the
+// provided data.
+func (r *BlobsService) BatchUpdate(instanceName string, buildbazelremoteexecutionv2batchupdateblobsrequest *BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest) *BlobsBatchUpdateCall {
+	c := &BlobsBatchUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.instanceName = instanceName
+	c.buildbazelremoteexecutionv2batchupdateblobsrequest = buildbazelremoteexecutionv2batchupdateblobsrequest
+	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 *BlobsBatchUpdateCall) Fields(s ...googleapi.Field) *BlobsBatchUpdateCall {
+	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 *BlobsBatchUpdateCall) Context(ctx context.Context) *BlobsBatchUpdateCall {
+	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 *BlobsBatchUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *BlobsBatchUpdateCall) 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.buildbazelremoteexecutionv2batchupdateblobsrequest)
+	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, "v2/{+instanceName}/blobs:batchUpdate")
+	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{
+		"instanceName": c.instanceName,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.blobs.batchUpdate" call.
+// Exactly one of *BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse
+// or error will be non-nil. Any non-2xx status code is an error.
+// Response headers are in either
+// *BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse.ServerResponse.He
+// ader 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 *BlobsBatchUpdateCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse, 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 := &BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse{
+		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": "Upload many blobs at once.\n\nThe server may enforce a limit of the combined total size of blobs\nto be uploaded using this API. This limit may be obtained using the\nCapabilities API.\nRequests exceeding the limit should either be split into smaller\nchunks or uploaded using the\nByteStream API, as appropriate.\n\nThis request is equivalent to calling a Bytestream `Write` request\non each individual blob, in parallel. The requests may succeed or fail\nindependently.\n\nErrors:\n* `INVALID_ARGUMENT`: The client attempted to upload more than the\n  server supported limit.\n\nIndividual requests may return the following errors, additionally:\n* `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob.\n* `INVALID_ARGUMENT`: The\nDigest does not match the\nprovided data.",
+	//   "flatPath": "v2/{v2Id}/blobs:batchUpdate",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.blobs.batchUpdate",
+	//   "parameterOrder": [
+	//     "instanceName"
+	//   ],
+	//   "parameters": {
+	//     "instanceName": {
+	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+instanceName}/blobs:batchUpdate",
+	//   "request": {
+	//     "$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.blobs.findMissing":
+
+type BlobsFindMissingCall struct {
+	s                                                  *Service
+	instanceName                                       string
+	buildbazelremoteexecutionv2findmissingblobsrequest *BuildBazelRemoteExecutionV2FindMissingBlobsRequest
+	urlParams_                                         gensupport.URLParams
+	ctx_                                               context.Context
+	header_                                            http.Header
+}
+
+// FindMissing: Determine if blobs are present in the CAS.
+//
+// Clients can use this API before uploading blobs to determine which
+// ones are
+// already present in the CAS and do not need to be uploaded
+// again.
+//
+// There are no method-specific errors.
+func (r *BlobsService) FindMissing(instanceName string, buildbazelremoteexecutionv2findmissingblobsrequest *BuildBazelRemoteExecutionV2FindMissingBlobsRequest) *BlobsFindMissingCall {
+	c := &BlobsFindMissingCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.instanceName = instanceName
+	c.buildbazelremoteexecutionv2findmissingblobsrequest = buildbazelremoteexecutionv2findmissingblobsrequest
+	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 *BlobsFindMissingCall) Fields(s ...googleapi.Field) *BlobsFindMissingCall {
+	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 *BlobsFindMissingCall) Context(ctx context.Context) *BlobsFindMissingCall {
+	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 *BlobsFindMissingCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *BlobsFindMissingCall) 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.buildbazelremoteexecutionv2findmissingblobsrequest)
+	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, "v2/{+instanceName}/blobs:findMissing")
+	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{
+		"instanceName": c.instanceName,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.blobs.findMissing" call.
+// Exactly one of *BuildBazelRemoteExecutionV2FindMissingBlobsResponse
+// or error will be non-nil. Any non-2xx status code is an error.
+// Response headers are in either
+// *BuildBazelRemoteExecutionV2FindMissingBlobsResponse.ServerResponse.He
+// ader 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 *BlobsFindMissingCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2FindMissingBlobsResponse, 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 := &BuildBazelRemoteExecutionV2FindMissingBlobsResponse{
+		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": "Determine if blobs are present in the CAS.\n\nClients can use this API before uploading blobs to determine which ones are\nalready present in the CAS and do not need to be uploaded again.\n\nThere are no method-specific errors.",
+	//   "flatPath": "v2/{v2Id}/blobs:findMissing",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.blobs.findMissing",
+	//   "parameterOrder": [
+	//     "instanceName"
+	//   ],
+	//   "parameters": {
+	//     "instanceName": {
+	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+instanceName}/blobs:findMissing",
+	//   "request": {
+	//     "$ref": "BuildBazelRemoteExecutionV2FindMissingBlobsRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "BuildBazelRemoteExecutionV2FindMissingBlobsResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.blobs.getTree":
+
+type BlobsGetTreeCall struct {
+	s            *Service
+	instanceName string
+	hash         string
+	sizeBytes    int64
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetTree: Fetch the entire directory tree rooted at a node.
+//
+// This request must be targeted at a
+// Directory stored in the
+// ContentAddressableStorage
+// (CAS). The server will enumerate the `Directory` tree recursively
+// and
+// return every node descended from the root.
+//
+// The GetTreeRequest.page_token parameter can be used to skip ahead
+// in
+// the stream (e.g. when retrying a partially completed and aborted
+// request),
+// by setting it to a value taken from GetTreeResponse.next_page_token
+// of the
+// last successfully processed GetTreeResponse).
+//
+// The exact traversal order is unspecified and, unless retrieving
+// subsequent
+// pages from an earlier request, is not guaranteed to be stable
+// across
+// multiple invocations of `GetTree`.
+//
+// If part of the tree is missing from the CAS, the server will return
+// the
+// portion present and omit the rest.
+//
+// * `NOT_FOUND`: The requested tree root is not present in the CAS.
+func (r *BlobsService) GetTree(instanceName string, hash string, sizeBytes int64) *BlobsGetTreeCall {
+	c := &BlobsGetTreeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.instanceName = instanceName
+	c.hash = hash
+	c.sizeBytes = sizeBytes
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": A maximum page size
+// to request. If present, the server will request no more
+// than this many items. Regardless of whether a page size is specified,
+// the
+// server may place its own limit on the number of items to be returned
+// and
+// require the client to retrieve more items using a subsequent request.
+func (c *BlobsGetTreeCall) PageSize(pageSize int64) *BlobsGetTreeCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": A page token,
+// which must be a value received in a previous
+// GetTreeResponse.
+// If present, the server will use it to return the following page of
+// results.
+func (c *BlobsGetTreeCall) PageToken(pageToken string) *BlobsGetTreeCall {
+	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 *BlobsGetTreeCall) Fields(s ...googleapi.Field) *BlobsGetTreeCall {
+	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 *BlobsGetTreeCall) IfNoneMatch(entityTag string) *BlobsGetTreeCall {
+	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 *BlobsGetTreeCall) Context(ctx context.Context) *BlobsGetTreeCall {
+	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 *BlobsGetTreeCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *BlobsGetTreeCall) 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, "v2/{+instanceName}/blobs/{hash}/{sizeBytes}:getTree")
+	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{
+		"instanceName": c.instanceName,
+		"hash":         c.hash,
+		"sizeBytes":    strconv.FormatInt(c.sizeBytes, 10),
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.blobs.getTree" call.
+// Exactly one of *BuildBazelRemoteExecutionV2GetTreeResponse or error
+// will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *BuildBazelRemoteExecutionV2GetTreeResponse.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 *BlobsGetTreeCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2GetTreeResponse, 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 := &BuildBazelRemoteExecutionV2GetTreeResponse{
+		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": "Fetch the entire directory tree rooted at a node.\n\nThis request must be targeted at a\nDirectory stored in the\nContentAddressableStorage\n(CAS). The server will enumerate the `Directory` tree recursively and\nreturn every node descended from the root.\n\nThe GetTreeRequest.page_token parameter can be used to skip ahead in\nthe stream (e.g. when retrying a partially completed and aborted request),\nby setting it to a value taken from GetTreeResponse.next_page_token of the\nlast successfully processed GetTreeResponse).\n\nThe exact traversal order is unspecified and, unless retrieving subsequent\npages from an earlier request, is not guaranteed to be stable across\nmultiple invocations of `GetTree`.\n\nIf part of the tree is missing from the CAS, the server will return the\nportion present and omit the rest.\n\n* `NOT_FOUND`: The requested tree root is not present in the CAS.",
+	//   "flatPath": "v2/{v2Id}/blobs/{hash}/{sizeBytes}:getTree",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.blobs.getTree",
+	//   "parameterOrder": [
+	//     "instanceName",
+	//     "hash",
+	//     "sizeBytes"
+	//   ],
+	//   "parameters": {
+	//     "hash": {
+	//       "description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "instanceName": {
+	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "A maximum page size to request. If present, the server will request no more\nthan this many items. Regardless of whether a page size is specified, the\nserver may place its own limit on the number of items to be returned and\nrequire the client to retrieve more items using a subsequent request.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "A page token, which must be a value received in a previous\nGetTreeResponse.\nIf present, the server will use it to return the following page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sizeBytes": {
+	//       "description": "The size of the blob, in bytes.",
+	//       "format": "int64",
+	//       "location": "path",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+instanceName}/blobs/{hash}/{sizeBytes}:getTree",
+	//   "response": {
+	//     "$ref": "BuildBazelRemoteExecutionV2GetTreeResponse"
+	//   },
+	//   "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 *BlobsGetTreeCall) Pages(ctx context.Context, f func(*BuildBazelRemoteExecutionV2GetTreeResponse) 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 "remotebuildexecution.operations.waitExecution":
+
+type OperationsWaitExecutionCall struct {
+	s                                               *Service
+	name                                            string
+	buildbazelremoteexecutionv2waitexecutionrequest *BuildBazelRemoteExecutionV2WaitExecutionRequest
+	urlParams_                                      gensupport.URLParams
+	ctx_                                            context.Context
+	header_                                         http.Header
+}
+
+// WaitExecution: Wait for an execution operation to complete. When the
+// client initially
+// makes the request, the server immediately responds with the current
+// status
+// of the execution. The server will leave the request stream open until
+// the
+// operation completes, and then respond with the completed operation.
+// The
+// server MAY choose to stream additional updates as execution
+// progresses,
+// such as to provide an update as to the state of the execution.
+func (r *OperationsService) WaitExecution(name string, buildbazelremoteexecutionv2waitexecutionrequest *BuildBazelRemoteExecutionV2WaitExecutionRequest) *OperationsWaitExecutionCall {
+	c := &OperationsWaitExecutionCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	c.buildbazelremoteexecutionv2waitexecutionrequest = buildbazelremoteexecutionv2waitexecutionrequest
+	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 *OperationsWaitExecutionCall) Fields(s ...googleapi.Field) *OperationsWaitExecutionCall {
+	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 *OperationsWaitExecutionCall) Context(ctx context.Context) *OperationsWaitExecutionCall {
+	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 *OperationsWaitExecutionCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *OperationsWaitExecutionCall) 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.buildbazelremoteexecutionv2waitexecutionrequest)
+	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, "v2/{+name}:waitExecution")
+	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 "remotebuildexecution.operations.waitExecution" call.
+// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *GoogleLongrunningOperation.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 *OperationsWaitExecutionCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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 := &GoogleLongrunningOperation{
+		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": "Wait for an execution operation to complete. When the client initially\nmakes the request, the server immediately responds with the current status\nof the execution. The server will leave the request stream open until the\noperation completes, and then respond with the completed operation. The\nserver MAY choose to stream additional updates as execution progresses,\nsuch as to provide an update as to the state of the execution.",
+	//   "flatPath": "v2/operations/{operationsId}:waitExecution",
+	//   "httpMethod": "POST",
+	//   "id": "remotebuildexecution.operations.waitExecution",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the Operation\nreturned by Execute.",
+	//       "location": "path",
+	//       "pattern": "^operations/.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+name}:waitExecution",
+	//   "request": {
+	//     "$ref": "BuildBazelRemoteExecutionV2WaitExecutionRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "GoogleLongrunningOperation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "remotebuildexecution.getCapabilities":
+
+type V2GetCapabilitiesCall struct {
+	s            *Service
+	instanceName string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetCapabilities: GetCapabilities returns the server capabilities
+// configuration.
+func (r *V2Service) GetCapabilities(instanceName string) *V2GetCapabilitiesCall {
+	c := &V2GetCapabilitiesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.instanceName = instanceName
+	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 *V2GetCapabilitiesCall) Fields(s ...googleapi.Field) *V2GetCapabilitiesCall {
+	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 *V2GetCapabilitiesCall) IfNoneMatch(entityTag string) *V2GetCapabilitiesCall {
+	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 *V2GetCapabilitiesCall) Context(ctx context.Context) *V2GetCapabilitiesCall {
+	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 *V2GetCapabilitiesCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *V2GetCapabilitiesCall) 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, "v2/{+instanceName}/capabilities")
+	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{
+		"instanceName": c.instanceName,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "remotebuildexecution.getCapabilities" call.
+// Exactly one of *BuildBazelRemoteExecutionV2ServerCapabilities or
+// error will be non-nil. Any non-2xx status code is an error. Response
+// headers are in either
+// *BuildBazelRemoteExecutionV2ServerCapabilities.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 *V2GetCapabilitiesCall) Do(opts ...googleapi.CallOption) (*BuildBazelRemoteExecutionV2ServerCapabilities, 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 := &BuildBazelRemoteExecutionV2ServerCapabilities{
+		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": "GetCapabilities returns the server capabilities configuration.",
+	//   "flatPath": "v2/{v2Id}/capabilities",
+	//   "httpMethod": "GET",
+	//   "id": "remotebuildexecution.getCapabilities",
+	//   "parameterOrder": [
+	//     "instanceName"
+	//   ],
+	//   "parameters": {
+	//     "instanceName": {
+	//       "description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
+	//       "location": "path",
+	//       "pattern": "^.+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v2/{+instanceName}/capabilities",
+	//   "response": {
+	//     "$ref": "BuildBazelRemoteExecutionV2ServerCapabilities"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
diff --git a/replicapool/v1beta1/replicapool-gen.go b/replicapool/v1beta1/replicapool-gen.go
index 78adae5..fe659db 100644
--- a/replicapool/v1beta1/replicapool-gen.go
+++ b/replicapool/v1beta1/replicapool-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/reseller/v1/reseller-gen.go b/reseller/v1/reseller-gen.go
index d401ccb..f8a213a 100644
--- a/reseller/v1/reseller-gen.go
+++ b/reseller/v1/reseller-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/runtimeconfig/v1/runtimeconfig-gen.go b/runtimeconfig/v1/runtimeconfig-gen.go
index 8918923..0c8ae89 100644
--- a/runtimeconfig/v1/runtimeconfig-gen.go
+++ b/runtimeconfig/v1/runtimeconfig-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/runtimeconfig/v1beta1/runtimeconfig-gen.go b/runtimeconfig/v1beta1/runtimeconfig-gen.go
index b156073..bb5dd62 100644
--- a/runtimeconfig/v1beta1/runtimeconfig-gen.go
+++ b/runtimeconfig/v1beta1/runtimeconfig-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/safebrowsing/v4/safebrowsing-gen.go b/safebrowsing/v4/safebrowsing-gen.go
index 68a252c..ef3b011 100644
--- a/safebrowsing/v4/safebrowsing-gen.go
+++ b/safebrowsing/v4/safebrowsing-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/script/v1/script-gen.go b/script/v1/script-gen.go
index d50edb3..95ab154 100644
--- a/script/v1/script-gen.go
+++ b/script/v1/script-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/searchconsole/v1/searchconsole-gen.go b/searchconsole/v1/searchconsole-gen.go
index a3a74b0..44b370e 100644
--- a/searchconsole/v1/searchconsole-gen.go
+++ b/searchconsole/v1/searchconsole-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/servicebroker/v1/servicebroker-gen.go b/servicebroker/v1/servicebroker-gen.go
index d57bbc7..31c6976 100644
--- a/servicebroker/v1/servicebroker-gen.go
+++ b/servicebroker/v1/servicebroker-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/servicebroker/v1alpha1/servicebroker-gen.go b/servicebroker/v1alpha1/servicebroker-gen.go
index ffc81fc..509362c 100644
--- a/servicebroker/v1alpha1/servicebroker-gen.go
+++ b/servicebroker/v1alpha1/servicebroker-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/servicebroker/v1beta1/servicebroker-gen.go b/servicebroker/v1beta1/servicebroker-gen.go
index edf4bf3..223b65b 100644
--- a/servicebroker/v1beta1/servicebroker-gen.go
+++ b/servicebroker/v1beta1/servicebroker-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
index 8cfcff9..83d4a31 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
@@ -485,7 +485,7 @@
       }
     }
   },
-  "revision": "20181217",
+  "revision": "20190107",
   "rootUrl": "https://serviceconsumermanagement.googleapis.com/",
   "schemas": {
     "AddTenantProjectRequest": {
@@ -1949,7 +1949,7 @@
           "description": "Monitoring configuration."
         },
         "name": {
-          "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.",
+          "description": "The service name, which is a DNS-like logical identifier for the\nservice, such as `calendar.googleapis.com`. The service name\ntypically goes through DNS verification to make sure the owner\nof the service also owns the DNS name.",
           "type": "string"
         },
         "producerProjectId": {
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
index edab3ae..5653770 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -3789,8 +3789,12 @@
 	// Monitoring: Monitoring configuration.
 	Monitoring *Monitoring `json:"monitoring,omitempty"`
 
-	// Name: The DNS address at which this service is available,
-	// e.g. `calendar.googleapis.com`.
+	// Name: The service name, which is a DNS-like logical identifier for
+	// the
+	// service, such as `calendar.googleapis.com`. The service
+	// name
+	// typically goes through DNS verification to make sure the owner
+	// of the service also owns the DNS name.
 	Name string `json:"name,omitempty"`
 
 	// ProducerProjectId: The Google project that owns this service.
diff --git a/servicecontrol/v1/servicecontrol-api.json b/servicecontrol/v1/servicecontrol-api.json
index c5852a8..a42b8c2 100644
--- a/servicecontrol/v1/servicecontrol-api.json
+++ b/servicecontrol/v1/servicecontrol-api.json
@@ -196,7 +196,7 @@
       }
     }
   },
-  "revision": "20181214",
+  "revision": "20181229",
   "rootUrl": "https://servicecontrol.googleapis.com/",
   "schemas": {
     "AllocateInfo": {
@@ -1499,14 +1499,14 @@
       "id": "ResourceLocation",
       "properties": {
         "currentLocations": {
-          "description": "The locations of a resource after the execution of the operation.\nFor example:\n\n    \"europe-west1-a\"\n    \"us-east1\"\n    \"nam3\"",
+          "description": "The locations of a resource after the execution of the operation.\nRequests to create or delete a location based resource must populate\nthe 'current_locations' field and not the 'original_locations' field.\nFor example:\n\n    \"europe-west1-a\"\n    \"us-east1\"\n    \"nam3\"",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "originalLocations": {
-          "description": "The locations of a resource prior to the execution of the operation.\nFor example:\n\n    \"europe-west1-a\"\n    \"us-east1\"\n    \"nam3\"",
+          "description": "The locations of a resource prior to the execution of the operation.\nRequests that mutate the resource's location must populate both the\n'original_locations' as well as the 'current_locations' fields.\nFor example:\n\n    \"europe-west1-a\"\n    \"us-east1\"\n    \"nam3\"",
           "items": {
             "type": "string"
           },
diff --git a/servicecontrol/v1/servicecontrol-gen.go b/servicecontrol/v1/servicecontrol-gen.go
index e41cb9e..e7377a1 100644
--- a/servicecontrol/v1/servicecontrol-gen.go
+++ b/servicecontrol/v1/servicecontrol-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -2546,6 +2546,10 @@
 type ResourceLocation struct {
 	// CurrentLocations: The locations of a resource after the execution of
 	// the operation.
+	// Requests to create or delete a location based resource must
+	// populate
+	// the 'current_locations' field and not the 'original_locations'
+	// field.
 	// For example:
 	//
 	//     "europe-west1-a"
@@ -2555,6 +2559,9 @@
 
 	// OriginalLocations: The locations of a resource prior to the execution
 	// of the operation.
+	// Requests that mutate the resource's location must populate both
+	// the
+	// 'original_locations' as well as the 'current_locations' fields.
 	// For example:
 	//
 	//     "europe-west1-a"
diff --git a/servicemanagement/v1/servicemanagement-api.json b/servicemanagement/v1/servicemanagement-api.json
index 4c50b52..1b1ddce 100644
--- a/servicemanagement/v1/servicemanagement-api.json
+++ b/servicemanagement/v1/servicemanagement-api.json
@@ -876,7 +876,7 @@
       }
     }
   },
-  "revision": "20181210",
+  "revision": "20190102",
   "rootUrl": "https://servicemanagement.googleapis.com/",
   "schemas": {
     "Advice": {
@@ -2303,14 +2303,14 @@
       "id": "Monitoring",
       "properties": {
         "consumerDestinations": {
-          "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination.",
+          "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations. A monitored resouce type may\nappear in multiple monitoring destinations if different aggregations are\nneeded for different sets of metrics associated with that monitored\nresource type. A monitored resource and metric pair may only be used once\nin the Monitoring configuration.",
           "items": {
             "$ref": "MonitoringDestination"
           },
           "type": "array"
         },
         "producerDestinations": {
-          "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.",
+          "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations. A monitored resouce type may\nappear in multiple monitoring destinations if different aggregations are\nneeded for different sets of metrics associated with that monitored\nresource type. A monitored resource and metric pair may only be used once\nin the Monitoring configuration.",
           "items": {
             "$ref": "MonitoringDestination"
           },
@@ -2324,7 +2324,7 @@
       "id": "MonitoringDestination",
       "properties": {
         "metrics": {
-          "description": "Names of the metrics to report to this monitoring destination.\nEach name must be defined in Service.metrics section.",
+          "description": "Types of the metrics to report to this monitoring destination.\nEach type must be defined in Service.metrics section.",
           "items": {
             "type": "string"
           },
@@ -2715,7 +2715,7 @@
           "description": "Monitoring configuration."
         },
         "name": {
-          "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.",
+          "description": "The service name, which is a DNS-like logical identifier for the\nservice, such as `calendar.googleapis.com`. The service name\ntypically goes through DNS verification to make sure the owner\nof the service also owns the DNS name.",
           "type": "string"
         },
         "producerProjectId": {
diff --git a/servicemanagement/v1/servicemanagement-gen.go b/servicemanagement/v1/servicemanagement-gen.go
index 297c857..bd03f8f 100644
--- a/servicemanagement/v1/servicemanagement-gen.go
+++ b/servicemanagement/v1/servicemanagement-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -3740,20 +3740,28 @@
 type Monitoring struct {
 	// ConsumerDestinations: Monitoring configurations for sending metrics
 	// to the consumer project.
-	// There can be multiple consumer destinations, each one must have
-	// a
-	// different monitored resource type. A metric can be used in at
-	// most
-	// one consumer destination.
+	// There can be multiple consumer destinations. A monitored resouce type
+	// may
+	// appear in multiple monitoring destinations if different aggregations
+	// are
+	// needed for different sets of metrics associated with that
+	// monitored
+	// resource type. A monitored resource and metric pair may only be used
+	// once
+	// in the Monitoring configuration.
 	ConsumerDestinations []*MonitoringDestination `json:"consumerDestinations,omitempty"`
 
 	// ProducerDestinations: Monitoring configurations for sending metrics
 	// to the producer project.
-	// There can be multiple producer destinations, each one must have
-	// a
-	// different monitored resource type. A metric can be used in at
-	// most
-	// one producer destination.
+	// There can be multiple producer destinations. A monitored resouce type
+	// may
+	// appear in multiple monitoring destinations if different aggregations
+	// are
+	// needed for different sets of metrics associated with that
+	// monitored
+	// resource type. A monitored resource and metric pair may only be used
+	// once
+	// in the Monitoring configuration.
 	ProducerDestinations []*MonitoringDestination `json:"producerDestinations,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g.
@@ -3785,9 +3793,9 @@
 // destination (the producer project
 // or the consumer project).
 type MonitoringDestination struct {
-	// Metrics: Names of the metrics to report to this monitoring
+	// Metrics: Types of the metrics to report to this monitoring
 	// destination.
-	// Each name must be defined in Service.metrics section.
+	// Each type must be defined in Service.metrics section.
 	Metrics []string `json:"metrics,omitempty"`
 
 	// MonitoredResource: The monitored resource type. The type must be
@@ -4646,8 +4654,12 @@
 	// Monitoring: Monitoring configuration.
 	Monitoring *Monitoring `json:"monitoring,omitempty"`
 
-	// Name: The DNS address at which this service is available,
-	// e.g. `calendar.googleapis.com`.
+	// Name: The service name, which is a DNS-like logical identifier for
+	// the
+	// service, such as `calendar.googleapis.com`. The service
+	// name
+	// typically goes through DNS verification to make sure the owner
+	// of the service also owns the DNS name.
 	Name string `json:"name,omitempty"`
 
 	// ProducerProjectId: The Google project that owns this service.
diff --git a/servicenetworking/v1beta/servicenetworking-api.json b/servicenetworking/v1beta/servicenetworking-api.json
index 785e568..938d8a1 100644
--- a/servicenetworking/v1beta/servicenetworking-api.json
+++ b/servicenetworking/v1beta/servicenetworking-api.json
@@ -140,7 +140,7 @@
     "services": {
       "methods": {
         "addSubnetwork": {
-          "description": "For service producers, provisions a new subnet in a\npeered service's shared VPC network in the requested region and with the\nrequested size that's expressed as a CIDR range (number of leading bits of\nipV4 network mask). The method checks against the assigned allocated ranges\nto find a non-conflicting IP address range. The method will reuse a subnet\nif subsequent calls contain the same subnet name, region, and prefix length.\nThis method will make producer's tenant project to be a shared VPC service\nproject as needed.\nThe response from the `get` operation will be of type `Subnetwork` if the\noperation successfully completes.",
+          "description": "For service producers, provisions a new subnet in a\npeered service's shared VPC network in the requested region and with the\nrequested size that's expressed as a CIDR range (number of leading bits of\nipV4 network mask). The method checks against the assigned allocated ranges\nto find a non-conflicting IP address range. The method will reuse a subnet\nif subsequent calls contain the same subnet name, region, and prefix\nlength. This method will make producer's tenant project to be a shared VPC\nservice project as needed. The response from the `get` operation will be of\ntype `Subnetwork` if the operation successfully completes.",
           "flatPath": "v1beta/services/{servicesId}/{servicesId1}/{servicesId2}:addSubnetwork",
           "httpMethod": "POST",
           "id": "servicenetworking.services.addSubnetwork",
@@ -306,7 +306,7 @@
       }
     }
   },
-  "revision": "20181220",
+  "revision": "20190107",
   "rootUrl": "https://servicenetworking.googleapis.com/",
   "schemas": {
     "AddSubnetworkRequest": {
@@ -1703,7 +1703,7 @@
           "description": "Monitoring configuration."
         },
         "name": {
-          "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.",
+          "description": "The service name, which is a DNS-like logical identifier for the\nservice, such as `calendar.googleapis.com`. The service name\ntypically goes through DNS verification to make sure the owner\nof the service also owns the DNS name.",
           "type": "string"
         },
         "producerProjectId": {
diff --git a/servicenetworking/v1beta/servicenetworking-gen.go b/servicenetworking/v1beta/servicenetworking-gen.go
index ca9b58e..0a0ab71 100644
--- a/servicenetworking/v1beta/servicenetworking-gen.go
+++ b/servicenetworking/v1beta/servicenetworking-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -3641,8 +3641,12 @@
 	// Monitoring: Monitoring configuration.
 	Monitoring *Monitoring `json:"monitoring,omitempty"`
 
-	// Name: The DNS address at which this service is available,
-	// e.g. `calendar.googleapis.com`.
+	// Name: The service name, which is a DNS-like logical identifier for
+	// the
+	// service, such as `calendar.googleapis.com`. The service
+	// name
+	// typically goes through DNS verification to make sure the owner
+	// of the service also owns the DNS name.
 	Name string `json:"name,omitempty"`
 
 	// ProducerProjectId: The Google project that owns this service.
@@ -4442,14 +4446,13 @@
 // ranges
 // to find a non-conflicting IP address range. The method will reuse a
 // subnet
-// if subsequent calls contain the same subnet name, region, and prefix
-// length.
-// This method will make producer's tenant project to be a shared VPC
-// service
-// project as needed.
-// The response from the `get` operation will be of type `Subnetwork` if
-// the
-// operation successfully completes.
+// if subsequent calls contain the same subnet name, region, and
+// prefix
+// length. This method will make producer's tenant project to be a
+// shared VPC
+// service project as needed. The response from the `get` operation will
+// be of
+// type `Subnetwork` if the operation successfully completes.
 func (r *ServicesService) AddSubnetwork(parent string, addsubnetworkrequest *AddSubnetworkRequest) *ServicesAddSubnetworkCall {
 	c := &ServicesAddSubnetworkCall{s: r.s, urlParams_: make(gensupport.URLParams)}
 	c.parent = parent
@@ -4547,7 +4550,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "For service producers, provisions a new subnet in a\npeered service's shared VPC network in the requested region and with the\nrequested size that's expressed as a CIDR range (number of leading bits of\nipV4 network mask). The method checks against the assigned allocated ranges\nto find a non-conflicting IP address range. The method will reuse a subnet\nif subsequent calls contain the same subnet name, region, and prefix length.\nThis method will make producer's tenant project to be a shared VPC service\nproject as needed.\nThe response from the `get` operation will be of type `Subnetwork` if the\noperation successfully completes.",
+	//   "description": "For service producers, provisions a new subnet in a\npeered service's shared VPC network in the requested region and with the\nrequested size that's expressed as a CIDR range (number of leading bits of\nipV4 network mask). The method checks against the assigned allocated ranges\nto find a non-conflicting IP address range. The method will reuse a subnet\nif subsequent calls contain the same subnet name, region, and prefix\nlength. This method will make producer's tenant project to be a shared VPC\nservice project as needed. The response from the `get` operation will be of\ntype `Subnetwork` if the operation successfully completes.",
 	//   "flatPath": "v1beta/services/{servicesId}/{servicesId1}/{servicesId2}:addSubnetwork",
 	//   "httpMethod": "POST",
 	//   "id": "servicenetworking.services.addSubnetwork",
diff --git a/serviceusage/v1/serviceusage-api.json b/serviceusage/v1/serviceusage-api.json
index d675519..9542d90 100644
--- a/serviceusage/v1/serviceusage-api.json
+++ b/serviceusage/v1/serviceusage-api.json
@@ -393,7 +393,7 @@
       }
     }
   },
-  "revision": "20181217",
+  "revision": "20190107",
   "rootUrl": "https://serviceusage.googleapis.com/",
   "schemas": {
     "Api": {
@@ -1206,7 +1206,7 @@
           "description": "Monitoring configuration."
         },
         "name": {
-          "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.",
+          "description": "The service name, which is a DNS-like logical identifier for the\nservice, such as `calendar.googleapis.com`. The service name\ntypically goes through DNS verification to make sure the owner\nof the service also owns the DNS name.",
           "type": "string"
         },
         "producerProjectId": {
diff --git a/serviceusage/v1/serviceusage-gen.go b/serviceusage/v1/serviceusage-gen.go
index ef110e8..9ae72e0 100644
--- a/serviceusage/v1/serviceusage-gen.go
+++ b/serviceusage/v1/serviceusage-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -1792,8 +1792,12 @@
 	// Monitoring: Monitoring configuration.
 	Monitoring *Monitoring `json:"monitoring,omitempty"`
 
-	// Name: The DNS address at which this service is available,
-	// e.g. `calendar.googleapis.com`.
+	// Name: The service name, which is a DNS-like logical identifier for
+	// the
+	// service, such as `calendar.googleapis.com`. The service
+	// name
+	// typically goes through DNS verification to make sure the owner
+	// of the service also owns the DNS name.
 	Name string `json:"name,omitempty"`
 
 	// ProducerProjectId: The Google project that owns this service.
diff --git a/serviceusage/v1beta1/serviceusage-api.json b/serviceusage/v1beta1/serviceusage-api.json
index c332b67..f5c554f 100644
--- a/serviceusage/v1beta1/serviceusage-api.json
+++ b/serviceusage/v1beta1/serviceusage-api.json
@@ -338,7 +338,7 @@
       }
     }
   },
-  "revision": "20181217",
+  "revision": "20190107",
   "rootUrl": "https://serviceusage.googleapis.com/",
   "schemas": {
     "Api": {
@@ -1140,7 +1140,7 @@
           "description": "Monitoring configuration."
         },
         "name": {
-          "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.",
+          "description": "The service name, which is a DNS-like logical identifier for the\nservice, such as `calendar.googleapis.com`. The service name\ntypically goes through DNS verification to make sure the owner\nof the service also owns the DNS name.",
           "type": "string"
         },
         "producerProjectId": {
diff --git a/serviceusage/v1beta1/serviceusage-gen.go b/serviceusage/v1beta1/serviceusage-gen.go
index 59351c3..0097a22 100644
--- a/serviceusage/v1beta1/serviceusage-gen.go
+++ b/serviceusage/v1beta1/serviceusage-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -1750,8 +1750,12 @@
 	// Monitoring: Monitoring configuration.
 	Monitoring *Monitoring `json:"monitoring,omitempty"`
 
-	// Name: The DNS address at which this service is available,
-	// e.g. `calendar.googleapis.com`.
+	// Name: The service name, which is a DNS-like logical identifier for
+	// the
+	// service, such as `calendar.googleapis.com`. The service
+	// name
+	// typically goes through DNS verification to make sure the owner
+	// of the service also owns the DNS name.
 	Name string `json:"name,omitempty"`
 
 	// ProducerProjectId: The Google project that owns this service.
diff --git a/sheets/v4/sheets-gen.go b/sheets/v4/sheets-gen.go
index 309f2ac..1d52a5a 100644
--- a/sheets/v4/sheets-gen.go
+++ b/sheets/v4/sheets-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/siteverification/v1/siteverification-gen.go b/siteverification/v1/siteverification-gen.go
index a587df5..a40ca73 100644
--- a/siteverification/v1/siteverification-gen.go
+++ b/siteverification/v1/siteverification-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/slides/v1/slides-gen.go b/slides/v1/slides-gen.go
index d262615..5051db4 100644
--- a/slides/v1/slides-gen.go
+++ b/slides/v1/slides-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/sourcerepo/v1/sourcerepo-gen.go b/sourcerepo/v1/sourcerepo-gen.go
index 256ad9c..621d4ce 100644
--- a/sourcerepo/v1/sourcerepo-gen.go
+++ b/sourcerepo/v1/sourcerepo-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/spanner/v1/spanner-gen.go b/spanner/v1/spanner-gen.go
index 0c2fd4d..316eea8 100644
--- a/spanner/v1/spanner-gen.go
+++ b/spanner/v1/spanner-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/speech/v1/speech-api.json b/speech/v1/speech-api.json
index 67997d2..f8ab958 100644
--- a/speech/v1/speech-api.json
+++ b/speech/v1/speech-api.json
@@ -170,6 +170,117 @@
         }
       }
     },
+    "projects": {
+      "resources": {
+        "locations": {
+          "resources": {
+            "operations": {
+              "methods": {
+                "get": {
+                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                  "httpMethod": "GET",
+                  "id": "speech.projects.locations.operations.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The name of the operation resource.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+name}",
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+                  "httpMethod": "GET",
+                  "id": "speech.projects.locations.operations.list",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "filter": {
+                      "description": "The standard list filter.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "name": {
+                      "description": "The name of the operation's parent resource.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "pageSize": {
+                      "description": "The standard list page size.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "The standard list page token.",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+name}/operations",
+                  "response": {
+                    "$ref": "ListOperationsResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "operations": {
+          "resources": {
+            "manualRecognitionTasks": {
+              "methods": {
+                "get": {
+                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                  "flatPath": "v1/projects/{projectsId}/operations/manualRecognitionTasks/{manualRecognitionTasksId}",
+                  "httpMethod": "GET",
+                  "id": "speech.projects.operations.manualRecognitionTasks.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The name of the operation resource.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/operations/manualRecognitionTasks/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1/{+name}",
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        }
+      }
+    },
     "speech": {
       "methods": {
         "longrunningrecognize": {
@@ -211,7 +322,7 @@
       }
     }
   },
-  "revision": "20181207",
+  "revision": "20190104",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
     "ListOperationsResponse": {
@@ -342,6 +453,10 @@
           "description": "*Optional* If 'true', adds punctuation to recognition result hypotheses.\nThis feature is only available in select languages. Setting this for\nrequests in other languages has no effect at all.\nThe default 'false' value does not add punctuation to result hypotheses.\nNote: This is currently offered as an experimental service, complimentary\nto all users. In the future this may be exclusively available as a\npremium feature.",
           "type": "boolean"
         },
+        "enableSeparateRecognitionPerChannel": {
+          "description": "This needs to be set to ‘true’ explicitly and `audio_channel_count` \u003e 1\nto get each channel recognized separately. The recognition result will\ncontain a `channel_tag` field to state which channel that result belongs\nto. If this is not true, we will only recognize the first channel. The\nrequest is billed cumulatively for all channels recognized:\n`audio_channel_count` multiplied by the length of the audio.",
+          "type": "boolean"
+        },
         "enableWordTimeOffsets": {
           "description": "*Optional* If `true`, the top result includes a list of words and\nthe start and end time offsets (timestamps) for those words. If\n`false`, no word-level time offset information is returned. The default is\n`false`.",
           "type": "boolean"
@@ -482,6 +597,11 @@
             "$ref": "SpeechRecognitionAlternative"
           },
           "type": "array"
+        },
+        "channelTag": {
+          "description": "For multi-channel audio, this is the channel number corresponding to the\nrecognized result for the audio from that channel.\nFor audio_channel_count = N, its output values can range from '1' to 'N'.",
+          "format": "int32",
+          "type": "integer"
         }
       },
       "type": "object"
diff --git a/speech/v1/speech-gen.go b/speech/v1/speech-gen.go
index e812ad2..194ee7c 100644
--- a/speech/v1/speech-gen.go
+++ b/speech/v1/speech-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -64,6 +64,7 @@
 	}
 	s := &Service{client: client, BasePath: basePath}
 	s.Operations = NewOperationsService(s)
+	s.Projects = NewProjectsService(s)
 	s.Speech = NewSpeechService(s)
 	return s, nil
 }
@@ -75,6 +76,8 @@
 
 	Operations *OperationsService
 
+	Projects *ProjectsService
+
 	Speech *SpeechService
 }
 
@@ -94,6 +97,63 @@
 	s *Service
 }
 
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.Locations = NewProjectsLocationsService(s)
+	rs.Operations = NewProjectsOperationsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Locations *ProjectsLocationsService
+
+	Operations *ProjectsOperationsService
+}
+
+func NewProjectsLocationsService(s *Service) *ProjectsLocationsService {
+	rs := &ProjectsLocationsService{s: s}
+	rs.Operations = NewProjectsLocationsOperationsService(s)
+	return rs
+}
+
+type ProjectsLocationsService struct {
+	s *Service
+
+	Operations *ProjectsLocationsOperationsService
+}
+
+func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService {
+	rs := &ProjectsLocationsOperationsService{s: s}
+	return rs
+}
+
+type ProjectsLocationsOperationsService struct {
+	s *Service
+}
+
+func NewProjectsOperationsService(s *Service) *ProjectsOperationsService {
+	rs := &ProjectsOperationsService{s: s}
+	rs.ManualRecognitionTasks = NewProjectsOperationsManualRecognitionTasksService(s)
+	return rs
+}
+
+type ProjectsOperationsService struct {
+	s *Service
+
+	ManualRecognitionTasks *ProjectsOperationsManualRecognitionTasksService
+}
+
+func NewProjectsOperationsManualRecognitionTasksService(s *Service) *ProjectsOperationsManualRecognitionTasksService {
+	rs := &ProjectsOperationsManualRecognitionTasksService{s: s}
+	return rs
+}
+
+type ProjectsOperationsManualRecognitionTasksService struct {
+	s *Service
+}
+
 func NewSpeechService(s *Service) *SpeechService {
 	rs := &SpeechService{s: s}
 	return rs
@@ -397,6 +457,19 @@
 	// premium feature.
 	EnableAutomaticPunctuation bool `json:"enableAutomaticPunctuation,omitempty"`
 
+	// EnableSeparateRecognitionPerChannel: This needs to be set to
+	// ‘true’ explicitly and `audio_channel_count` > 1
+	// to get each channel recognized separately. The recognition result
+	// will
+	// contain a `channel_tag` field to state which channel that result
+	// belongs
+	// to. If this is not true, we will only recognize the first channel.
+	// The
+	// request is billed cumulatively for all channels
+	// recognized:
+	// `audio_channel_count` multiplied by the length of the audio.
+	EnableSeparateRecognitionPerChannel bool `json:"enableSeparateRecognitionPerChannel,omitempty"`
+
 	// EnableWordTimeOffsets: *Optional* If `true`, the top result includes
 	// a list of words and
 	// the start and end time offsets (timestamps) for those words.
@@ -788,6 +861,13 @@
 	// alternative being the most probable, as ranked by the recognizer.
 	Alternatives []*SpeechRecognitionAlternative `json:"alternatives,omitempty"`
 
+	// ChannelTag: For multi-channel audio, this is the channel number
+	// corresponding to the
+	// recognized result for the audio from that channel.
+	// For audio_channel_count = N, its output values can range from '1' to
+	// 'N'.
+	ChannelTag int64 `json:"channelTag,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Alternatives") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -1340,6 +1420,517 @@
 	}
 }
 
+// method id "speech.projects.locations.operations.get":
+
+type ProjectsLocationsOperationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the latest state of a long-running operation.  Clients can
+// use this
+// method to poll the operation result at intervals as recommended by
+// the API
+// service.
+func (r *ProjectsLocationsOperationsService) Get(name string) *ProjectsLocationsOperationsGetCall {
+	c := &ProjectsLocationsOperationsGetCall{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 *ProjectsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsGetCall {
+	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 *ProjectsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsGetCall {
+	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 *ProjectsLocationsOperationsGetCall) Context(ctx context.Context) *ProjectsLocationsOperationsGetCall {
+	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 *ProjectsLocationsOperationsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "speech.projects.locations.operations.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.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 *ProjectsLocationsOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, 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 := &Operation{
+		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 the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "speech.projects.locations.operations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "speech.projects.locations.operations.list":
+
+type ProjectsLocationsOperationsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists operations that match the specified filter in the
+// request. If the
+// server doesn't support this method, it returns
+// `UNIMPLEMENTED`.
+//
+// NOTE: the `name` binding allows API services to override the
+// binding
+// to use different resource name schemes, such as `users/*/operations`.
+// To
+// override the binding, API services can add a binding such
+// as
+// "/v1/{name=users/*}/operations" to their service configuration.
+// For backwards compatibility, the default name includes the
+// operations
+// collection id, however overriding users must ensure the name
+// binding
+// is the parent resource, without the operations collection id.
+func (r *ProjectsLocationsOperationsService) List(name string) *ProjectsLocationsOperationsListCall {
+	c := &ProjectsLocationsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *ProjectsLocationsOperationsListCall) Filter(filter string) *ProjectsLocationsOperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *ProjectsLocationsOperationsListCall) PageSize(pageSize int64) *ProjectsLocationsOperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *ProjectsLocationsOperationsListCall) PageToken(pageToken string) *ProjectsLocationsOperationsListCall {
+	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 *ProjectsLocationsOperationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsListCall {
+	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 *ProjectsLocationsOperationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsListCall {
+	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 *ProjectsLocationsOperationsListCall) Context(ctx context.Context) *ProjectsLocationsOperationsListCall {
+	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 *ProjectsLocationsOperationsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}/operations")
+	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 "speech.projects.locations.operations.list" call.
+// Exactly one of *ListOperationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOperationsResponse.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 *ProjectsLocationsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, 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 := &ListOperationsResponse{
+		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 operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+	//   "httpMethod": "GET",
+	//   "id": "speech.projects.locations.operations.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the operation's parent resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}/operations",
+	//   "response": {
+	//     "$ref": "ListOperationsResponse"
+	//   },
+	//   "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 *ProjectsLocationsOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) 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 "speech.projects.operations.manualRecognitionTasks.get":
+
+type ProjectsOperationsManualRecognitionTasksGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the latest state of a long-running operation.  Clients can
+// use this
+// method to poll the operation result at intervals as recommended by
+// the API
+// service.
+func (r *ProjectsOperationsManualRecognitionTasksService) Get(name string) *ProjectsOperationsManualRecognitionTasksGetCall {
+	c := &ProjectsOperationsManualRecognitionTasksGetCall{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 *ProjectsOperationsManualRecognitionTasksGetCall) Fields(s ...googleapi.Field) *ProjectsOperationsManualRecognitionTasksGetCall {
+	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 *ProjectsOperationsManualRecognitionTasksGetCall) IfNoneMatch(entityTag string) *ProjectsOperationsManualRecognitionTasksGetCall {
+	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 *ProjectsOperationsManualRecognitionTasksGetCall) Context(ctx context.Context) *ProjectsOperationsManualRecognitionTasksGetCall {
+	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 *ProjectsOperationsManualRecognitionTasksGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOperationsManualRecognitionTasksGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"name": c.name,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "speech.projects.operations.manualRecognitionTasks.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.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 *ProjectsOperationsManualRecognitionTasksGetCall) Do(opts ...googleapi.CallOption) (*Operation, 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 := &Operation{
+		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 the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1/projects/{projectsId}/operations/manualRecognitionTasks/{manualRecognitionTasksId}",
+	//   "httpMethod": "GET",
+	//   "id": "speech.projects.operations.manualRecognitionTasks.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/operations/manualRecognitionTasks/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
 // method id "speech.speech.longrunningrecognize":
 
 type SpeechLongrunningrecognizeCall struct {
diff --git a/speech/v1p1beta1/speech-api.json b/speech/v1p1beta1/speech-api.json
index 00f8bc9..4b5a684 100644
--- a/speech/v1p1beta1/speech-api.json
+++ b/speech/v1p1beta1/speech-api.json
@@ -170,6 +170,117 @@
         }
       }
     },
+    "projects": {
+      "resources": {
+        "locations": {
+          "resources": {
+            "operations": {
+              "methods": {
+                "get": {
+                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                  "flatPath": "v1p1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+                  "httpMethod": "GET",
+                  "id": "speech.projects.locations.operations.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The name of the operation resource.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1p1beta1/{+name}",
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
+                "list": {
+                  "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+                  "flatPath": "v1p1beta1/projects/{projectsId}/locations/{locationsId}/operations",
+                  "httpMethod": "GET",
+                  "id": "speech.projects.locations.operations.list",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "filter": {
+                      "description": "The standard list filter.",
+                      "location": "query",
+                      "type": "string"
+                    },
+                    "name": {
+                      "description": "The name of the operation's parent resource.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    },
+                    "pageSize": {
+                      "description": "The standard list page size.",
+                      "format": "int32",
+                      "location": "query",
+                      "type": "integer"
+                    },
+                    "pageToken": {
+                      "description": "The standard list page token.",
+                      "location": "query",
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1p1beta1/{+name}/operations",
+                  "response": {
+                    "$ref": "ListOperationsResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        },
+        "operations": {
+          "resources": {
+            "manualRecognitionTasks": {
+              "methods": {
+                "get": {
+                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+                  "flatPath": "v1p1beta1/projects/{projectsId}/operations/manualRecognitionTasks/{manualRecognitionTasksId}",
+                  "httpMethod": "GET",
+                  "id": "speech.projects.operations.manualRecognitionTasks.get",
+                  "parameterOrder": [
+                    "name"
+                  ],
+                  "parameters": {
+                    "name": {
+                      "description": "The name of the operation resource.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/operations/manualRecognitionTasks/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1p1beta1/{+name}",
+                  "response": {
+                    "$ref": "Operation"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                }
+              }
+            }
+          }
+        }
+      }
+    },
     "speech": {
       "methods": {
         "longrunningrecognize": {
@@ -211,7 +322,7 @@
       }
     }
   },
-  "revision": "20181207",
+  "revision": "20190104",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
     "ListOperationsResponse": {
diff --git a/speech/v1p1beta1/speech-gen.go b/speech/v1p1beta1/speech-gen.go
index 12e5c09..5d861bf 100644
--- a/speech/v1p1beta1/speech-gen.go
+++ b/speech/v1p1beta1/speech-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -64,6 +64,7 @@
 	}
 	s := &Service{client: client, BasePath: basePath}
 	s.Operations = NewOperationsService(s)
+	s.Projects = NewProjectsService(s)
 	s.Speech = NewSpeechService(s)
 	return s, nil
 }
@@ -75,6 +76,8 @@
 
 	Operations *OperationsService
 
+	Projects *ProjectsService
+
 	Speech *SpeechService
 }
 
@@ -94,6 +97,63 @@
 	s *Service
 }
 
+func NewProjectsService(s *Service) *ProjectsService {
+	rs := &ProjectsService{s: s}
+	rs.Locations = NewProjectsLocationsService(s)
+	rs.Operations = NewProjectsOperationsService(s)
+	return rs
+}
+
+type ProjectsService struct {
+	s *Service
+
+	Locations *ProjectsLocationsService
+
+	Operations *ProjectsOperationsService
+}
+
+func NewProjectsLocationsService(s *Service) *ProjectsLocationsService {
+	rs := &ProjectsLocationsService{s: s}
+	rs.Operations = NewProjectsLocationsOperationsService(s)
+	return rs
+}
+
+type ProjectsLocationsService struct {
+	s *Service
+
+	Operations *ProjectsLocationsOperationsService
+}
+
+func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService {
+	rs := &ProjectsLocationsOperationsService{s: s}
+	return rs
+}
+
+type ProjectsLocationsOperationsService struct {
+	s *Service
+}
+
+func NewProjectsOperationsService(s *Service) *ProjectsOperationsService {
+	rs := &ProjectsOperationsService{s: s}
+	rs.ManualRecognitionTasks = NewProjectsOperationsManualRecognitionTasksService(s)
+	return rs
+}
+
+type ProjectsOperationsService struct {
+	s *Service
+
+	ManualRecognitionTasks *ProjectsOperationsManualRecognitionTasksService
+}
+
+func NewProjectsOperationsManualRecognitionTasksService(s *Service) *ProjectsOperationsManualRecognitionTasksService {
+	rs := &ProjectsOperationsManualRecognitionTasksService{s: s}
+	return rs
+}
+
+type ProjectsOperationsManualRecognitionTasksService struct {
+	s *Service
+}
+
 func NewSpeechService(s *Service) *SpeechService {
 	rs := &SpeechService{s: s}
 	return rs
@@ -1662,6 +1722,517 @@
 	}
 }
 
+// method id "speech.projects.locations.operations.get":
+
+type ProjectsLocationsOperationsGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the latest state of a long-running operation.  Clients can
+// use this
+// method to poll the operation result at intervals as recommended by
+// the API
+// service.
+func (r *ProjectsLocationsOperationsService) Get(name string) *ProjectsLocationsOperationsGetCall {
+	c := &ProjectsLocationsOperationsGetCall{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 *ProjectsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsGetCall {
+	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 *ProjectsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsGetCall {
+	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 *ProjectsLocationsOperationsGetCall) Context(ctx context.Context) *ProjectsLocationsOperationsGetCall {
+	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 *ProjectsLocationsOperationsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsOperationsGetCall) 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, "v1p1beta1/{+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 "speech.projects.locations.operations.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.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 *ProjectsLocationsOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, 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 := &Operation{
+		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 the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1p1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+	//   "httpMethod": "GET",
+	//   "id": "speech.projects.locations.operations.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1p1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
+// method id "speech.projects.locations.operations.list":
+
+type ProjectsLocationsOperationsListCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Lists operations that match the specified filter in the
+// request. If the
+// server doesn't support this method, it returns
+// `UNIMPLEMENTED`.
+//
+// NOTE: the `name` binding allows API services to override the
+// binding
+// to use different resource name schemes, such as `users/*/operations`.
+// To
+// override the binding, API services can add a binding such
+// as
+// "/v1/{name=users/*}/operations" to their service configuration.
+// For backwards compatibility, the default name includes the
+// operations
+// collection id, however overriding users must ensure the name
+// binding
+// is the parent resource, without the operations collection id.
+func (r *ProjectsLocationsOperationsService) List(name string) *ProjectsLocationsOperationsListCall {
+	c := &ProjectsLocationsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.name = name
+	return c
+}
+
+// Filter sets the optional parameter "filter": The standard list
+// filter.
+func (c *ProjectsLocationsOperationsListCall) Filter(filter string) *ProjectsLocationsOperationsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// PageSize sets the optional parameter "pageSize": The standard list
+// page size.
+func (c *ProjectsLocationsOperationsListCall) PageSize(pageSize int64) *ProjectsLocationsOperationsListCall {
+	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
+	return c
+}
+
+// PageToken sets the optional parameter "pageToken": The standard list
+// page token.
+func (c *ProjectsLocationsOperationsListCall) PageToken(pageToken string) *ProjectsLocationsOperationsListCall {
+	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 *ProjectsLocationsOperationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsListCall {
+	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 *ProjectsLocationsOperationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsListCall {
+	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 *ProjectsLocationsOperationsListCall) Context(ctx context.Context) *ProjectsLocationsOperationsListCall {
+	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 *ProjectsLocationsOperationsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsOperationsListCall) 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, "v1p1beta1/{+name}/operations")
+	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 "speech.projects.locations.operations.list" call.
+// Exactly one of *ListOperationsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *ListOperationsResponse.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 *ProjectsLocationsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, 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 := &ListOperationsResponse{
+		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 operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
+	//   "flatPath": "v1p1beta1/projects/{projectsId}/locations/{locationsId}/operations",
+	//   "httpMethod": "GET",
+	//   "id": "speech.projects.locations.operations.list",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "The standard list filter.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "name": {
+	//       "description": "The name of the operation's parent resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "pageSize": {
+	//       "description": "The standard list page size.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
+	//     "pageToken": {
+	//       "description": "The standard list page token.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1p1beta1/{+name}/operations",
+	//   "response": {
+	//     "$ref": "ListOperationsResponse"
+	//   },
+	//   "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 *ProjectsLocationsOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) 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 "speech.projects.operations.manualRecognitionTasks.get":
+
+type ProjectsOperationsManualRecognitionTasksGetCall struct {
+	s            *Service
+	name         string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Gets the latest state of a long-running operation.  Clients can
+// use this
+// method to poll the operation result at intervals as recommended by
+// the API
+// service.
+func (r *ProjectsOperationsManualRecognitionTasksService) Get(name string) *ProjectsOperationsManualRecognitionTasksGetCall {
+	c := &ProjectsOperationsManualRecognitionTasksGetCall{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 *ProjectsOperationsManualRecognitionTasksGetCall) Fields(s ...googleapi.Field) *ProjectsOperationsManualRecognitionTasksGetCall {
+	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 *ProjectsOperationsManualRecognitionTasksGetCall) IfNoneMatch(entityTag string) *ProjectsOperationsManualRecognitionTasksGetCall {
+	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 *ProjectsOperationsManualRecognitionTasksGetCall) Context(ctx context.Context) *ProjectsOperationsManualRecognitionTasksGetCall {
+	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 *ProjectsOperationsManualRecognitionTasksGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsOperationsManualRecognitionTasksGetCall) 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, "v1p1beta1/{+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 "speech.projects.operations.manualRecognitionTasks.get" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.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 *ProjectsOperationsManualRecognitionTasksGetCall) Do(opts ...googleapi.CallOption) (*Operation, 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 := &Operation{
+		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 the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
+	//   "flatPath": "v1p1beta1/projects/{projectsId}/operations/manualRecognitionTasks/{manualRecognitionTasksId}",
+	//   "httpMethod": "GET",
+	//   "id": "speech.projects.operations.manualRecognitionTasks.get",
+	//   "parameterOrder": [
+	//     "name"
+	//   ],
+	//   "parameters": {
+	//     "name": {
+	//       "description": "The name of the operation resource.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/operations/manualRecognitionTasks/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1p1beta1/{+name}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
 // method id "speech.speech.longrunningrecognize":
 
 type SpeechLongrunningrecognizeCall struct {
diff --git a/sqladmin/v1beta4/sqladmin-gen.go b/sqladmin/v1beta4/sqladmin-gen.go
index 5c2901f..2f2f6a2 100644
--- a/sqladmin/v1beta4/sqladmin-gen.go
+++ b/sqladmin/v1beta4/sqladmin-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/storage/v1/storage-gen.go b/storage/v1/storage-gen.go
index 606686f..53b4e22 100644
--- a/storage/v1/storage-gen.go
+++ b/storage/v1/storage-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/storage/v1beta1/storage-gen.go b/storage/v1beta1/storage-gen.go
index 9ea1c8a..30b8b08 100644
--- a/storage/v1beta1/storage-gen.go
+++ b/storage/v1beta1/storage-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/storage/v1beta2/storage-gen.go b/storage/v1beta2/storage-gen.go
index ecddabf..1a871cf 100644
--- a/storage/v1beta2/storage-gen.go
+++ b/storage/v1beta2/storage-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/storagetransfer/v1/storagetransfer-gen.go b/storagetransfer/v1/storagetransfer-gen.go
index 8352af6..7a01ba4 100644
--- a/storagetransfer/v1/storagetransfer-gen.go
+++ b/storagetransfer/v1/storagetransfer-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/streetviewpublish/v1/streetviewpublish-gen.go b/streetviewpublish/v1/streetviewpublish-gen.go
index 9bf2aa8..44d5a06 100644
--- a/streetviewpublish/v1/streetviewpublish-gen.go
+++ b/streetviewpublish/v1/streetviewpublish-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/surveys/v2/surveys-gen.go b/surveys/v2/surveys-gen.go
index 3acda68..c7a9669 100644
--- a/surveys/v2/surveys-gen.go
+++ b/surveys/v2/surveys-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/tagmanager/v1/tagmanager-gen.go b/tagmanager/v1/tagmanager-gen.go
index c819b5d..e4472bd 100644
--- a/tagmanager/v1/tagmanager-gen.go
+++ b/tagmanager/v1/tagmanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/tagmanager/v2/tagmanager-gen.go b/tagmanager/v2/tagmanager-gen.go
index 4fc4e9d..c65827c 100644
--- a/tagmanager/v2/tagmanager-gen.go
+++ b/tagmanager/v2/tagmanager-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/tasks/v1/tasks-gen.go b/tasks/v1/tasks-gen.go
index 09514fb..1ea9616 100644
--- a/tasks/v1/tasks-gen.go
+++ b/tasks/v1/tasks-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/testing/v1/testing-api.json b/testing/v1/testing-api.json
index 1439136..c8a0b1c 100644
--- a/testing/v1/testing-api.json
+++ b/testing/v1/testing-api.json
@@ -272,7 +272,7 @@
       }
     }
   },
-  "revision": "20181211",
+  "revision": "20190107",
   "rootUrl": "https://testing.googleapis.com/",
   "schemas": {
     "Account": {
@@ -1173,6 +1173,10 @@
       "description": "A test of an iOS application that uses the XCTest framework.\nXcode supports the option to \"build for testing\", which generates an\n.xctestrun file that contains a test specification (arguments, test methods,\netc). This test type accepts a zip file containing the .xctestrun file and\nthe corresponding contents of the Build/Products directory that contains all\nthe binaries needed to run the tests.",
       "id": "IosXcTest",
       "properties": {
+        "appBundleId": {
+          "description": "Output only. The bundle id for the application under test.",
+          "type": "string"
+        },
         "testsZip": {
           "$ref": "FileReference",
           "description": "Required. The .zip containing the .xctestrun file and the contents of the\nDerivedData/Build/Products directory.\nThe .xctestrun file in this zip is ignored if the xctestrun field is\nspecified."
@@ -1519,6 +1523,11 @@
           "$ref": "EnvironmentMatrix",
           "description": "Required. How the host machine(s) are configured."
         },
+        "flakyTestAttempts": {
+          "description": "The number of times a TestExecution should be re-attempted if one or more\nof its test cases fail for any reason.\nThe maximum number of reruns allowed is 10.\n\nDefault is 0, which implies no reruns.",
+          "format": "int32",
+          "type": "integer"
+        },
         "invalidMatrixDetails": {
           "description": "Output only. Describes why the matrix is considered invalid.\nOnly useful for matrices in the INVALID state.",
           "enum": [
diff --git a/testing/v1/testing-gen.go b/testing/v1/testing-gen.go
index e8867c5..ba39bd8 100644
--- a/testing/v1/testing-gen.go
+++ b/testing/v1/testing-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -1719,6 +1719,10 @@
 // contains all
 // the binaries needed to run the tests.
 type IosXcTest struct {
+	// AppBundleId: Output only. The bundle id for the application under
+	// test.
+	AppBundleId string `json:"appBundleId,omitempty"`
+
 	// TestsZip: Required. The .zip containing the .xctestrun file and the
 	// contents of the
 	// DerivedData/Build/Products directory.
@@ -1742,7 +1746,7 @@
 	// tests. Default is taken from the tests zip.
 	Xctestrun *FileReference `json:"xctestrun,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "TestsZip") to
+	// ForceSendFields is a list of field names (e.g. "AppBundleId") 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
@@ -1750,10 +1754,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "TestsZip") 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. "AppBundleId") 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:"-"`
@@ -2405,6 +2409,14 @@
 	// EnvironmentMatrix: Required. How the host machine(s) are configured.
 	EnvironmentMatrix *EnvironmentMatrix `json:"environmentMatrix,omitempty"`
 
+	// FlakyTestAttempts: The number of times a TestExecution should be
+	// re-attempted if one or more
+	// of its test cases fail for any reason.
+	// The maximum number of reruns allowed is 10.
+	//
+	// Default is 0, which implies no reruns.
+	FlakyTestAttempts int64 `json:"flakyTestAttempts,omitempty"`
+
 	// InvalidMatrixDetails: Output only. Describes why the matrix is
 	// considered invalid.
 	// Only useful for matrices in the INVALID state.
diff --git a/texttospeech/v1/texttospeech-gen.go b/texttospeech/v1/texttospeech-gen.go
index 66f9406..62942ab 100644
--- a/texttospeech/v1/texttospeech-gen.go
+++ b/texttospeech/v1/texttospeech-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/texttospeech/v1beta1/texttospeech-gen.go b/texttospeech/v1beta1/texttospeech-gen.go
index 6d1093f..2230e7d 100644
--- a/texttospeech/v1beta1/texttospeech-gen.go
+++ b/texttospeech/v1beta1/texttospeech-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/toolresults/v1beta3/toolresults-gen.go b/toolresults/v1beta3/toolresults-gen.go
index 1eccaee..d42fae2 100644
--- a/toolresults/v1beta3/toolresults-gen.go
+++ b/toolresults/v1beta3/toolresults-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/tpu/v1/tpu-gen.go b/tpu/v1/tpu-gen.go
index 1440198..c310407 100644
--- a/tpu/v1/tpu-gen.go
+++ b/tpu/v1/tpu-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/tpu/v1alpha1/tpu-gen.go b/tpu/v1alpha1/tpu-gen.go
index c95eaad..5712b55 100644
--- a/tpu/v1alpha1/tpu-gen.go
+++ b/tpu/v1alpha1/tpu-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/translate/v2/translate-gen.go b/translate/v2/translate-gen.go
index 3a3200b..6f826a2 100644
--- a/translate/v2/translate-gen.go
+++ b/translate/v2/translate-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/urlshortener/v1/urlshortener-gen.go b/urlshortener/v1/urlshortener-gen.go
index f7c6d24..4f24398 100644
--- a/urlshortener/v1/urlshortener-gen.go
+++ b/urlshortener/v1/urlshortener-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/vault/v1/vault-gen.go b/vault/v1/vault-gen.go
index f24a465..e959879 100644
--- a/vault/v1/vault-gen.go
+++ b/vault/v1/vault-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/videointelligence/v1/videointelligence-gen.go b/videointelligence/v1/videointelligence-gen.go
index 2f7eeec..e9a5796 100644
--- a/videointelligence/v1/videointelligence-gen.go
+++ b/videointelligence/v1/videointelligence-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/videointelligence/v1beta2/videointelligence-gen.go b/videointelligence/v1beta2/videointelligence-gen.go
index a569549..d85aa63 100644
--- a/videointelligence/v1beta2/videointelligence-gen.go
+++ b/videointelligence/v1beta2/videointelligence-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/videointelligence/v1p1beta1/videointelligence-gen.go b/videointelligence/v1p1beta1/videointelligence-gen.go
index 062b114..e95e733 100644
--- a/videointelligence/v1p1beta1/videointelligence-gen.go
+++ b/videointelligence/v1p1beta1/videointelligence-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/vision/v1/vision-gen.go b/vision/v1/vision-gen.go
index 27877ec..41bc8c0 100644
--- a/vision/v1/vision-gen.go
+++ b/vision/v1/vision-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/vision/v1p1beta1/vision-gen.go b/vision/v1p1beta1/vision-gen.go
index 9b71bee..5241dbe 100644
--- a/vision/v1p1beta1/vision-gen.go
+++ b/vision/v1p1beta1/vision-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/vision/v1p2beta1/vision-gen.go b/vision/v1p2beta1/vision-gen.go
index 5b67cb1..023142a 100644
--- a/vision/v1p2beta1/vision-gen.go
+++ b/vision/v1p2beta1/vision-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/webfonts/v1/webfonts-gen.go b/webfonts/v1/webfonts-gen.go
index c83feaf..44b31a7 100644
--- a/webfonts/v1/webfonts-gen.go
+++ b/webfonts/v1/webfonts-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/webmasters/v3/webmasters-gen.go b/webmasters/v3/webmasters-gen.go
index 8af31a2..4aab1cd 100644
--- a/webmasters/v3/webmasters-gen.go
+++ b/webmasters/v3/webmasters-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/websecurityscanner/v1alpha/websecurityscanner-gen.go b/websecurityscanner/v1alpha/websecurityscanner-gen.go
index 6021356..908496a 100644
--- a/websecurityscanner/v1alpha/websecurityscanner-gen.go
+++ b/websecurityscanner/v1alpha/websecurityscanner-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/youtube/v3/youtube-gen.go b/youtube/v3/youtube-gen.go
index 9cdc24d..0c97156 100644
--- a/youtube/v3/youtube-gen.go
+++ b/youtube/v3/youtube-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/youtubeanalytics/v1/youtubeanalytics-gen.go b/youtubeanalytics/v1/youtubeanalytics-gen.go
index 9bd15a3..20f5559 100644
--- a/youtubeanalytics/v1/youtubeanalytics-gen.go
+++ b/youtubeanalytics/v1/youtubeanalytics-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/youtubeanalytics/v1beta1/youtubeanalytics-gen.go b/youtubeanalytics/v1beta1/youtubeanalytics-gen.go
index 3ddfd79..986cdea 100644
--- a/youtubeanalytics/v1beta1/youtubeanalytics-gen.go
+++ b/youtubeanalytics/v1beta1/youtubeanalytics-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/youtubeanalytics/v2/youtubeanalytics-gen.go b/youtubeanalytics/v2/youtubeanalytics-gen.go
index 4a44319..998bf24 100644
--- a/youtubeanalytics/v2/youtubeanalytics-gen.go
+++ b/youtubeanalytics/v2/youtubeanalytics-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
diff --git a/youtubereporting/v1/youtubereporting-gen.go b/youtubereporting/v1/youtubereporting-gen.go
index 35988f4..5dbe75f 100644
--- a/youtubereporting/v1/youtubereporting-gen.go
+++ b/youtubereporting/v1/youtubereporting-gen.go
@@ -1,4 +1,4 @@
-// Copyright 2018 Google Inc. All rights reserved.
+// Copyright 2019 Google Inc. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.