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": [