diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,367 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+# gogol-containeranalysis
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.3.0`
+
+
+## Description
+
+A client library for the Google Container Analysis.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.
+
+
+## Licence
+
+`gogol-containeranalysis` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import           Distribution.Simple
+main = defaultMain
diff --git a/gen/Network/Google/ContainerAnalysis.hs b/gen/Network/Google/ContainerAnalysis.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/ContainerAnalysis.hs
@@ -0,0 +1,738 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.ContainerAnalysis
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- An implementation of the Grafeas API, which stores, and enables querying
+-- and retrieval of critical metadata about all of your software artifacts.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference>
+module Network.Google.ContainerAnalysis
+    (
+    -- * Service Configuration
+      containerAnalysisService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * API Declaration
+    , ContainerAnalysisAPI
+
+    -- * Resources
+
+    -- ** containeranalysis.projects.notes.batchCreate
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.BatchCreate
+
+    -- ** containeranalysis.projects.notes.create
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Create
+
+    -- ** containeranalysis.projects.notes.delete
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Delete
+
+    -- ** containeranalysis.projects.notes.get
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Get
+
+    -- ** containeranalysis.projects.notes.getIamPolicy
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.GetIAMPolicy
+
+    -- ** containeranalysis.projects.notes.list
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.List
+
+    -- ** containeranalysis.projects.notes.occurrences.list
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Occurrences.List
+
+    -- ** containeranalysis.projects.notes.patch
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Patch
+
+    -- ** containeranalysis.projects.notes.setIamPolicy
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.SetIAMPolicy
+
+    -- ** containeranalysis.projects.notes.testIamPermissions
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Notes.TestIAMPermissions
+
+    -- ** containeranalysis.projects.occurrences.batchCreate
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.BatchCreate
+
+    -- ** containeranalysis.projects.occurrences.create
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Create
+
+    -- ** containeranalysis.projects.occurrences.delete
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Delete
+
+    -- ** containeranalysis.projects.occurrences.get
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Get
+
+    -- ** containeranalysis.projects.occurrences.getIamPolicy
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetIAMPolicy
+
+    -- ** containeranalysis.projects.occurrences.getNotes
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetNotes
+
+    -- ** containeranalysis.projects.occurrences.getVulnerabilitySummary
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetVulnerabilitySummary
+
+    -- ** containeranalysis.projects.occurrences.list
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.List
+
+    -- ** containeranalysis.projects.occurrences.patch
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Patch
+
+    -- ** containeranalysis.projects.occurrences.setIamPolicy
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.SetIAMPolicy
+
+    -- ** containeranalysis.projects.occurrences.testIamPermissions
+    , module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.TestIAMPermissions
+
+    -- ** containeranalysis.projects.scanConfigs.get
+    , module Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Get
+
+    -- ** containeranalysis.projects.scanConfigs.list
+    , module Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.List
+
+    -- ** containeranalysis.projects.scanConfigs.update
+    , module Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Update
+
+    -- * Types
+
+    -- ** LayerDirective
+    , LayerDirective (..)
+
+    -- ** DiscoveredAnalysisStatus
+    , DiscoveredAnalysisStatus (..)
+
+    -- ** Installation
+    , Installation
+    , installation
+    , iLocation
+    , iName
+
+    -- ** Vulnerability
+    , Vulnerability
+    , vulnerability
+    , vCvssScore
+    , vSeverity
+    , vDetails
+
+    -- ** GrafeasV1beta1VulnerabilityDetailsSeverity
+    , GrafeasV1beta1VulnerabilityDetailsSeverity (..)
+
+    -- ** Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- ** VulnerabilityOccurrencesSummary
+    , VulnerabilityOccurrencesSummary
+    , vulnerabilityOccurrencesSummary
+    , vosCounts
+
+    -- ** OccurrenceKind
+    , OccurrenceKind (..)
+
+    -- ** BuildProvenance
+    , BuildProvenance
+    , buildProvenance
+    , bpCreator
+    , bpSourceProvenance
+    , bpCommands
+    , bpTriggerId
+    , bpStartTime
+    , bpBuilderVersion
+    , bpEndTime
+    , bpId
+    , bpProjectId
+    , bpBuiltArtifacts
+    , bpBuildOptions
+    , bpCreateTime
+    , bpLogsURI
+
+    -- ** AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+
+    -- ** Occurrence
+    , Occurrence
+    , occurrence
+    , oInstallation
+    , oVulnerability
+    , oDerivedImage
+    , oKind
+    , oBuild
+    , oAttestation
+    , oUpdateTime
+    , oName
+    , oNoteName
+    , oRemediation
+    , oResource
+    , oDiscovered
+    , oCreateTime
+    , oDeployment
+
+    -- ** GrafeasV1beta1VulnerabilityDetails
+    , GrafeasV1beta1VulnerabilityDetails
+    , grafeasV1beta1VulnerabilityDetails
+    , gvvdLongDescription
+    , gvvdRelatedURLs
+    , gvvdCvssScore
+    , gvvdPackageIssue
+    , gvvdSeverity
+    , gvvdShortDescription
+    , gvvdType
+
+    -- ** VulnerabilitySeverity
+    , VulnerabilitySeverity (..)
+
+    -- ** SourceFileHashes
+    , SourceFileHashes
+    , sourceFileHashes
+    , sfhAddtional
+
+    -- ** Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- ** Command
+    , Command
+    , command
+    , cDir
+    , cArgs
+    , cEnv
+    , cWaitFor
+    , cName
+    , cId
+
+    -- ** GetIAMPolicyRequest
+    , GetIAMPolicyRequest
+    , getIAMPolicyRequest
+
+    -- ** Discovery
+    , Discovery
+    , discovery
+    , dAnalysisKind
+
+    -- ** Hash
+    , Hash
+    , hash
+    , hValue
+    , hType
+
+    -- ** Basis
+    , Basis
+    , basis
+    , bFingerprint
+    , bResourceURL
+
+    -- ** BatchCreateNotesRequest
+    , BatchCreateNotesRequest
+    , batchCreateNotesRequest
+    , bcnrNotes
+
+    -- ** SourceContext
+    , SourceContext
+    , sourceContext
+    , scCloudRepo
+    , scGerrit
+    , scGit
+    , scLabels
+
+    -- ** Distribution
+    , Distribution
+    , distribution
+    , dURL
+    , dMaintainer
+    , dArchitecture
+    , dCpeURI
+    , dDescription
+    , dLatestVersion
+
+    -- ** BatchCreateOccurrencesRequest
+    , BatchCreateOccurrencesRequest
+    , batchCreateOccurrencesRequest
+    , bcorOccurrences
+
+    -- ** ListOccurrencesResponse
+    , ListOccurrencesResponse
+    , listOccurrencesResponse
+    , lorOccurrences
+    , lorNextPageToken
+
+    -- ** Location
+    , Location
+    , location
+    , lPath
+    , lVersion
+    , lCpeURI
+
+    -- ** Empty
+    , Empty
+    , empty
+
+    -- ** GerritSourceContext
+    , GerritSourceContext
+    , gerritSourceContext
+    , gscGerritProject
+    , gscRevisionId
+    , gscHostURI
+    , gscAliasContext
+
+    -- ** RepoId
+    , RepoId
+    , repoId
+    , riUid
+    , riProjectRepoId
+
+    -- ** DiscoveredContinuousAnalysis
+    , DiscoveredContinuousAnalysis (..)
+
+    -- ** ListNoteOccurrencesResponse
+    , ListNoteOccurrencesResponse
+    , listNoteOccurrencesResponse
+    , lnorOccurrences
+    , lnorNextPageToken
+
+    -- ** NoteKind
+    , NoteKind (..)
+
+    -- ** Note
+    , Note
+    , note
+    , nVulnerability
+    , nLongDescription
+    , nAttestationAuthority
+    , nDiscovery
+    , nKind
+    , nRelatedNoteNames
+    , nBuild
+    , nDeployable
+    , nRelatedURL
+    , nUpdateTime
+    , nShortDescription
+    , nName
+    , nBaseImage
+    , nPackage
+    , nExpirationTime
+    , nCreateTime
+
+    -- ** BatchCreateNotesResponse
+    , BatchCreateNotesResponse
+    , batchCreateNotesResponse
+    , bNotes
+
+    -- ** ProjectRepoId
+    , ProjectRepoId
+    , projectRepoId
+    , priRepoName
+    , priProjectId
+
+    -- ** Fingerprint
+    , Fingerprint
+    , fingerprint
+    , fV2Name
+    , fV2Blob
+    , fV1Name
+
+    -- ** Hint
+    , Hint
+    , hint
+    , hHumanReadableName
+
+    -- ** PackageIssue
+    , PackageIssue
+    , packageIssue
+    , piAffectedLocation
+    , piFixedLocation
+    , piSeverityName
+
+    -- ** StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
+    -- ** Build
+    , Build
+    , build
+    , bSignature
+    , bBuilderVersion
+
+    -- ** Attestation
+    , Attestation
+    , attestation
+    , aPgpSignedAttestation
+
+    -- ** DeploymentPlatform
+    , DeploymentPlatform (..)
+
+    -- ** Artifact
+    , Artifact
+    , artifact
+    , aChecksum
+    , aNames
+    , aId
+
+    -- ** SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprUpdateMask
+    , siprPolicy
+
+    -- ** BuildProvenanceBuildOptions
+    , BuildProvenanceBuildOptions
+    , buildProvenanceBuildOptions
+    , bpboAddtional
+
+    -- ** Deployable
+    , Deployable
+    , deployable
+    , dResourceURI
+
+    -- ** GrafeasV1beta1DiscoveryDetails
+    , GrafeasV1beta1DiscoveryDetails
+    , grafeasV1beta1DiscoveryDetails
+    , gvddDiscovered
+
+    -- ** VulnerabilityLocation
+    , VulnerabilityLocation
+    , vulnerabilityLocation
+    , vlVersion
+    , vlPackage
+    , vlCpeURI
+
+    -- ** FixableTotalByDigest
+    , FixableTotalByDigest
+    , fixableTotalByDigest
+    , ftbdSeverity
+    , ftbdFixableCount
+    , ftbdResource
+    , ftbdTotalCount
+
+    -- ** RelatedURL
+    , RelatedURL
+    , relatedURL
+    , ruURL
+    , ruLabel
+
+    -- ** GrafeasV1beta1ImageDetails
+    , GrafeasV1beta1ImageDetails
+    , grafeasV1beta1ImageDetails
+    , gvidDerivedImage
+
+    -- ** BatchCreateOccurrencesResponse
+    , BatchCreateOccurrencesResponse
+    , batchCreateOccurrencesResponse
+    , bOccurrences
+
+    -- ** SourceContextLabels
+    , SourceContextLabels
+    , sourceContextLabels
+    , sclAddtional
+
+    -- ** DistributionArchitecture
+    , DistributionArchitecture (..)
+
+    -- ** ListScanConfigsResponse
+    , ListScanConfigsResponse
+    , listScanConfigsResponse
+    , lscrNextPageToken
+    , lscrScanConfigs
+
+    -- ** FixableTotalByDigestSeverity
+    , FixableTotalByDigestSeverity (..)
+
+    -- ** AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- ** Version
+    , Version
+    , version
+    , vKind
+    , vName
+    , vRevision
+    , vEpoch
+
+    -- ** FileHashes
+    , FileHashes
+    , fileHashes
+    , fhFileHash
+
+    -- ** Resource
+    , Resource
+    , resource
+    , rContentHash
+    , rURI
+    , rName
+
+    -- ** GrafeasV1beta1DeploymentDetails
+    , GrafeasV1beta1DeploymentDetails
+    , grafeasV1beta1DeploymentDetails
+    , gvddDeployment
+
+    -- ** GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+    , GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+    , googleDevtoolsContaineranalysisV1alpha1OperationMetadata
+    , gdcvomEndTime
+    , gdcvomCreateTime
+
+    -- ** PgpSignedAttestationContentType
+    , PgpSignedAttestationContentType (..)
+
+    -- ** Xgafv
+    , Xgafv (..)
+
+    -- ** Details
+    , Details
+    , details
+    , dAttestation
+
+    -- ** Package
+    , Package
+    , package
+    , pDistribution
+    , pName
+
+    -- ** ListNotesResponse
+    , ListNotesResponse
+    , listNotesResponse
+    , lnrNextPageToken
+    , lnrNotes
+
+    -- ** BuildSignature
+    , BuildSignature
+    , buildSignature
+    , bsSignature
+    , bsKeyType
+    , bsKeyId
+    , bsPublicKey
+
+    -- ** TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- ** VersionKind
+    , VersionKind (..)
+
+    -- ** HashType
+    , HashType (..)
+
+    -- ** Discovered
+    , Discovered
+    , discovered
+    , dLastAnalysisTime
+    , dAnalysisStatusError
+    , dAnalysisStatus
+    , dContinuousAnalysis
+
+    -- ** BuildSignatureKeyType
+    , BuildSignatureKeyType (..)
+
+    -- ** Derived
+    , Derived
+    , derived
+    , dBaseResourceURL
+    , dFingerprint
+    , dDistance
+    , dLayerInfo
+
+    -- ** GrafeasV1beta1BuildDetails
+    , GrafeasV1beta1BuildDetails
+    , grafeasV1beta1BuildDetails
+    , gvbdProvenanceBytes
+    , gvbdProvenance
+
+    -- ** Source
+    , Source
+    , source
+    , sContext
+    , sAdditionalContexts
+    , sArtifactStorageSourceURI
+    , sFileHashes
+
+    -- ** ScanConfig
+    , ScanConfig
+    , scanConfig
+    , scEnabled
+    , scUpdateTime
+    , scName
+    , scDescription
+    , scCreateTime
+
+    -- ** GitSourceContext
+    , GitSourceContext
+    , gitSourceContext
+    , gURL
+    , gRevisionId
+
+    -- ** TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- ** Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pVersion
+    , pBindings
+
+    -- ** DiscoveryAnalysisKind
+    , DiscoveryAnalysisKind (..)
+
+    -- ** Layer
+    , Layer
+    , layer
+    , lDirective
+    , lArguments
+
+    -- ** CloudRepoSourceContext
+    , CloudRepoSourceContext
+    , cloudRepoSourceContext
+    , crscRepoId
+    , crscRevisionId
+    , crscAliasContext
+
+    -- ** AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- ** PgpSignedAttestation
+    , PgpSignedAttestation
+    , pgpSignedAttestation
+    , psaSignature
+    , psaPgpKeyId
+    , psaContentType
+
+    -- ** BatchCreateNotesRequestNotes
+    , BatchCreateNotesRequestNotes
+    , batchCreateNotesRequestNotes
+    , bcnrnAddtional
+
+    -- ** AliasContext
+    , AliasContext
+    , aliasContext
+    , acKind
+    , acName
+
+    -- ** AliasContextKind
+    , AliasContextKind (..)
+
+    -- ** Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+
+    -- ** Detail
+    , Detail
+    , detail
+    , detMinAffectedVersion
+    , detPackageType
+    , detIsObsolete
+    , detFixedLocation
+    , detSeverityName
+    , detMaxAffectedVersion
+    , detPackage
+    , detCpeURI
+    , detDescription
+
+    -- ** Authority
+    , Authority
+    , authority
+    , aHint
+
+    -- ** GrafeasV1beta1PackageDetails
+    , GrafeasV1beta1PackageDetails
+    , grafeasV1beta1PackageDetails
+    , gvpdInstallation
+
+    -- ** Deployment
+    , Deployment
+    , deployment
+    , depResourceURI
+    , depPlatform
+    , depConfig
+    , depUndeployTime
+    , depDeployTime
+    , depAddress
+    , depUserEmail
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.BatchCreate
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.Create
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.Delete
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.Get
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.GetIAMPolicy
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.List
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.Occurrences.List
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.Patch
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.SetIAMPolicy
+import           Network.Google.Resource.ContainerAnalysis.Projects.Notes.TestIAMPermissions
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.BatchCreate
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Create
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Delete
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Get
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetIAMPolicy
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetNotes
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetVulnerabilitySummary
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.List
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Patch
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.SetIAMPolicy
+import           Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.TestIAMPermissions
+import           Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Get
+import           Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.List
+import           Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Update
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Container Analysis API service.
+type ContainerAnalysisAPI =
+     ProjectsOccurrencesListResource :<|>
+       ProjectsOccurrencesGetNotesResource
+       :<|> ProjectsOccurrencesGetIAMPolicyResource
+       :<|> ProjectsOccurrencesPatchResource
+       :<|> ProjectsOccurrencesGetResource
+       :<|>
+       ProjectsOccurrencesGetVulnerabilitySummaryResource
+       :<|> ProjectsOccurrencesCreateResource
+       :<|> ProjectsOccurrencesSetIAMPolicyResource
+       :<|> ProjectsOccurrencesBatchCreateResource
+       :<|> ProjectsOccurrencesTestIAMPermissionsResource
+       :<|> ProjectsOccurrencesDeleteResource
+       :<|> ProjectsScanConfigsListResource
+       :<|> ProjectsScanConfigsGetResource
+       :<|> ProjectsScanConfigsUpdateResource
+       :<|> ProjectsNotesOccurrencesListResource
+       :<|> ProjectsNotesListResource
+       :<|> ProjectsNotesGetIAMPolicyResource
+       :<|> ProjectsNotesPatchResource
+       :<|> ProjectsNotesGetResource
+       :<|> ProjectsNotesCreateResource
+       :<|> ProjectsNotesSetIAMPolicyResource
+       :<|> ProjectsNotesBatchCreateResource
+       :<|> ProjectsNotesTestIAMPermissionsResource
+       :<|> ProjectsNotesDeleteResource
diff --git a/gen/Network/Google/ContainerAnalysis/Types.hs b/gen/Network/Google/ContainerAnalysis/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/ContainerAnalysis/Types.hs
@@ -0,0 +1,612 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.ContainerAnalysis.Types
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.ContainerAnalysis.Types
+    (
+    -- * Service Configuration
+      containerAnalysisService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * LayerDirective
+    , LayerDirective (..)
+
+    -- * DiscoveredAnalysisStatus
+    , DiscoveredAnalysisStatus (..)
+
+    -- * Installation
+    , Installation
+    , installation
+    , iLocation
+    , iName
+
+    -- * Vulnerability
+    , Vulnerability
+    , vulnerability
+    , vCvssScore
+    , vSeverity
+    , vDetails
+
+    -- * GrafeasV1beta1VulnerabilityDetailsSeverity
+    , GrafeasV1beta1VulnerabilityDetailsSeverity (..)
+
+    -- * Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- * VulnerabilityOccurrencesSummary
+    , VulnerabilityOccurrencesSummary
+    , vulnerabilityOccurrencesSummary
+    , vosCounts
+
+    -- * OccurrenceKind
+    , OccurrenceKind (..)
+
+    -- * BuildProvenance
+    , BuildProvenance
+    , buildProvenance
+    , bpCreator
+    , bpSourceProvenance
+    , bpCommands
+    , bpTriggerId
+    , bpStartTime
+    , bpBuilderVersion
+    , bpEndTime
+    , bpId
+    , bpProjectId
+    , bpBuiltArtifacts
+    , bpBuildOptions
+    , bpCreateTime
+    , bpLogsURI
+
+    -- * AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+
+    -- * Occurrence
+    , Occurrence
+    , occurrence
+    , oInstallation
+    , oVulnerability
+    , oDerivedImage
+    , oKind
+    , oBuild
+    , oAttestation
+    , oUpdateTime
+    , oName
+    , oNoteName
+    , oRemediation
+    , oResource
+    , oDiscovered
+    , oCreateTime
+    , oDeployment
+
+    -- * GrafeasV1beta1VulnerabilityDetails
+    , GrafeasV1beta1VulnerabilityDetails
+    , grafeasV1beta1VulnerabilityDetails
+    , gvvdLongDescription
+    , gvvdRelatedURLs
+    , gvvdCvssScore
+    , gvvdPackageIssue
+    , gvvdSeverity
+    , gvvdShortDescription
+    , gvvdType
+
+    -- * VulnerabilitySeverity
+    , VulnerabilitySeverity (..)
+
+    -- * SourceFileHashes
+    , SourceFileHashes
+    , sourceFileHashes
+    , sfhAddtional
+
+    -- * Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- * Command
+    , Command
+    , command
+    , cDir
+    , cArgs
+    , cEnv
+    , cWaitFor
+    , cName
+    , cId
+
+    -- * GetIAMPolicyRequest
+    , GetIAMPolicyRequest
+    , getIAMPolicyRequest
+
+    -- * Discovery
+    , Discovery
+    , discovery
+    , dAnalysisKind
+
+    -- * Hash
+    , Hash
+    , hash
+    , hValue
+    , hType
+
+    -- * Basis
+    , Basis
+    , basis
+    , bFingerprint
+    , bResourceURL
+
+    -- * BatchCreateNotesRequest
+    , BatchCreateNotesRequest
+    , batchCreateNotesRequest
+    , bcnrNotes
+
+    -- * SourceContext
+    , SourceContext
+    , sourceContext
+    , scCloudRepo
+    , scGerrit
+    , scGit
+    , scLabels
+
+    -- * Distribution
+    , Distribution
+    , distribution
+    , dURL
+    , dMaintainer
+    , dArchitecture
+    , dCpeURI
+    , dDescription
+    , dLatestVersion
+
+    -- * BatchCreateOccurrencesRequest
+    , BatchCreateOccurrencesRequest
+    , batchCreateOccurrencesRequest
+    , bcorOccurrences
+
+    -- * ListOccurrencesResponse
+    , ListOccurrencesResponse
+    , listOccurrencesResponse
+    , lorOccurrences
+    , lorNextPageToken
+
+    -- * Location
+    , Location
+    , location
+    , lPath
+    , lVersion
+    , lCpeURI
+
+    -- * Empty
+    , Empty
+    , empty
+
+    -- * GerritSourceContext
+    , GerritSourceContext
+    , gerritSourceContext
+    , gscGerritProject
+    , gscRevisionId
+    , gscHostURI
+    , gscAliasContext
+
+    -- * RepoId
+    , RepoId
+    , repoId
+    , riUid
+    , riProjectRepoId
+
+    -- * DiscoveredContinuousAnalysis
+    , DiscoveredContinuousAnalysis (..)
+
+    -- * ListNoteOccurrencesResponse
+    , ListNoteOccurrencesResponse
+    , listNoteOccurrencesResponse
+    , lnorOccurrences
+    , lnorNextPageToken
+
+    -- * NoteKind
+    , NoteKind (..)
+
+    -- * Note
+    , Note
+    , note
+    , nVulnerability
+    , nLongDescription
+    , nAttestationAuthority
+    , nDiscovery
+    , nKind
+    , nRelatedNoteNames
+    , nBuild
+    , nDeployable
+    , nRelatedURL
+    , nUpdateTime
+    , nShortDescription
+    , nName
+    , nBaseImage
+    , nPackage
+    , nExpirationTime
+    , nCreateTime
+
+    -- * BatchCreateNotesResponse
+    , BatchCreateNotesResponse
+    , batchCreateNotesResponse
+    , bNotes
+
+    -- * ProjectRepoId
+    , ProjectRepoId
+    , projectRepoId
+    , priRepoName
+    , priProjectId
+
+    -- * Fingerprint
+    , Fingerprint
+    , fingerprint
+    , fV2Name
+    , fV2Blob
+    , fV1Name
+
+    -- * Hint
+    , Hint
+    , hint
+    , hHumanReadableName
+
+    -- * PackageIssue
+    , PackageIssue
+    , packageIssue
+    , piAffectedLocation
+    , piFixedLocation
+    , piSeverityName
+
+    -- * StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
+    -- * Build
+    , Build
+    , build
+    , bSignature
+    , bBuilderVersion
+
+    -- * Attestation
+    , Attestation
+    , attestation
+    , aPgpSignedAttestation
+
+    -- * DeploymentPlatform
+    , DeploymentPlatform (..)
+
+    -- * Artifact
+    , Artifact
+    , artifact
+    , aChecksum
+    , aNames
+    , aId
+
+    -- * SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprUpdateMask
+    , siprPolicy
+
+    -- * BuildProvenanceBuildOptions
+    , BuildProvenanceBuildOptions
+    , buildProvenanceBuildOptions
+    , bpboAddtional
+
+    -- * Deployable
+    , Deployable
+    , deployable
+    , dResourceURI
+
+    -- * GrafeasV1beta1DiscoveryDetails
+    , GrafeasV1beta1DiscoveryDetails
+    , grafeasV1beta1DiscoveryDetails
+    , gvddDiscovered
+
+    -- * VulnerabilityLocation
+    , VulnerabilityLocation
+    , vulnerabilityLocation
+    , vlVersion
+    , vlPackage
+    , vlCpeURI
+
+    -- * FixableTotalByDigest
+    , FixableTotalByDigest
+    , fixableTotalByDigest
+    , ftbdSeverity
+    , ftbdFixableCount
+    , ftbdResource
+    , ftbdTotalCount
+
+    -- * RelatedURL
+    , RelatedURL
+    , relatedURL
+    , ruURL
+    , ruLabel
+
+    -- * GrafeasV1beta1ImageDetails
+    , GrafeasV1beta1ImageDetails
+    , grafeasV1beta1ImageDetails
+    , gvidDerivedImage
+
+    -- * BatchCreateOccurrencesResponse
+    , BatchCreateOccurrencesResponse
+    , batchCreateOccurrencesResponse
+    , bOccurrences
+
+    -- * SourceContextLabels
+    , SourceContextLabels
+    , sourceContextLabels
+    , sclAddtional
+
+    -- * DistributionArchitecture
+    , DistributionArchitecture (..)
+
+    -- * ListScanConfigsResponse
+    , ListScanConfigsResponse
+    , listScanConfigsResponse
+    , lscrNextPageToken
+    , lscrScanConfigs
+
+    -- * FixableTotalByDigestSeverity
+    , FixableTotalByDigestSeverity (..)
+
+    -- * AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- * Version
+    , Version
+    , version
+    , vKind
+    , vName
+    , vRevision
+    , vEpoch
+
+    -- * FileHashes
+    , FileHashes
+    , fileHashes
+    , fhFileHash
+
+    -- * Resource
+    , Resource
+    , resource
+    , rContentHash
+    , rURI
+    , rName
+
+    -- * GrafeasV1beta1DeploymentDetails
+    , GrafeasV1beta1DeploymentDetails
+    , grafeasV1beta1DeploymentDetails
+    , gvddDeployment
+
+    -- * GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+    , GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+    , googleDevtoolsContaineranalysisV1alpha1OperationMetadata
+    , gdcvomEndTime
+    , gdcvomCreateTime
+
+    -- * PgpSignedAttestationContentType
+    , PgpSignedAttestationContentType (..)
+
+    -- * Xgafv
+    , Xgafv (..)
+
+    -- * Details
+    , Details
+    , details
+    , dAttestation
+
+    -- * Package
+    , Package
+    , package
+    , pDistribution
+    , pName
+
+    -- * ListNotesResponse
+    , ListNotesResponse
+    , listNotesResponse
+    , lnrNextPageToken
+    , lnrNotes
+
+    -- * BuildSignature
+    , BuildSignature
+    , buildSignature
+    , bsSignature
+    , bsKeyType
+    , bsKeyId
+    , bsPublicKey
+
+    -- * TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- * VersionKind
+    , VersionKind (..)
+
+    -- * HashType
+    , HashType (..)
+
+    -- * Discovered
+    , Discovered
+    , discovered
+    , dLastAnalysisTime
+    , dAnalysisStatusError
+    , dAnalysisStatus
+    , dContinuousAnalysis
+
+    -- * BuildSignatureKeyType
+    , BuildSignatureKeyType (..)
+
+    -- * Derived
+    , Derived
+    , derived
+    , dBaseResourceURL
+    , dFingerprint
+    , dDistance
+    , dLayerInfo
+
+    -- * GrafeasV1beta1BuildDetails
+    , GrafeasV1beta1BuildDetails
+    , grafeasV1beta1BuildDetails
+    , gvbdProvenanceBytes
+    , gvbdProvenance
+
+    -- * Source
+    , Source
+    , source
+    , sContext
+    , sAdditionalContexts
+    , sArtifactStorageSourceURI
+    , sFileHashes
+
+    -- * ScanConfig
+    , ScanConfig
+    , scanConfig
+    , scEnabled
+    , scUpdateTime
+    , scName
+    , scDescription
+    , scCreateTime
+
+    -- * GitSourceContext
+    , GitSourceContext
+    , gitSourceContext
+    , gURL
+    , gRevisionId
+
+    -- * TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- * Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pVersion
+    , pBindings
+
+    -- * DiscoveryAnalysisKind
+    , DiscoveryAnalysisKind (..)
+
+    -- * Layer
+    , Layer
+    , layer
+    , lDirective
+    , lArguments
+
+    -- * CloudRepoSourceContext
+    , CloudRepoSourceContext
+    , cloudRepoSourceContext
+    , crscRepoId
+    , crscRevisionId
+    , crscAliasContext
+
+    -- * AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- * PgpSignedAttestation
+    , PgpSignedAttestation
+    , pgpSignedAttestation
+    , psaSignature
+    , psaPgpKeyId
+    , psaContentType
+
+    -- * BatchCreateNotesRequestNotes
+    , BatchCreateNotesRequestNotes
+    , batchCreateNotesRequestNotes
+    , bcnrnAddtional
+
+    -- * AliasContext
+    , AliasContext
+    , aliasContext
+    , acKind
+    , acName
+
+    -- * AliasContextKind
+    , AliasContextKind (..)
+
+    -- * Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+
+    -- * Detail
+    , Detail
+    , detail
+    , detMinAffectedVersion
+    , detPackageType
+    , detIsObsolete
+    , detFixedLocation
+    , detSeverityName
+    , detMaxAffectedVersion
+    , detPackage
+    , detCpeURI
+    , detDescription
+
+    -- * Authority
+    , Authority
+    , authority
+    , aHint
+
+    -- * GrafeasV1beta1PackageDetails
+    , GrafeasV1beta1PackageDetails
+    , grafeasV1beta1PackageDetails
+    , gvpdInstallation
+
+    -- * Deployment
+    , Deployment
+    , deployment
+    , depResourceURI
+    , depPlatform
+    , depConfig
+    , depUndeployTime
+    , depDeployTime
+    , depAddress
+    , depUserEmail
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types.Product
+import           Network.Google.ContainerAnalysis.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1beta1' of the Container Analysis API. This contains the host and root path used as a starting point for constructing service requests.
+containerAnalysisService :: ServiceConfig
+containerAnalysisService
+  = defaultService
+      (ServiceId "containeranalysis:v1beta1")
+      "containeranalysis.googleapis.com"
+
+-- | View and manage your data across Google Cloud Platform services
+cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
+cloudPlatformScope = Proxy;
diff --git a/gen/Network/Google/ContainerAnalysis/Types/Product.hs b/gen/Network/Google/ContainerAnalysis/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/ContainerAnalysis/Types/Product.hs
@@ -0,0 +1,4722 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.ContainerAnalysis.Types.Product
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.ContainerAnalysis.Types.Product where
+
+import           Network.Google.ContainerAnalysis.Types.Sum
+import           Network.Google.Prelude
+
+-- | This represents how a particular software package may be installed on a
+-- system.
+--
+-- /See:/ 'installation' smart constructor.
+data Installation = Installation'
+    { _iLocation :: !(Maybe [Location])
+    , _iName     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Installation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iLocation'
+--
+-- * 'iName'
+installation
+    :: Installation
+installation =
+    Installation'
+    { _iLocation = Nothing
+    , _iName = Nothing
+    }
+
+-- | Required. All of the places within the filesystem versions of this
+-- package have been found.
+iLocation :: Lens' Installation [Location]
+iLocation
+  = lens _iLocation (\ s a -> s{_iLocation = a}) .
+      _Default
+      . _Coerce
+
+-- | Output only. The name of the installed package.
+iName :: Lens' Installation (Maybe Text)
+iName = lens _iName (\ s a -> s{_iName = a})
+
+instance FromJSON Installation where
+        parseJSON
+          = withObject "Installation"
+              (\ o ->
+                 Installation' <$>
+                   (o .:? "location" .!= mempty) <*> (o .:? "name"))
+
+instance ToJSON Installation where
+        toJSON Installation'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _iLocation,
+                  ("name" .=) <$> _iName])
+
+-- | Vulnerability provides metadata about a security vulnerability in a
+-- Note.
+--
+-- /See:/ 'vulnerability' smart constructor.
+data Vulnerability = Vulnerability'
+    { _vCvssScore :: !(Maybe (Textual Double))
+    , _vSeverity  :: !(Maybe VulnerabilitySeverity)
+    , _vDetails   :: !(Maybe [Detail])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Vulnerability' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vCvssScore'
+--
+-- * 'vSeverity'
+--
+-- * 'vDetails'
+vulnerability
+    :: Vulnerability
+vulnerability =
+    Vulnerability'
+    { _vCvssScore = Nothing
+    , _vSeverity = Nothing
+    , _vDetails = Nothing
+    }
+
+-- | The CVSS score for this vulnerability.
+vCvssScore :: Lens' Vulnerability (Maybe Double)
+vCvssScore
+  = lens _vCvssScore (\ s a -> s{_vCvssScore = a}) .
+      mapping _Coerce
+
+-- | Note provider assigned impact of the vulnerability.
+vSeverity :: Lens' Vulnerability (Maybe VulnerabilitySeverity)
+vSeverity
+  = lens _vSeverity (\ s a -> s{_vSeverity = a})
+
+-- | All information about the package to specifically identify this
+-- vulnerability. One entry per (version range and cpe_uri) the package
+-- vulnerability has manifested in.
+vDetails :: Lens' Vulnerability [Detail]
+vDetails
+  = lens _vDetails (\ s a -> s{_vDetails = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Vulnerability where
+        parseJSON
+          = withObject "Vulnerability"
+              (\ o ->
+                 Vulnerability' <$>
+                   (o .:? "cvssScore") <*> (o .:? "severity") <*>
+                     (o .:? "details" .!= mempty))
+
+instance ToJSON Vulnerability where
+        toJSON Vulnerability'{..}
+          = object
+              (catMaybes
+                 [("cvssScore" .=) <$> _vCvssScore,
+                  ("severity" .=) <$> _vSeverity,
+                  ("details" .=) <$> _vDetails])
+
+-- | 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.
+--
+-- /See:/ 'status' smart constructor.
+data Status = Status'
+    { _sDetails :: !(Maybe [StatusDetailsItem])
+    , _sCode    :: !(Maybe (Textual Int32))
+    , _sMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Status' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sDetails'
+--
+-- * 'sCode'
+--
+-- * 'sMessage'
+status
+    :: Status
+status =
+    Status'
+    { _sDetails = Nothing
+    , _sCode = Nothing
+    , _sMessage = Nothing
+    }
+
+-- | A list of messages that carry the error details. There is a common set
+-- of message types for APIs to use.
+sDetails :: Lens' Status [StatusDetailsItem]
+sDetails
+  = lens _sDetails (\ s a -> s{_sDetails = a}) .
+      _Default
+      . _Coerce
+
+-- | The status code, which should be an enum value of google.rpc.Code.
+sCode :: Lens' Status (Maybe Int32)
+sCode
+  = lens _sCode (\ s a -> s{_sCode = a}) .
+      mapping _Coerce
+
+-- | 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.
+sMessage :: Lens' Status (Maybe Text)
+sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
+
+instance FromJSON Status where
+        parseJSON
+          = withObject "Status"
+              (\ o ->
+                 Status' <$>
+                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON Status where
+        toJSON Status'{..}
+          = object
+              (catMaybes
+                 [("details" .=) <$> _sDetails,
+                  ("code" .=) <$> _sCode,
+                  ("message" .=) <$> _sMessage])
+
+-- | A summary of how many vulnerability occurrences there are per resource
+-- and severity type.
+--
+-- /See:/ 'vulnerabilityOccurrencesSummary' smart constructor.
+newtype VulnerabilityOccurrencesSummary = VulnerabilityOccurrencesSummary'
+    { _vosCounts :: Maybe [FixableTotalByDigest]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VulnerabilityOccurrencesSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vosCounts'
+vulnerabilityOccurrencesSummary
+    :: VulnerabilityOccurrencesSummary
+vulnerabilityOccurrencesSummary =
+    VulnerabilityOccurrencesSummary'
+    { _vosCounts = Nothing
+    }
+
+-- | A listing by resource of the number of fixable and total
+-- vulnerabilities.
+vosCounts :: Lens' VulnerabilityOccurrencesSummary [FixableTotalByDigest]
+vosCounts
+  = lens _vosCounts (\ s a -> s{_vosCounts = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON VulnerabilityOccurrencesSummary
+         where
+        parseJSON
+          = withObject "VulnerabilityOccurrencesSummary"
+              (\ o ->
+                 VulnerabilityOccurrencesSummary' <$>
+                   (o .:? "counts" .!= mempty))
+
+instance ToJSON VulnerabilityOccurrencesSummary where
+        toJSON VulnerabilityOccurrencesSummary'{..}
+          = object (catMaybes [("counts" .=) <$> _vosCounts])
+
+-- | Provenance of a build. Contains all information needed to verify the
+-- full details about the build from source to completion.
+--
+-- /See:/ 'buildProvenance' smart constructor.
+data BuildProvenance = BuildProvenance'
+    { _bpCreator          :: !(Maybe Text)
+    , _bpSourceProvenance :: !(Maybe Source)
+    , _bpCommands         :: !(Maybe [Command])
+    , _bpTriggerId        :: !(Maybe Text)
+    , _bpStartTime        :: !(Maybe DateTime')
+    , _bpBuilderVersion   :: !(Maybe Text)
+    , _bpEndTime          :: !(Maybe DateTime')
+    , _bpId               :: !(Maybe Text)
+    , _bpProjectId        :: !(Maybe Text)
+    , _bpBuiltArtifacts   :: !(Maybe [Artifact])
+    , _bpBuildOptions     :: !(Maybe BuildProvenanceBuildOptions)
+    , _bpCreateTime       :: !(Maybe DateTime')
+    , _bpLogsURI          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BuildProvenance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bpCreator'
+--
+-- * 'bpSourceProvenance'
+--
+-- * 'bpCommands'
+--
+-- * 'bpTriggerId'
+--
+-- * 'bpStartTime'
+--
+-- * 'bpBuilderVersion'
+--
+-- * 'bpEndTime'
+--
+-- * 'bpId'
+--
+-- * 'bpProjectId'
+--
+-- * 'bpBuiltArtifacts'
+--
+-- * 'bpBuildOptions'
+--
+-- * 'bpCreateTime'
+--
+-- * 'bpLogsURI'
+buildProvenance
+    :: BuildProvenance
+buildProvenance =
+    BuildProvenance'
+    { _bpCreator = Nothing
+    , _bpSourceProvenance = Nothing
+    , _bpCommands = Nothing
+    , _bpTriggerId = Nothing
+    , _bpStartTime = Nothing
+    , _bpBuilderVersion = Nothing
+    , _bpEndTime = Nothing
+    , _bpId = Nothing
+    , _bpProjectId = Nothing
+    , _bpBuiltArtifacts = Nothing
+    , _bpBuildOptions = Nothing
+    , _bpCreateTime = Nothing
+    , _bpLogsURI = Nothing
+    }
+
+-- | 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.
+bpCreator :: Lens' BuildProvenance (Maybe Text)
+bpCreator
+  = lens _bpCreator (\ s a -> s{_bpCreator = a})
+
+-- | Details of the Source input to the build.
+bpSourceProvenance :: Lens' BuildProvenance (Maybe Source)
+bpSourceProvenance
+  = lens _bpSourceProvenance
+      (\ s a -> s{_bpSourceProvenance = a})
+
+-- | Commands requested by the build.
+bpCommands :: Lens' BuildProvenance [Command]
+bpCommands
+  = lens _bpCommands (\ s a -> s{_bpCommands = a}) .
+      _Default
+      . _Coerce
+
+-- | Trigger identifier if the build was triggered automatically; empty if
+-- not.
+bpTriggerId :: Lens' BuildProvenance (Maybe Text)
+bpTriggerId
+  = lens _bpTriggerId (\ s a -> s{_bpTriggerId = a})
+
+-- | Time at which execution of the build was started.
+bpStartTime :: Lens' BuildProvenance (Maybe UTCTime)
+bpStartTime
+  = lens _bpStartTime (\ s a -> s{_bpStartTime = a}) .
+      mapping _DateTime
+
+-- | Version string of the builder at the time this build was executed.
+bpBuilderVersion :: Lens' BuildProvenance (Maybe Text)
+bpBuilderVersion
+  = lens _bpBuilderVersion
+      (\ s a -> s{_bpBuilderVersion = a})
+
+-- | Time at which execution of the build was finished.
+bpEndTime :: Lens' BuildProvenance (Maybe UTCTime)
+bpEndTime
+  = lens _bpEndTime (\ s a -> s{_bpEndTime = a}) .
+      mapping _DateTime
+
+-- | Required. Unique identifier of the build.
+bpId :: Lens' BuildProvenance (Maybe Text)
+bpId = lens _bpId (\ s a -> s{_bpId = a})
+
+-- | ID of the project.
+bpProjectId :: Lens' BuildProvenance (Maybe Text)
+bpProjectId
+  = lens _bpProjectId (\ s a -> s{_bpProjectId = a})
+
+-- | Output of the build.
+bpBuiltArtifacts :: Lens' BuildProvenance [Artifact]
+bpBuiltArtifacts
+  = lens _bpBuiltArtifacts
+      (\ s a -> s{_bpBuiltArtifacts = a})
+      . _Default
+      . _Coerce
+
+-- | Special options applied to this build. This is a catch-all field where
+-- build providers can enter any desired additional details.
+bpBuildOptions :: Lens' BuildProvenance (Maybe BuildProvenanceBuildOptions)
+bpBuildOptions
+  = lens _bpBuildOptions
+      (\ s a -> s{_bpBuildOptions = a})
+
+-- | Time at which the build was created.
+bpCreateTime :: Lens' BuildProvenance (Maybe UTCTime)
+bpCreateTime
+  = lens _bpCreateTime (\ s a -> s{_bpCreateTime = a})
+      . mapping _DateTime
+
+-- | URI where any logs for this provenance were written.
+bpLogsURI :: Lens' BuildProvenance (Maybe Text)
+bpLogsURI
+  = lens _bpLogsURI (\ s a -> s{_bpLogsURI = a})
+
+instance FromJSON BuildProvenance where
+        parseJSON
+          = withObject "BuildProvenance"
+              (\ o ->
+                 BuildProvenance' <$>
+                   (o .:? "creator") <*> (o .:? "sourceProvenance") <*>
+                     (o .:? "commands" .!= mempty)
+                     <*> (o .:? "triggerId")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "builderVersion")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "id")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "builtArtifacts" .!= mempty)
+                     <*> (o .:? "buildOptions")
+                     <*> (o .:? "createTime")
+                     <*> (o .:? "logsUri"))
+
+instance ToJSON BuildProvenance where
+        toJSON BuildProvenance'{..}
+          = object
+              (catMaybes
+                 [("creator" .=) <$> _bpCreator,
+                  ("sourceProvenance" .=) <$> _bpSourceProvenance,
+                  ("commands" .=) <$> _bpCommands,
+                  ("triggerId" .=) <$> _bpTriggerId,
+                  ("startTime" .=) <$> _bpStartTime,
+                  ("builderVersion" .=) <$> _bpBuilderVersion,
+                  ("endTime" .=) <$> _bpEndTime, ("id" .=) <$> _bpId,
+                  ("projectId" .=) <$> _bpProjectId,
+                  ("builtArtifacts" .=) <$> _bpBuiltArtifacts,
+                  ("buildOptions" .=) <$> _bpBuildOptions,
+                  ("createTime" .=) <$> _bpCreateTime,
+                  ("logsUri" .=) <$> _bpLogsURI])
+
+-- | 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.
+--
+-- /See:/ 'auditConfig' smart constructor.
+data AuditConfig = AuditConfig'
+    { _acService         :: !(Maybe Text)
+    , _acAuditLogConfigs :: !(Maybe [AuditLogConfig])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuditConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acService'
+--
+-- * 'acAuditLogConfigs'
+auditConfig
+    :: AuditConfig
+auditConfig =
+    AuditConfig'
+    { _acService = Nothing
+    , _acAuditLogConfigs = Nothing
+    }
+
+-- | 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.
+acService :: Lens' AuditConfig (Maybe Text)
+acService
+  = lens _acService (\ s a -> s{_acService = a})
+
+-- | The configuration for logging of each type of permission.
+acAuditLogConfigs :: Lens' AuditConfig [AuditLogConfig]
+acAuditLogConfigs
+  = lens _acAuditLogConfigs
+      (\ s a -> s{_acAuditLogConfigs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditConfig where
+        parseJSON
+          = withObject "AuditConfig"
+              (\ o ->
+                 AuditConfig' <$>
+                   (o .:? "service") <*>
+                     (o .:? "auditLogConfigs" .!= mempty))
+
+instance ToJSON AuditConfig where
+        toJSON AuditConfig'{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _acService,
+                  ("auditLogConfigs" .=) <$> _acAuditLogConfigs])
+
+-- | An instance of an analysis type that has been found on a resource.
+--
+-- /See:/ 'occurrence' smart constructor.
+data Occurrence = Occurrence'
+    { _oInstallation  :: !(Maybe GrafeasV1beta1PackageDetails)
+    , _oVulnerability :: !(Maybe GrafeasV1beta1VulnerabilityDetails)
+    , _oDerivedImage  :: !(Maybe GrafeasV1beta1ImageDetails)
+    , _oKind          :: !(Maybe OccurrenceKind)
+    , _oBuild         :: !(Maybe GrafeasV1beta1BuildDetails)
+    , _oAttestation   :: !(Maybe Details)
+    , _oUpdateTime    :: !(Maybe DateTime')
+    , _oName          :: !(Maybe Text)
+    , _oNoteName      :: !(Maybe Text)
+    , _oRemediation   :: !(Maybe Text)
+    , _oResource      :: !(Maybe Resource)
+    , _oDiscovered    :: !(Maybe GrafeasV1beta1DiscoveryDetails)
+    , _oCreateTime    :: !(Maybe DateTime')
+    , _oDeployment    :: !(Maybe GrafeasV1beta1DeploymentDetails)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Occurrence' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oInstallation'
+--
+-- * 'oVulnerability'
+--
+-- * 'oDerivedImage'
+--
+-- * 'oKind'
+--
+-- * 'oBuild'
+--
+-- * 'oAttestation'
+--
+-- * 'oUpdateTime'
+--
+-- * 'oName'
+--
+-- * 'oNoteName'
+--
+-- * 'oRemediation'
+--
+-- * 'oResource'
+--
+-- * 'oDiscovered'
+--
+-- * 'oCreateTime'
+--
+-- * 'oDeployment'
+occurrence
+    :: Occurrence
+occurrence =
+    Occurrence'
+    { _oInstallation = Nothing
+    , _oVulnerability = Nothing
+    , _oDerivedImage = Nothing
+    , _oKind = Nothing
+    , _oBuild = Nothing
+    , _oAttestation = Nothing
+    , _oUpdateTime = Nothing
+    , _oName = Nothing
+    , _oNoteName = Nothing
+    , _oRemediation = Nothing
+    , _oResource = Nothing
+    , _oDiscovered = Nothing
+    , _oCreateTime = Nothing
+    , _oDeployment = Nothing
+    }
+
+-- | Describes the installation of a package on the linked resource.
+oInstallation :: Lens' Occurrence (Maybe GrafeasV1beta1PackageDetails)
+oInstallation
+  = lens _oInstallation
+      (\ s a -> s{_oInstallation = a})
+
+-- | Describes a security vulnerability.
+oVulnerability :: Lens' Occurrence (Maybe GrafeasV1beta1VulnerabilityDetails)
+oVulnerability
+  = lens _oVulnerability
+      (\ s a -> s{_oVulnerability = a})
+
+-- | Describes how this resource derives from the basis in the associated
+-- note.
+oDerivedImage :: Lens' Occurrence (Maybe GrafeasV1beta1ImageDetails)
+oDerivedImage
+  = lens _oDerivedImage
+      (\ s a -> s{_oDerivedImage = a})
+
+-- | Output only. This explicitly denotes which of the occurrence details are
+-- specified. This field can be used as a filter in list requests.
+oKind :: Lens' Occurrence (Maybe OccurrenceKind)
+oKind = lens _oKind (\ s a -> s{_oKind = a})
+
+-- | Describes a verifiable build.
+oBuild :: Lens' Occurrence (Maybe GrafeasV1beta1BuildDetails)
+oBuild = lens _oBuild (\ s a -> s{_oBuild = a})
+
+-- | Describes an attestation of an artifact.
+oAttestation :: Lens' Occurrence (Maybe Details)
+oAttestation
+  = lens _oAttestation (\ s a -> s{_oAttestation = a})
+
+-- | Output only. The time this occurrence was last updated.
+oUpdateTime :: Lens' Occurrence (Maybe UTCTime)
+oUpdateTime
+  = lens _oUpdateTime (\ s a -> s{_oUpdateTime = a}) .
+      mapping _DateTime
+
+-- | Output only. The name of the occurrence in the form of
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\`.
+oName :: Lens' Occurrence (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+-- | Required. Immutable. The analysis note associated with this occurrence,
+-- in the form of \`projects\/[PROVIDER_ID]\/notes\/[NOTE_ID]\`. This field
+-- can be used as a filter in list requests.
+oNoteName :: Lens' Occurrence (Maybe Text)
+oNoteName
+  = lens _oNoteName (\ s a -> s{_oNoteName = a})
+
+-- | A description of actions that can be taken to remedy the note.
+oRemediation :: Lens' Occurrence (Maybe Text)
+oRemediation
+  = lens _oRemediation (\ s a -> s{_oRemediation = a})
+
+-- | Required. Immutable. The resource for which the occurrence applies.
+oResource :: Lens' Occurrence (Maybe Resource)
+oResource
+  = lens _oResource (\ s a -> s{_oResource = a})
+
+-- | Describes when a resource was discovered.
+oDiscovered :: Lens' Occurrence (Maybe GrafeasV1beta1DiscoveryDetails)
+oDiscovered
+  = lens _oDiscovered (\ s a -> s{_oDiscovered = a})
+
+-- | Output only. The time this occurrence was created.
+oCreateTime :: Lens' Occurrence (Maybe UTCTime)
+oCreateTime
+  = lens _oCreateTime (\ s a -> s{_oCreateTime = a}) .
+      mapping _DateTime
+
+-- | Describes the deployment of an artifact on a runtime.
+oDeployment :: Lens' Occurrence (Maybe GrafeasV1beta1DeploymentDetails)
+oDeployment
+  = lens _oDeployment (\ s a -> s{_oDeployment = a})
+
+instance FromJSON Occurrence where
+        parseJSON
+          = withObject "Occurrence"
+              (\ o ->
+                 Occurrence' <$>
+                   (o .:? "installation") <*> (o .:? "vulnerability")
+                     <*> (o .:? "derivedImage")
+                     <*> (o .:? "kind")
+                     <*> (o .:? "build")
+                     <*> (o .:? "attestation")
+                     <*> (o .:? "updateTime")
+                     <*> (o .:? "name")
+                     <*> (o .:? "noteName")
+                     <*> (o .:? "remediation")
+                     <*> (o .:? "resource")
+                     <*> (o .:? "discovered")
+                     <*> (o .:? "createTime")
+                     <*> (o .:? "deployment"))
+
+instance ToJSON Occurrence where
+        toJSON Occurrence'{..}
+          = object
+              (catMaybes
+                 [("installation" .=) <$> _oInstallation,
+                  ("vulnerability" .=) <$> _oVulnerability,
+                  ("derivedImage" .=) <$> _oDerivedImage,
+                  ("kind" .=) <$> _oKind, ("build" .=) <$> _oBuild,
+                  ("attestation" .=) <$> _oAttestation,
+                  ("updateTime" .=) <$> _oUpdateTime,
+                  ("name" .=) <$> _oName,
+                  ("noteName" .=) <$> _oNoteName,
+                  ("remediation" .=) <$> _oRemediation,
+                  ("resource" .=) <$> _oResource,
+                  ("discovered" .=) <$> _oDiscovered,
+                  ("createTime" .=) <$> _oCreateTime,
+                  ("deployment" .=) <$> _oDeployment])
+
+-- | Details of a vulnerability Occurrence.
+--
+-- /See:/ 'grafeasV1beta1VulnerabilityDetails' smart constructor.
+data GrafeasV1beta1VulnerabilityDetails = GrafeasV1beta1VulnerabilityDetails'
+    { _gvvdLongDescription  :: !(Maybe Text)
+    , _gvvdRelatedURLs      :: !(Maybe [RelatedURL])
+    , _gvvdCvssScore        :: !(Maybe (Textual Double))
+    , _gvvdPackageIssue     :: !(Maybe [PackageIssue])
+    , _gvvdSeverity         :: !(Maybe GrafeasV1beta1VulnerabilityDetailsSeverity)
+    , _gvvdShortDescription :: !(Maybe Text)
+    , _gvvdType             :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GrafeasV1beta1VulnerabilityDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gvvdLongDescription'
+--
+-- * 'gvvdRelatedURLs'
+--
+-- * 'gvvdCvssScore'
+--
+-- * 'gvvdPackageIssue'
+--
+-- * 'gvvdSeverity'
+--
+-- * 'gvvdShortDescription'
+--
+-- * 'gvvdType'
+grafeasV1beta1VulnerabilityDetails
+    :: GrafeasV1beta1VulnerabilityDetails
+grafeasV1beta1VulnerabilityDetails =
+    GrafeasV1beta1VulnerabilityDetails'
+    { _gvvdLongDescription = Nothing
+    , _gvvdRelatedURLs = Nothing
+    , _gvvdCvssScore = Nothing
+    , _gvvdPackageIssue = Nothing
+    , _gvvdSeverity = Nothing
+    , _gvvdShortDescription = Nothing
+    , _gvvdType = Nothing
+    }
+
+-- | Output only. A detailed description of this vulnerability.
+gvvdLongDescription :: Lens' GrafeasV1beta1VulnerabilityDetails (Maybe Text)
+gvvdLongDescription
+  = lens _gvvdLongDescription
+      (\ s a -> s{_gvvdLongDescription = a})
+
+-- | Output only. URLs related to this vulnerability.
+gvvdRelatedURLs :: Lens' GrafeasV1beta1VulnerabilityDetails [RelatedURL]
+gvvdRelatedURLs
+  = lens _gvvdRelatedURLs
+      (\ s a -> s{_gvvdRelatedURLs = a})
+      . _Default
+      . _Coerce
+
+-- | 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.
+gvvdCvssScore :: Lens' GrafeasV1beta1VulnerabilityDetails (Maybe Double)
+gvvdCvssScore
+  = lens _gvvdCvssScore
+      (\ s a -> s{_gvvdCvssScore = a})
+      . mapping _Coerce
+
+-- | Required. The set of affected locations and their fixes (if available)
+-- within the associated resource.
+gvvdPackageIssue :: Lens' GrafeasV1beta1VulnerabilityDetails [PackageIssue]
+gvvdPackageIssue
+  = lens _gvvdPackageIssue
+      (\ s a -> s{_gvvdPackageIssue = a})
+      . _Default
+      . _Coerce
+
+-- | Output only. The note provider assigned Severity of the vulnerability.
+gvvdSeverity :: Lens' GrafeasV1beta1VulnerabilityDetails (Maybe GrafeasV1beta1VulnerabilityDetailsSeverity)
+gvvdSeverity
+  = lens _gvvdSeverity (\ s a -> s{_gvvdSeverity = a})
+
+-- | Output only. A one sentence description of this vulnerability.
+gvvdShortDescription :: Lens' GrafeasV1beta1VulnerabilityDetails (Maybe Text)
+gvvdShortDescription
+  = lens _gvvdShortDescription
+      (\ s a -> s{_gvvdShortDescription = a})
+
+-- | The type of package; whether native or non native(ruby gems, node.js
+-- packages etc)
+gvvdType :: Lens' GrafeasV1beta1VulnerabilityDetails (Maybe Text)
+gvvdType = lens _gvvdType (\ s a -> s{_gvvdType = a})
+
+instance FromJSON GrafeasV1beta1VulnerabilityDetails
+         where
+        parseJSON
+          = withObject "GrafeasV1beta1VulnerabilityDetails"
+              (\ o ->
+                 GrafeasV1beta1VulnerabilityDetails' <$>
+                   (o .:? "longDescription") <*>
+                     (o .:? "relatedUrls" .!= mempty)
+                     <*> (o .:? "cvssScore")
+                     <*> (o .:? "packageIssue" .!= mempty)
+                     <*> (o .:? "severity")
+                     <*> (o .:? "shortDescription")
+                     <*> (o .:? "type"))
+
+instance ToJSON GrafeasV1beta1VulnerabilityDetails
+         where
+        toJSON GrafeasV1beta1VulnerabilityDetails'{..}
+          = object
+              (catMaybes
+                 [("longDescription" .=) <$> _gvvdLongDescription,
+                  ("relatedUrls" .=) <$> _gvvdRelatedURLs,
+                  ("cvssScore" .=) <$> _gvvdCvssScore,
+                  ("packageIssue" .=) <$> _gvvdPackageIssue,
+                  ("severity" .=) <$> _gvvdSeverity,
+                  ("shortDescription" .=) <$> _gvvdShortDescription,
+                  ("type" .=) <$> _gvvdType])
+
+-- | 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.
+--
+-- /See:/ 'sourceFileHashes' smart constructor.
+newtype SourceFileHashes = SourceFileHashes'
+    { _sfhAddtional :: HashMap Text FileHashes
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SourceFileHashes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfhAddtional'
+sourceFileHashes
+    :: HashMap Text FileHashes -- ^ 'sfhAddtional'
+    -> SourceFileHashes
+sourceFileHashes pSfhAddtional_ =
+    SourceFileHashes'
+    { _sfhAddtional = _Coerce # pSfhAddtional_
+    }
+
+sfhAddtional :: Lens' SourceFileHashes (HashMap Text FileHashes)
+sfhAddtional
+  = lens _sfhAddtional (\ s a -> s{_sfhAddtional = a})
+      . _Coerce
+
+instance FromJSON SourceFileHashes where
+        parseJSON
+          = withObject "SourceFileHashes"
+              (\ o -> SourceFileHashes' <$> (parseJSONObject o))
+
+instance ToJSON SourceFileHashes where
+        toJSON = toJSON . _sfhAddtional
+
+-- | Represents an expression text. Example: title: \"User account presence\"
+-- description: \"Determines whether the request has a user account\"
+-- expression: \"size(request.user) > 0\"
+--
+-- /See:/ 'expr' smart constructor.
+data Expr = Expr'
+    { _eLocation    :: !(Maybe Text)
+    , _eExpression  :: !(Maybe Text)
+    , _eTitle       :: !(Maybe Text)
+    , _eDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Expr' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eLocation'
+--
+-- * 'eExpression'
+--
+-- * 'eTitle'
+--
+-- * 'eDescription'
+expr
+    :: Expr
+expr =
+    Expr'
+    { _eLocation = Nothing
+    , _eExpression = Nothing
+    , _eTitle = Nothing
+    , _eDescription = Nothing
+    }
+
+-- | An optional string indicating the location of the expression for error
+-- reporting, e.g. a file name and a position in the file.
+eLocation :: Lens' Expr (Maybe Text)
+eLocation
+  = lens _eLocation (\ s a -> s{_eLocation = a})
+
+-- | 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.
+eExpression :: Lens' Expr (Maybe Text)
+eExpression
+  = lens _eExpression (\ s a -> s{_eExpression = a})
+
+-- | 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.
+eTitle :: Lens' Expr (Maybe Text)
+eTitle = lens _eTitle (\ s a -> s{_eTitle = a})
+
+-- | An optional description of the expression. This is a longer text which
+-- describes the expression, e.g. when hovered over it in a UI.
+eDescription :: Lens' Expr (Maybe Text)
+eDescription
+  = lens _eDescription (\ s a -> s{_eDescription = a})
+
+instance FromJSON Expr where
+        parseJSON
+          = withObject "Expr"
+              (\ o ->
+                 Expr' <$>
+                   (o .:? "location") <*> (o .:? "expression") <*>
+                     (o .:? "title")
+                     <*> (o .:? "description"))
+
+instance ToJSON Expr where
+        toJSON Expr'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _eLocation,
+                  ("expression" .=) <$> _eExpression,
+                  ("title" .=) <$> _eTitle,
+                  ("description" .=) <$> _eDescription])
+
+-- | Command describes a step performed as part of the build pipeline.
+--
+-- /See:/ 'command' smart constructor.
+data Command = Command'
+    { _cDir     :: !(Maybe Text)
+    , _cArgs    :: !(Maybe [Text])
+    , _cEnv     :: !(Maybe [Text])
+    , _cWaitFor :: !(Maybe [Text])
+    , _cName    :: !(Maybe Text)
+    , _cId      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Command' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cDir'
+--
+-- * 'cArgs'
+--
+-- * 'cEnv'
+--
+-- * 'cWaitFor'
+--
+-- * 'cName'
+--
+-- * 'cId'
+command
+    :: Command
+command =
+    Command'
+    { _cDir = Nothing
+    , _cArgs = Nothing
+    , _cEnv = Nothing
+    , _cWaitFor = Nothing
+    , _cName = Nothing
+    , _cId = Nothing
+    }
+
+-- | Working directory (relative to project source root) used when running
+-- this command.
+cDir :: Lens' Command (Maybe Text)
+cDir = lens _cDir (\ s a -> s{_cDir = a})
+
+-- | Command-line arguments used when executing this command.
+cArgs :: Lens' Command [Text]
+cArgs
+  = lens _cArgs (\ s a -> s{_cArgs = a}) . _Default .
+      _Coerce
+
+-- | Environment variables set before running this command.
+cEnv :: Lens' Command [Text]
+cEnv
+  = lens _cEnv (\ s a -> s{_cEnv = a}) . _Default .
+      _Coerce
+
+-- | The ID(s) of the command(s) that this command depends on.
+cWaitFor :: Lens' Command [Text]
+cWaitFor
+  = lens _cWaitFor (\ s a -> s{_cWaitFor = a}) .
+      _Default
+      . _Coerce
+
+-- | Required. Name of the command, as presented on the command line, or if
+-- the command is packaged as a Docker container, as presented to \`docker
+-- pull\`.
+cName :: Lens' Command (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+-- | Optional unique identifier for this command, used in wait_for to
+-- reference this command as a dependency.
+cId :: Lens' Command (Maybe Text)
+cId = lens _cId (\ s a -> s{_cId = a})
+
+instance FromJSON Command where
+        parseJSON
+          = withObject "Command"
+              (\ o ->
+                 Command' <$>
+                   (o .:? "dir") <*> (o .:? "args" .!= mempty) <*>
+                     (o .:? "env" .!= mempty)
+                     <*> (o .:? "waitFor" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "id"))
+
+instance ToJSON Command where
+        toJSON Command'{..}
+          = object
+              (catMaybes
+                 [("dir" .=) <$> _cDir, ("args" .=) <$> _cArgs,
+                  ("env" .=) <$> _cEnv, ("waitFor" .=) <$> _cWaitFor,
+                  ("name" .=) <$> _cName, ("id" .=) <$> _cId])
+
+-- | Request message for \`GetIamPolicy\` method.
+--
+-- /See:/ 'getIAMPolicyRequest' smart constructor.
+data GetIAMPolicyRequest =
+    GetIAMPolicyRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+getIAMPolicyRequest
+    :: GetIAMPolicyRequest
+getIAMPolicyRequest = GetIAMPolicyRequest'
+
+instance FromJSON GetIAMPolicyRequest where
+        parseJSON
+          = withObject "GetIAMPolicyRequest"
+              (\ o -> pure GetIAMPolicyRequest')
+
+instance ToJSON GetIAMPolicyRequest where
+        toJSON = const emptyObject
+
+-- | 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.
+--
+-- /See:/ 'discovery' smart constructor.
+newtype Discovery = Discovery'
+    { _dAnalysisKind :: Maybe DiscoveryAnalysisKind
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Discovery' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dAnalysisKind'
+discovery
+    :: Discovery
+discovery =
+    Discovery'
+    { _dAnalysisKind = Nothing
+    }
+
+-- | Required. Immutable. The kind of analysis that is handled by this
+-- discovery.
+dAnalysisKind :: Lens' Discovery (Maybe DiscoveryAnalysisKind)
+dAnalysisKind
+  = lens _dAnalysisKind
+      (\ s a -> s{_dAnalysisKind = a})
+
+instance FromJSON Discovery where
+        parseJSON
+          = withObject "Discovery"
+              (\ o -> Discovery' <$> (o .:? "analysisKind"))
+
+instance ToJSON Discovery where
+        toJSON Discovery'{..}
+          = object
+              (catMaybes [("analysisKind" .=) <$> _dAnalysisKind])
+
+-- | Container message for hash values.
+--
+-- /See:/ 'hash' smart constructor.
+data Hash = Hash'
+    { _hValue :: !(Maybe Bytes)
+    , _hType  :: !(Maybe HashType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Hash' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hValue'
+--
+-- * 'hType'
+hash
+    :: Hash
+hash =
+    Hash'
+    { _hValue = Nothing
+    , _hType = Nothing
+    }
+
+-- | Required. The hash value.
+hValue :: Lens' Hash (Maybe ByteString)
+hValue
+  = lens _hValue (\ s a -> s{_hValue = a}) .
+      mapping _Bytes
+
+-- | Required. The type of hash that was performed.
+hType :: Lens' Hash (Maybe HashType)
+hType = lens _hType (\ s a -> s{_hType = a})
+
+instance FromJSON Hash where
+        parseJSON
+          = withObject "Hash"
+              (\ o -> Hash' <$> (o .:? "value") <*> (o .:? "type"))
+
+instance ToJSON Hash where
+        toJSON Hash'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _hValue, ("type" .=) <$> _hType])
+
+-- | Basis describes the base image portion (Note) of the DockerImage
+-- relationship. Linked occurrences are derived from this or an equivalent
+-- image via: FROM Or an equivalent reference, e.g. a tag of the
+-- resource_url.
+--
+-- /See:/ 'basis' smart constructor.
+data Basis = Basis'
+    { _bFingerprint :: !(Maybe Fingerprint)
+    , _bResourceURL :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Basis' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bFingerprint'
+--
+-- * 'bResourceURL'
+basis
+    :: Basis
+basis =
+    Basis'
+    { _bFingerprint = Nothing
+    , _bResourceURL = Nothing
+    }
+
+-- | Required. Immutable. The fingerprint of the base image.
+bFingerprint :: Lens' Basis (Maybe Fingerprint)
+bFingerprint
+  = lens _bFingerprint (\ s a -> s{_bFingerprint = a})
+
+-- | Required. Immutable. The resource_url for the resource representing the
+-- basis of associated occurrence images.
+bResourceURL :: Lens' Basis (Maybe Text)
+bResourceURL
+  = lens _bResourceURL (\ s a -> s{_bResourceURL = a})
+
+instance FromJSON Basis where
+        parseJSON
+          = withObject "Basis"
+              (\ o ->
+                 Basis' <$>
+                   (o .:? "fingerprint") <*> (o .:? "resourceUrl"))
+
+instance ToJSON Basis where
+        toJSON Basis'{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _bFingerprint,
+                  ("resourceUrl" .=) <$> _bResourceURL])
+
+-- | Request to create notes in batch.
+--
+-- /See:/ 'batchCreateNotesRequest' smart constructor.
+newtype BatchCreateNotesRequest = BatchCreateNotesRequest'
+    { _bcnrNotes :: Maybe BatchCreateNotesRequestNotes
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BatchCreateNotesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bcnrNotes'
+batchCreateNotesRequest
+    :: BatchCreateNotesRequest
+batchCreateNotesRequest =
+    BatchCreateNotesRequest'
+    { _bcnrNotes = Nothing
+    }
+
+-- | The notes to create. Max allowed length is 1000.
+bcnrNotes :: Lens' BatchCreateNotesRequest (Maybe BatchCreateNotesRequestNotes)
+bcnrNotes
+  = lens _bcnrNotes (\ s a -> s{_bcnrNotes = a})
+
+instance FromJSON BatchCreateNotesRequest where
+        parseJSON
+          = withObject "BatchCreateNotesRequest"
+              (\ o -> BatchCreateNotesRequest' <$> (o .:? "notes"))
+
+instance ToJSON BatchCreateNotesRequest where
+        toJSON BatchCreateNotesRequest'{..}
+          = object (catMaybes [("notes" .=) <$> _bcnrNotes])
+
+-- | 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.
+--
+-- /See:/ 'sourceContext' smart constructor.
+data SourceContext = SourceContext'
+    { _scCloudRepo :: !(Maybe CloudRepoSourceContext)
+    , _scGerrit    :: !(Maybe GerritSourceContext)
+    , _scGit       :: !(Maybe GitSourceContext)
+    , _scLabels    :: !(Maybe SourceContextLabels)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SourceContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scCloudRepo'
+--
+-- * 'scGerrit'
+--
+-- * 'scGit'
+--
+-- * 'scLabels'
+sourceContext
+    :: SourceContext
+sourceContext =
+    SourceContext'
+    { _scCloudRepo = Nothing
+    , _scGerrit = Nothing
+    , _scGit = Nothing
+    , _scLabels = Nothing
+    }
+
+-- | A SourceContext referring to a revision in a Google Cloud Source Repo.
+scCloudRepo :: Lens' SourceContext (Maybe CloudRepoSourceContext)
+scCloudRepo
+  = lens _scCloudRepo (\ s a -> s{_scCloudRepo = a})
+
+-- | A SourceContext referring to a Gerrit project.
+scGerrit :: Lens' SourceContext (Maybe GerritSourceContext)
+scGerrit = lens _scGerrit (\ s a -> s{_scGerrit = a})
+
+-- | A SourceContext referring to any third party Git repo (e.g., GitHub).
+scGit :: Lens' SourceContext (Maybe GitSourceContext)
+scGit = lens _scGit (\ s a -> s{_scGit = a})
+
+-- | Labels with user defined metadata.
+scLabels :: Lens' SourceContext (Maybe SourceContextLabels)
+scLabels = lens _scLabels (\ s a -> s{_scLabels = a})
+
+instance FromJSON SourceContext where
+        parseJSON
+          = withObject "SourceContext"
+              (\ o ->
+                 SourceContext' <$>
+                   (o .:? "cloudRepo") <*> (o .:? "gerrit") <*>
+                     (o .:? "git")
+                     <*> (o .:? "labels"))
+
+instance ToJSON SourceContext where
+        toJSON SourceContext'{..}
+          = object
+              (catMaybes
+                 [("cloudRepo" .=) <$> _scCloudRepo,
+                  ("gerrit" .=) <$> _scGerrit, ("git" .=) <$> _scGit,
+                  ("labels" .=) <$> _scLabels])
+
+-- | This represents a particular channel of distribution for a given
+-- package. E.g., Debian\'s jessie-backports dpkg mirror.
+--
+-- /See:/ 'distribution' smart constructor.
+data Distribution = Distribution'
+    { _dURL           :: !(Maybe Text)
+    , _dMaintainer    :: !(Maybe Text)
+    , _dArchitecture  :: !(Maybe DistributionArchitecture)
+    , _dCpeURI        :: !(Maybe Text)
+    , _dDescription   :: !(Maybe Text)
+    , _dLatestVersion :: !(Maybe Version)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Distribution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dURL'
+--
+-- * 'dMaintainer'
+--
+-- * 'dArchitecture'
+--
+-- * 'dCpeURI'
+--
+-- * 'dDescription'
+--
+-- * 'dLatestVersion'
+distribution
+    :: Distribution
+distribution =
+    Distribution'
+    { _dURL = Nothing
+    , _dMaintainer = Nothing
+    , _dArchitecture = Nothing
+    , _dCpeURI = Nothing
+    , _dDescription = Nothing
+    , _dLatestVersion = Nothing
+    }
+
+-- | The distribution channel-specific homepage for this package.
+dURL :: Lens' Distribution (Maybe Text)
+dURL = lens _dURL (\ s a -> s{_dURL = a})
+
+-- | A freeform string denoting the maintainer of this package.
+dMaintainer :: Lens' Distribution (Maybe Text)
+dMaintainer
+  = lens _dMaintainer (\ s a -> s{_dMaintainer = a})
+
+-- | The CPU architecture for which packages in this distribution channel
+-- were built.
+dArchitecture :: Lens' Distribution (Maybe DistributionArchitecture)
+dArchitecture
+  = lens _dArchitecture
+      (\ s a -> s{_dArchitecture = a})
+
+-- | Required. The cpe_uri in [CPE
+-- format](https:\/\/cpe.mitre.org\/specification\/) denoting the package
+-- manager version distributing a package.
+dCpeURI :: Lens' Distribution (Maybe Text)
+dCpeURI = lens _dCpeURI (\ s a -> s{_dCpeURI = a})
+
+-- | The distribution channel-specific description of this package.
+dDescription :: Lens' Distribution (Maybe Text)
+dDescription
+  = lens _dDescription (\ s a -> s{_dDescription = a})
+
+-- | The latest available version of this package in this distribution
+-- channel.
+dLatestVersion :: Lens' Distribution (Maybe Version)
+dLatestVersion
+  = lens _dLatestVersion
+      (\ s a -> s{_dLatestVersion = a})
+
+instance FromJSON Distribution where
+        parseJSON
+          = withObject "Distribution"
+              (\ o ->
+                 Distribution' <$>
+                   (o .:? "url") <*> (o .:? "maintainer") <*>
+                     (o .:? "architecture")
+                     <*> (o .:? "cpeUri")
+                     <*> (o .:? "description")
+                     <*> (o .:? "latestVersion"))
+
+instance ToJSON Distribution where
+        toJSON Distribution'{..}
+          = object
+              (catMaybes
+                 [("url" .=) <$> _dURL,
+                  ("maintainer" .=) <$> _dMaintainer,
+                  ("architecture" .=) <$> _dArchitecture,
+                  ("cpeUri" .=) <$> _dCpeURI,
+                  ("description" .=) <$> _dDescription,
+                  ("latestVersion" .=) <$> _dLatestVersion])
+
+-- | Request to create occurrences in batch.
+--
+-- /See:/ 'batchCreateOccurrencesRequest' smart constructor.
+newtype BatchCreateOccurrencesRequest = BatchCreateOccurrencesRequest'
+    { _bcorOccurrences :: Maybe [Occurrence]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BatchCreateOccurrencesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bcorOccurrences'
+batchCreateOccurrencesRequest
+    :: BatchCreateOccurrencesRequest
+batchCreateOccurrencesRequest =
+    BatchCreateOccurrencesRequest'
+    { _bcorOccurrences = Nothing
+    }
+
+-- | The occurrences to create. Max allowed length is 1000.
+bcorOccurrences :: Lens' BatchCreateOccurrencesRequest [Occurrence]
+bcorOccurrences
+  = lens _bcorOccurrences
+      (\ s a -> s{_bcorOccurrences = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BatchCreateOccurrencesRequest where
+        parseJSON
+          = withObject "BatchCreateOccurrencesRequest"
+              (\ o ->
+                 BatchCreateOccurrencesRequest' <$>
+                   (o .:? "occurrences" .!= mempty))
+
+instance ToJSON BatchCreateOccurrencesRequest where
+        toJSON BatchCreateOccurrencesRequest'{..}
+          = object
+              (catMaybes [("occurrences" .=) <$> _bcorOccurrences])
+
+-- | Response for listing occurrences.
+--
+-- /See:/ 'listOccurrencesResponse' smart constructor.
+data ListOccurrencesResponse = ListOccurrencesResponse'
+    { _lorOccurrences   :: !(Maybe [Occurrence])
+    , _lorNextPageToken :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListOccurrencesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lorOccurrences'
+--
+-- * 'lorNextPageToken'
+listOccurrencesResponse
+    :: ListOccurrencesResponse
+listOccurrencesResponse =
+    ListOccurrencesResponse'
+    { _lorOccurrences = Nothing
+    , _lorNextPageToken = Nothing
+    }
+
+-- | The occurrences requested.
+lorOccurrences :: Lens' ListOccurrencesResponse [Occurrence]
+lorOccurrences
+  = lens _lorOccurrences
+      (\ s a -> s{_lorOccurrences = a})
+      . _Default
+      . _Coerce
+
+-- | 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.
+lorNextPageToken :: Lens' ListOccurrencesResponse (Maybe Text)
+lorNextPageToken
+  = lens _lorNextPageToken
+      (\ s a -> s{_lorNextPageToken = a})
+
+instance FromJSON ListOccurrencesResponse where
+        parseJSON
+          = withObject "ListOccurrencesResponse"
+              (\ o ->
+                 ListOccurrencesResponse' <$>
+                   (o .:? "occurrences" .!= mempty) <*>
+                     (o .:? "nextPageToken"))
+
+instance ToJSON ListOccurrencesResponse where
+        toJSON ListOccurrencesResponse'{..}
+          = object
+              (catMaybes
+                 [("occurrences" .=) <$> _lorOccurrences,
+                  ("nextPageToken" .=) <$> _lorNextPageToken])
+
+-- | An occurrence of a particular package installation found within a
+-- system\'s filesystem. E.g., glibc was found in
+-- \`\/var\/lib\/dpkg\/status\`.
+--
+-- /See:/ 'location' smart constructor.
+data Location = Location'
+    { _lPath    :: !(Maybe Text)
+    , _lVersion :: !(Maybe Version)
+    , _lCpeURI  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Location' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lPath'
+--
+-- * 'lVersion'
+--
+-- * 'lCpeURI'
+location
+    :: Location
+location =
+    Location'
+    { _lPath = Nothing
+    , _lVersion = Nothing
+    , _lCpeURI = Nothing
+    }
+
+-- | The path from which we gathered that this package\/version is installed.
+lPath :: Lens' Location (Maybe Text)
+lPath = lens _lPath (\ s a -> s{_lPath = a})
+
+-- | The version installed at this location.
+lVersion :: Lens' Location (Maybe Version)
+lVersion = lens _lVersion (\ s a -> s{_lVersion = a})
+
+-- | Required. The CPE URI in [CPE
+-- format](https:\/\/cpe.mitre.org\/specification\/) denoting the package
+-- manager version distributing a package.
+lCpeURI :: Lens' Location (Maybe Text)
+lCpeURI = lens _lCpeURI (\ s a -> s{_lCpeURI = a})
+
+instance FromJSON Location where
+        parseJSON
+          = withObject "Location"
+              (\ o ->
+                 Location' <$>
+                   (o .:? "path") <*> (o .:? "version") <*>
+                     (o .:? "cpeUri"))
+
+instance ToJSON Location where
+        toJSON Location'{..}
+          = object
+              (catMaybes
+                 [("path" .=) <$> _lPath,
+                  ("version" .=) <$> _lVersion,
+                  ("cpeUri" .=) <$> _lCpeURI])
+
+-- | 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 \`{}\`.
+--
+-- /See:/ 'empty' smart constructor.
+data Empty =
+    Empty'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Empty' with the minimum fields required to make a request.
+--
+empty
+    :: Empty
+empty = Empty'
+
+instance FromJSON Empty where
+        parseJSON = withObject "Empty" (\ o -> pure Empty')
+
+instance ToJSON Empty where
+        toJSON = const emptyObject
+
+-- | A SourceContext referring to a Gerrit project.
+--
+-- /See:/ 'gerritSourceContext' smart constructor.
+data GerritSourceContext = GerritSourceContext'
+    { _gscGerritProject :: !(Maybe Text)
+    , _gscRevisionId    :: !(Maybe Text)
+    , _gscHostURI       :: !(Maybe Text)
+    , _gscAliasContext  :: !(Maybe AliasContext)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GerritSourceContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gscGerritProject'
+--
+-- * 'gscRevisionId'
+--
+-- * 'gscHostURI'
+--
+-- * 'gscAliasContext'
+gerritSourceContext
+    :: GerritSourceContext
+gerritSourceContext =
+    GerritSourceContext'
+    { _gscGerritProject = Nothing
+    , _gscRevisionId = Nothing
+    , _gscHostURI = Nothing
+    , _gscAliasContext = Nothing
+    }
+
+-- | 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.
+gscGerritProject :: Lens' GerritSourceContext (Maybe Text)
+gscGerritProject
+  = lens _gscGerritProject
+      (\ s a -> s{_gscGerritProject = a})
+
+-- | A revision (commit) ID.
+gscRevisionId :: Lens' GerritSourceContext (Maybe Text)
+gscRevisionId
+  = lens _gscRevisionId
+      (\ s a -> s{_gscRevisionId = a})
+
+-- | The URI of a running Gerrit instance.
+gscHostURI :: Lens' GerritSourceContext (Maybe Text)
+gscHostURI
+  = lens _gscHostURI (\ s a -> s{_gscHostURI = a})
+
+-- | An alias, which may be a branch or tag.
+gscAliasContext :: Lens' GerritSourceContext (Maybe AliasContext)
+gscAliasContext
+  = lens _gscAliasContext
+      (\ s a -> s{_gscAliasContext = a})
+
+instance FromJSON GerritSourceContext where
+        parseJSON
+          = withObject "GerritSourceContext"
+              (\ o ->
+                 GerritSourceContext' <$>
+                   (o .:? "gerritProject") <*> (o .:? "revisionId") <*>
+                     (o .:? "hostUri")
+                     <*> (o .:? "aliasContext"))
+
+instance ToJSON GerritSourceContext where
+        toJSON GerritSourceContext'{..}
+          = object
+              (catMaybes
+                 [("gerritProject" .=) <$> _gscGerritProject,
+                  ("revisionId" .=) <$> _gscRevisionId,
+                  ("hostUri" .=) <$> _gscHostURI,
+                  ("aliasContext" .=) <$> _gscAliasContext])
+
+-- | A unique identifier for a Cloud Repo.
+--
+-- /See:/ 'repoId' smart constructor.
+data RepoId = RepoId'
+    { _riUid           :: !(Maybe Text)
+    , _riProjectRepoId :: !(Maybe ProjectRepoId)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RepoId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riUid'
+--
+-- * 'riProjectRepoId'
+repoId
+    :: RepoId
+repoId =
+    RepoId'
+    { _riUid = Nothing
+    , _riProjectRepoId = Nothing
+    }
+
+-- | A server-assigned, globally unique identifier.
+riUid :: Lens' RepoId (Maybe Text)
+riUid = lens _riUid (\ s a -> s{_riUid = a})
+
+-- | A combination of a project ID and a repo name.
+riProjectRepoId :: Lens' RepoId (Maybe ProjectRepoId)
+riProjectRepoId
+  = lens _riProjectRepoId
+      (\ s a -> s{_riProjectRepoId = a})
+
+instance FromJSON RepoId where
+        parseJSON
+          = withObject "RepoId"
+              (\ o ->
+                 RepoId' <$>
+                   (o .:? "uid") <*> (o .:? "projectRepoId"))
+
+instance ToJSON RepoId where
+        toJSON RepoId'{..}
+          = object
+              (catMaybes
+                 [("uid" .=) <$> _riUid,
+                  ("projectRepoId" .=) <$> _riProjectRepoId])
+
+-- | Response for listing occurrences for a note.
+--
+-- /See:/ 'listNoteOccurrencesResponse' smart constructor.
+data ListNoteOccurrencesResponse = ListNoteOccurrencesResponse'
+    { _lnorOccurrences   :: !(Maybe [Occurrence])
+    , _lnorNextPageToken :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListNoteOccurrencesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lnorOccurrences'
+--
+-- * 'lnorNextPageToken'
+listNoteOccurrencesResponse
+    :: ListNoteOccurrencesResponse
+listNoteOccurrencesResponse =
+    ListNoteOccurrencesResponse'
+    { _lnorOccurrences = Nothing
+    , _lnorNextPageToken = Nothing
+    }
+
+-- | The occurrences attached to the specified note.
+lnorOccurrences :: Lens' ListNoteOccurrencesResponse [Occurrence]
+lnorOccurrences
+  = lens _lnorOccurrences
+      (\ s a -> s{_lnorOccurrences = a})
+      . _Default
+      . _Coerce
+
+-- | Token to provide to skip to a particular spot in the list.
+lnorNextPageToken :: Lens' ListNoteOccurrencesResponse (Maybe Text)
+lnorNextPageToken
+  = lens _lnorNextPageToken
+      (\ s a -> s{_lnorNextPageToken = a})
+
+instance FromJSON ListNoteOccurrencesResponse where
+        parseJSON
+          = withObject "ListNoteOccurrencesResponse"
+              (\ o ->
+                 ListNoteOccurrencesResponse' <$>
+                   (o .:? "occurrences" .!= mempty) <*>
+                     (o .:? "nextPageToken"))
+
+instance ToJSON ListNoteOccurrencesResponse where
+        toJSON ListNoteOccurrencesResponse'{..}
+          = object
+              (catMaybes
+                 [("occurrences" .=) <$> _lnorOccurrences,
+                  ("nextPageToken" .=) <$> _lnorNextPageToken])
+
+-- | A type of analysis that can be done for a resource.
+--
+-- /See:/ 'note' smart constructor.
+data Note = Note'
+    { _nVulnerability        :: !(Maybe Vulnerability)
+    , _nLongDescription      :: !(Maybe Text)
+    , _nAttestationAuthority :: !(Maybe Authority)
+    , _nDiscovery            :: !(Maybe Discovery)
+    , _nKind                 :: !(Maybe NoteKind)
+    , _nRelatedNoteNames     :: !(Maybe [Text])
+    , _nBuild                :: !(Maybe Build)
+    , _nDeployable           :: !(Maybe Deployable)
+    , _nRelatedURL           :: !(Maybe [RelatedURL])
+    , _nUpdateTime           :: !(Maybe DateTime')
+    , _nShortDescription     :: !(Maybe Text)
+    , _nName                 :: !(Maybe Text)
+    , _nBaseImage            :: !(Maybe Basis)
+    , _nPackage              :: !(Maybe Package)
+    , _nExpirationTime       :: !(Maybe DateTime')
+    , _nCreateTime           :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Note' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nVulnerability'
+--
+-- * 'nLongDescription'
+--
+-- * 'nAttestationAuthority'
+--
+-- * 'nDiscovery'
+--
+-- * 'nKind'
+--
+-- * 'nRelatedNoteNames'
+--
+-- * 'nBuild'
+--
+-- * 'nDeployable'
+--
+-- * 'nRelatedURL'
+--
+-- * 'nUpdateTime'
+--
+-- * 'nShortDescription'
+--
+-- * 'nName'
+--
+-- * 'nBaseImage'
+--
+-- * 'nPackage'
+--
+-- * 'nExpirationTime'
+--
+-- * 'nCreateTime'
+note
+    :: Note
+note =
+    Note'
+    { _nVulnerability = Nothing
+    , _nLongDescription = Nothing
+    , _nAttestationAuthority = Nothing
+    , _nDiscovery = Nothing
+    , _nKind = Nothing
+    , _nRelatedNoteNames = Nothing
+    , _nBuild = Nothing
+    , _nDeployable = Nothing
+    , _nRelatedURL = Nothing
+    , _nUpdateTime = Nothing
+    , _nShortDescription = Nothing
+    , _nName = Nothing
+    , _nBaseImage = Nothing
+    , _nPackage = Nothing
+    , _nExpirationTime = Nothing
+    , _nCreateTime = Nothing
+    }
+
+-- | A note describing a package vulnerability.
+nVulnerability :: Lens' Note (Maybe Vulnerability)
+nVulnerability
+  = lens _nVulnerability
+      (\ s a -> s{_nVulnerability = a})
+
+-- | A detailed description of this note.
+nLongDescription :: Lens' Note (Maybe Text)
+nLongDescription
+  = lens _nLongDescription
+      (\ s a -> s{_nLongDescription = a})
+
+-- | A note describing an attestation role.
+nAttestationAuthority :: Lens' Note (Maybe Authority)
+nAttestationAuthority
+  = lens _nAttestationAuthority
+      (\ s a -> s{_nAttestationAuthority = a})
+
+-- | A note describing the initial analysis of a resource.
+nDiscovery :: Lens' Note (Maybe Discovery)
+nDiscovery
+  = lens _nDiscovery (\ s a -> s{_nDiscovery = a})
+
+-- | Output only. The type of analysis. This field can be used as a filter in
+-- list requests.
+nKind :: Lens' Note (Maybe NoteKind)
+nKind = lens _nKind (\ s a -> s{_nKind = a})
+
+-- | Other notes related to this note.
+nRelatedNoteNames :: Lens' Note [Text]
+nRelatedNoteNames
+  = lens _nRelatedNoteNames
+      (\ s a -> s{_nRelatedNoteNames = a})
+      . _Default
+      . _Coerce
+
+-- | A note describing build provenance for a verifiable build.
+nBuild :: Lens' Note (Maybe Build)
+nBuild = lens _nBuild (\ s a -> s{_nBuild = a})
+
+-- | A note describing something that can be deployed.
+nDeployable :: Lens' Note (Maybe Deployable)
+nDeployable
+  = lens _nDeployable (\ s a -> s{_nDeployable = a})
+
+-- | URLs associated with this note.
+nRelatedURL :: Lens' Note [RelatedURL]
+nRelatedURL
+  = lens _nRelatedURL (\ s a -> s{_nRelatedURL = a}) .
+      _Default
+      . _Coerce
+
+-- | Output only. The time this note was last updated. This field can be used
+-- as a filter in list requests.
+nUpdateTime :: Lens' Note (Maybe UTCTime)
+nUpdateTime
+  = lens _nUpdateTime (\ s a -> s{_nUpdateTime = a}) .
+      mapping _DateTime
+
+-- | A one sentence description of this note.
+nShortDescription :: Lens' Note (Maybe Text)
+nShortDescription
+  = lens _nShortDescription
+      (\ s a -> s{_nShortDescription = a})
+
+-- | Output only. The name of the note in the form of
+-- \`projects\/[PROVIDER_ID]\/notes\/[NOTE_ID]\`.
+nName :: Lens' Note (Maybe Text)
+nName = lens _nName (\ s a -> s{_nName = a})
+
+-- | A note describing a base image.
+nBaseImage :: Lens' Note (Maybe Basis)
+nBaseImage
+  = lens _nBaseImage (\ s a -> s{_nBaseImage = a})
+
+-- | A note describing a package hosted by various package managers.
+nPackage :: Lens' Note (Maybe Package)
+nPackage = lens _nPackage (\ s a -> s{_nPackage = a})
+
+-- | Time of expiration for this note. Empty if note does not expire.
+nExpirationTime :: Lens' Note (Maybe UTCTime)
+nExpirationTime
+  = lens _nExpirationTime
+      (\ s a -> s{_nExpirationTime = a})
+      . mapping _DateTime
+
+-- | Output only. The time this note was created. This field can be used as a
+-- filter in list requests.
+nCreateTime :: Lens' Note (Maybe UTCTime)
+nCreateTime
+  = lens _nCreateTime (\ s a -> s{_nCreateTime = a}) .
+      mapping _DateTime
+
+instance FromJSON Note where
+        parseJSON
+          = withObject "Note"
+              (\ o ->
+                 Note' <$>
+                   (o .:? "vulnerability") <*> (o .:? "longDescription")
+                     <*> (o .:? "attestationAuthority")
+                     <*> (o .:? "discovery")
+                     <*> (o .:? "kind")
+                     <*> (o .:? "relatedNoteNames" .!= mempty)
+                     <*> (o .:? "build")
+                     <*> (o .:? "deployable")
+                     <*> (o .:? "relatedUrl" .!= mempty)
+                     <*> (o .:? "updateTime")
+                     <*> (o .:? "shortDescription")
+                     <*> (o .:? "name")
+                     <*> (o .:? "baseImage")
+                     <*> (o .:? "package")
+                     <*> (o .:? "expirationTime")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON Note where
+        toJSON Note'{..}
+          = object
+              (catMaybes
+                 [("vulnerability" .=) <$> _nVulnerability,
+                  ("longDescription" .=) <$> _nLongDescription,
+                  ("attestationAuthority" .=) <$>
+                    _nAttestationAuthority,
+                  ("discovery" .=) <$> _nDiscovery,
+                  ("kind" .=) <$> _nKind,
+                  ("relatedNoteNames" .=) <$> _nRelatedNoteNames,
+                  ("build" .=) <$> _nBuild,
+                  ("deployable" .=) <$> _nDeployable,
+                  ("relatedUrl" .=) <$> _nRelatedURL,
+                  ("updateTime" .=) <$> _nUpdateTime,
+                  ("shortDescription" .=) <$> _nShortDescription,
+                  ("name" .=) <$> _nName,
+                  ("baseImage" .=) <$> _nBaseImage,
+                  ("package" .=) <$> _nPackage,
+                  ("expirationTime" .=) <$> _nExpirationTime,
+                  ("createTime" .=) <$> _nCreateTime])
+
+-- | Response for creating notes in batch.
+--
+-- /See:/ 'batchCreateNotesResponse' smart constructor.
+newtype BatchCreateNotesResponse = BatchCreateNotesResponse'
+    { _bNotes :: Maybe [Note]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BatchCreateNotesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bNotes'
+batchCreateNotesResponse
+    :: BatchCreateNotesResponse
+batchCreateNotesResponse =
+    BatchCreateNotesResponse'
+    { _bNotes = Nothing
+    }
+
+-- | The notes that were created.
+bNotes :: Lens' BatchCreateNotesResponse [Note]
+bNotes
+  = lens _bNotes (\ s a -> s{_bNotes = a}) . _Default .
+      _Coerce
+
+instance FromJSON BatchCreateNotesResponse where
+        parseJSON
+          = withObject "BatchCreateNotesResponse"
+              (\ o ->
+                 BatchCreateNotesResponse' <$>
+                   (o .:? "notes" .!= mempty))
+
+instance ToJSON BatchCreateNotesResponse where
+        toJSON BatchCreateNotesResponse'{..}
+          = object (catMaybes [("notes" .=) <$> _bNotes])
+
+-- | Selects a repo using a Google Cloud Platform project ID (e.g.,
+-- winged-cargo-31) and a repo name within that project.
+--
+-- /See:/ 'projectRepoId' smart constructor.
+data ProjectRepoId = ProjectRepoId'
+    { _priRepoName  :: !(Maybe Text)
+    , _priProjectId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectRepoId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'priRepoName'
+--
+-- * 'priProjectId'
+projectRepoId
+    :: ProjectRepoId
+projectRepoId =
+    ProjectRepoId'
+    { _priRepoName = Nothing
+    , _priProjectId = Nothing
+    }
+
+-- | The name of the repo. Leave empty for the default repo.
+priRepoName :: Lens' ProjectRepoId (Maybe Text)
+priRepoName
+  = lens _priRepoName (\ s a -> s{_priRepoName = a})
+
+-- | The ID of the project.
+priProjectId :: Lens' ProjectRepoId (Maybe Text)
+priProjectId
+  = lens _priProjectId (\ s a -> s{_priProjectId = a})
+
+instance FromJSON ProjectRepoId where
+        parseJSON
+          = withObject "ProjectRepoId"
+              (\ o ->
+                 ProjectRepoId' <$>
+                   (o .:? "repoName") <*> (o .:? "projectId"))
+
+instance ToJSON ProjectRepoId where
+        toJSON ProjectRepoId'{..}
+          = object
+              (catMaybes
+                 [("repoName" .=) <$> _priRepoName,
+                  ("projectId" .=) <$> _priProjectId])
+
+-- | A set of properties that uniquely identify a given Docker image.
+--
+-- /See:/ 'fingerprint' smart constructor.
+data Fingerprint = Fingerprint'
+    { _fV2Name :: !(Maybe Text)
+    , _fV2Blob :: !(Maybe [Text])
+    , _fV1Name :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Fingerprint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fV2Name'
+--
+-- * 'fV2Blob'
+--
+-- * 'fV1Name'
+fingerprint
+    :: Fingerprint
+fingerprint =
+    Fingerprint'
+    { _fV2Name = Nothing
+    , _fV2Blob = Nothing
+    , _fV1Name = Nothing
+    }
+
+-- | 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.
+fV2Name :: Lens' Fingerprint (Maybe Text)
+fV2Name = lens _fV2Name (\ s a -> s{_fV2Name = a})
+
+-- | Required. The ordered list of v2 blobs that represent a given image.
+fV2Blob :: Lens' Fingerprint [Text]
+fV2Blob
+  = lens _fV2Blob (\ s a -> s{_fV2Blob = a}) . _Default
+      . _Coerce
+
+-- | Required. The layer ID of the final layer in the Docker image\'s v1
+-- representation.
+fV1Name :: Lens' Fingerprint (Maybe Text)
+fV1Name = lens _fV1Name (\ s a -> s{_fV1Name = a})
+
+instance FromJSON Fingerprint where
+        parseJSON
+          = withObject "Fingerprint"
+              (\ o ->
+                 Fingerprint' <$>
+                   (o .:? "v2Name") <*> (o .:? "v2Blob" .!= mempty) <*>
+                     (o .:? "v1Name"))
+
+instance ToJSON Fingerprint where
+        toJSON Fingerprint'{..}
+          = object
+              (catMaybes
+                 [("v2Name" .=) <$> _fV2Name,
+                  ("v2Blob" .=) <$> _fV2Blob,
+                  ("v1Name" .=) <$> _fV1Name])
+
+-- | This submessage provides human-readable hints about the purpose of the
+-- authority. Because the name of a note acts as its resource reference, it
+-- is important to disambiguate the canonical name of the Note (which might
+-- be a UUID for security purposes) from \"readable\" names more suitable
+-- for debug output. Note that these hints should not be used to look up
+-- authorities in security sensitive contexts, such as when looking up
+-- attestations to verify.
+--
+-- /See:/ 'hint' smart constructor.
+newtype Hint = Hint'
+    { _hHumanReadableName :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Hint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hHumanReadableName'
+hint
+    :: Hint
+hint =
+    Hint'
+    { _hHumanReadableName = Nothing
+    }
+
+-- | Required. The human readable name of this attestation authority, for
+-- example \"qa\".
+hHumanReadableName :: Lens' Hint (Maybe Text)
+hHumanReadableName
+  = lens _hHumanReadableName
+      (\ s a -> s{_hHumanReadableName = a})
+
+instance FromJSON Hint where
+        parseJSON
+          = withObject "Hint"
+              (\ o -> Hint' <$> (o .:? "humanReadableName"))
+
+instance ToJSON Hint where
+        toJSON Hint'{..}
+          = object
+              (catMaybes
+                 [("humanReadableName" .=) <$> _hHumanReadableName])
+
+-- | This message wraps a location affected by a vulnerability and its
+-- associated fix (if one is available).
+--
+-- /See:/ 'packageIssue' smart constructor.
+data PackageIssue = PackageIssue'
+    { _piAffectedLocation :: !(Maybe VulnerabilityLocation)
+    , _piFixedLocation    :: !(Maybe VulnerabilityLocation)
+    , _piSeverityName     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PackageIssue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piAffectedLocation'
+--
+-- * 'piFixedLocation'
+--
+-- * 'piSeverityName'
+packageIssue
+    :: PackageIssue
+packageIssue =
+    PackageIssue'
+    { _piAffectedLocation = Nothing
+    , _piFixedLocation = Nothing
+    , _piSeverityName = Nothing
+    }
+
+-- | Required. The location of the vulnerability.
+piAffectedLocation :: Lens' PackageIssue (Maybe VulnerabilityLocation)
+piAffectedLocation
+  = lens _piAffectedLocation
+      (\ s a -> s{_piAffectedLocation = a})
+
+-- | The location of the available fix for vulnerability.
+piFixedLocation :: Lens' PackageIssue (Maybe VulnerabilityLocation)
+piFixedLocation
+  = lens _piFixedLocation
+      (\ s a -> s{_piFixedLocation = a})
+
+-- | The severity (e.g., distro assigned severity) for this vulnerability.
+piSeverityName :: Lens' PackageIssue (Maybe Text)
+piSeverityName
+  = lens _piSeverityName
+      (\ s a -> s{_piSeverityName = a})
+
+instance FromJSON PackageIssue where
+        parseJSON
+          = withObject "PackageIssue"
+              (\ o ->
+                 PackageIssue' <$>
+                   (o .:? "affectedLocation") <*>
+                     (o .:? "fixedLocation")
+                     <*> (o .:? "severityName"))
+
+instance ToJSON PackageIssue where
+        toJSON PackageIssue'{..}
+          = object
+              (catMaybes
+                 [("affectedLocation" .=) <$> _piAffectedLocation,
+                  ("fixedLocation" .=) <$> _piFixedLocation,
+                  ("severityName" .=) <$> _piSeverityName])
+
+--
+-- /See:/ 'statusDetailsItem' smart constructor.
+newtype StatusDetailsItem = StatusDetailsItem'
+    { _sdiAddtional :: HashMap Text JSONValue
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdiAddtional'
+statusDetailsItem
+    :: HashMap Text JSONValue -- ^ 'sdiAddtional'
+    -> StatusDetailsItem
+statusDetailsItem pSdiAddtional_ =
+    StatusDetailsItem'
+    { _sdiAddtional = _Coerce # pSdiAddtional_
+    }
+
+-- | Properties of the object. Contains field \'type with type URL.
+sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)
+sdiAddtional
+  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})
+      . _Coerce
+
+instance FromJSON StatusDetailsItem where
+        parseJSON
+          = withObject "StatusDetailsItem"
+              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))
+
+instance ToJSON StatusDetailsItem where
+        toJSON = toJSON . _sdiAddtional
+
+-- | Note holding the version of the provider\'s builder and the signature of
+-- the provenance message in the build details occurrence.
+--
+-- /See:/ 'build' smart constructor.
+data Build = Build'
+    { _bSignature      :: !(Maybe BuildSignature)
+    , _bBuilderVersion :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Build' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bSignature'
+--
+-- * 'bBuilderVersion'
+build
+    :: Build
+build =
+    Build'
+    { _bSignature = Nothing
+    , _bBuilderVersion = Nothing
+    }
+
+-- | Signature of the build in occurrences pointing to this build note
+-- containing build details.
+bSignature :: Lens' Build (Maybe BuildSignature)
+bSignature
+  = lens _bSignature (\ s a -> s{_bSignature = a})
+
+-- | Required. Immutable. Version of the builder which produced this build.
+bBuilderVersion :: Lens' Build (Maybe Text)
+bBuilderVersion
+  = lens _bBuilderVersion
+      (\ s a -> s{_bBuilderVersion = a})
+
+instance FromJSON Build where
+        parseJSON
+          = withObject "Build"
+              (\ o ->
+                 Build' <$>
+                   (o .:? "signature") <*> (o .:? "builderVersion"))
+
+instance ToJSON Build where
+        toJSON Build'{..}
+          = object
+              (catMaybes
+                 [("signature" .=) <$> _bSignature,
+                  ("builderVersion" .=) <$> _bBuilderVersion])
+
+-- | Occurrence that represents a single \"attestation\". The authenticity of
+-- an attestation can be verified using the attached signature. If the
+-- verifier trusts the public key of the signer, then verifying the
+-- signature is sufficient to establish trust. In this circumstance, the
+-- authority to which this attestation is attached is primarily useful for
+-- look-up (how to find this attestation if you already know the authority
+-- and artifact to be verified) and intent (which authority was this
+-- attestation intended to sign for).
+--
+-- /See:/ 'attestation' smart constructor.
+newtype Attestation = Attestation'
+    { _aPgpSignedAttestation :: Maybe PgpSignedAttestation
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Attestation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aPgpSignedAttestation'
+attestation
+    :: Attestation
+attestation =
+    Attestation'
+    { _aPgpSignedAttestation = Nothing
+    }
+
+-- | A PGP signed attestation.
+aPgpSignedAttestation :: Lens' Attestation (Maybe PgpSignedAttestation)
+aPgpSignedAttestation
+  = lens _aPgpSignedAttestation
+      (\ s a -> s{_aPgpSignedAttestation = a})
+
+instance FromJSON Attestation where
+        parseJSON
+          = withObject "Attestation"
+              (\ o ->
+                 Attestation' <$> (o .:? "pgpSignedAttestation"))
+
+instance ToJSON Attestation where
+        toJSON Attestation'{..}
+          = object
+              (catMaybes
+                 [("pgpSignedAttestation" .=) <$>
+                    _aPgpSignedAttestation])
+
+-- | Artifact describes a build product.
+--
+-- /See:/ 'artifact' smart constructor.
+data Artifact = Artifact'
+    { _aChecksum :: !(Maybe Text)
+    , _aNames    :: !(Maybe [Text])
+    , _aId       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Artifact' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aChecksum'
+--
+-- * 'aNames'
+--
+-- * 'aId'
+artifact
+    :: Artifact
+artifact =
+    Artifact'
+    { _aChecksum = Nothing
+    , _aNames = Nothing
+    , _aId = Nothing
+    }
+
+-- | Hash or checksum value of a binary, or Docker Registry 2.0 digest of a
+-- container.
+aChecksum :: Lens' Artifact (Maybe Text)
+aChecksum
+  = lens _aChecksum (\ s a -> s{_aChecksum = a})
+
+-- | 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.
+aNames :: Lens' Artifact [Text]
+aNames
+  = lens _aNames (\ s a -> s{_aNames = a}) . _Default .
+      _Coerce
+
+-- | Artifact ID, if any; for container images, this will be a URL by digest
+-- like \`gcr.io\/projectID\/imagename\'sha256:123456\`.
+aId :: Lens' Artifact (Maybe Text)
+aId = lens _aId (\ s a -> s{_aId = a})
+
+instance FromJSON Artifact where
+        parseJSON
+          = withObject "Artifact"
+              (\ o ->
+                 Artifact' <$>
+                   (o .:? "checksum") <*> (o .:? "names" .!= mempty) <*>
+                     (o .:? "id"))
+
+instance ToJSON Artifact where
+        toJSON Artifact'{..}
+          = object
+              (catMaybes
+                 [("checksum" .=) <$> _aChecksum,
+                  ("names" .=) <$> _aNames, ("id" .=) <$> _aId])
+
+-- | Request message for \`SetIamPolicy\` method.
+--
+-- /See:/ 'setIAMPolicyRequest' smart constructor.
+data SetIAMPolicyRequest = SetIAMPolicyRequest'
+    { _siprUpdateMask :: !(Maybe GFieldMask)
+    , _siprPolicy     :: !(Maybe Policy)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siprUpdateMask'
+--
+-- * 'siprPolicy'
+setIAMPolicyRequest
+    :: SetIAMPolicyRequest
+setIAMPolicyRequest =
+    SetIAMPolicyRequest'
+    { _siprUpdateMask = Nothing
+    , _siprPolicy = Nothing
+    }
+
+-- | 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.
+siprUpdateMask :: Lens' SetIAMPolicyRequest (Maybe GFieldMask)
+siprUpdateMask
+  = lens _siprUpdateMask
+      (\ s a -> s{_siprUpdateMask = a})
+
+-- | 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.
+siprPolicy :: Lens' SetIAMPolicyRequest (Maybe Policy)
+siprPolicy
+  = lens _siprPolicy (\ s a -> s{_siprPolicy = a})
+
+instance FromJSON SetIAMPolicyRequest where
+        parseJSON
+          = withObject "SetIAMPolicyRequest"
+              (\ o ->
+                 SetIAMPolicyRequest' <$>
+                   (o .:? "updateMask") <*> (o .:? "policy"))
+
+instance ToJSON SetIAMPolicyRequest where
+        toJSON SetIAMPolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("updateMask" .=) <$> _siprUpdateMask,
+                  ("policy" .=) <$> _siprPolicy])
+
+-- | Special options applied to this build. This is a catch-all field where
+-- build providers can enter any desired additional details.
+--
+-- /See:/ 'buildProvenanceBuildOptions' smart constructor.
+newtype BuildProvenanceBuildOptions = BuildProvenanceBuildOptions'
+    { _bpboAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BuildProvenanceBuildOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bpboAddtional'
+buildProvenanceBuildOptions
+    :: HashMap Text Text -- ^ 'bpboAddtional'
+    -> BuildProvenanceBuildOptions
+buildProvenanceBuildOptions pBpboAddtional_ =
+    BuildProvenanceBuildOptions'
+    { _bpboAddtional = _Coerce # pBpboAddtional_
+    }
+
+bpboAddtional :: Lens' BuildProvenanceBuildOptions (HashMap Text Text)
+bpboAddtional
+  = lens _bpboAddtional
+      (\ s a -> s{_bpboAddtional = a})
+      . _Coerce
+
+instance FromJSON BuildProvenanceBuildOptions where
+        parseJSON
+          = withObject "BuildProvenanceBuildOptions"
+              (\ o ->
+                 BuildProvenanceBuildOptions' <$> (parseJSONObject o))
+
+instance ToJSON BuildProvenanceBuildOptions where
+        toJSON = toJSON . _bpboAddtional
+
+-- | An artifact that can be deployed in some runtime.
+--
+-- /See:/ 'deployable' smart constructor.
+newtype Deployable = Deployable'
+    { _dResourceURI :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Deployable' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dResourceURI'
+deployable
+    :: Deployable
+deployable =
+    Deployable'
+    { _dResourceURI = Nothing
+    }
+
+-- | Required. Resource URI for the artifact being deployed.
+dResourceURI :: Lens' Deployable [Text]
+dResourceURI
+  = lens _dResourceURI (\ s a -> s{_dResourceURI = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Deployable where
+        parseJSON
+          = withObject "Deployable"
+              (\ o ->
+                 Deployable' <$> (o .:? "resourceUri" .!= mempty))
+
+instance ToJSON Deployable where
+        toJSON Deployable'{..}
+          = object
+              (catMaybes [("resourceUri" .=) <$> _dResourceURI])
+
+-- | Details of a discovery occurrence.
+--
+-- /See:/ 'grafeasV1beta1DiscoveryDetails' smart constructor.
+newtype GrafeasV1beta1DiscoveryDetails = GrafeasV1beta1DiscoveryDetails'
+    { _gvddDiscovered :: Maybe Discovered
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GrafeasV1beta1DiscoveryDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gvddDiscovered'
+grafeasV1beta1DiscoveryDetails
+    :: GrafeasV1beta1DiscoveryDetails
+grafeasV1beta1DiscoveryDetails =
+    GrafeasV1beta1DiscoveryDetails'
+    { _gvddDiscovered = Nothing
+    }
+
+-- | Required. Analysis status for the discovered resource.
+gvddDiscovered :: Lens' GrafeasV1beta1DiscoveryDetails (Maybe Discovered)
+gvddDiscovered
+  = lens _gvddDiscovered
+      (\ s a -> s{_gvddDiscovered = a})
+
+instance FromJSON GrafeasV1beta1DiscoveryDetails
+         where
+        parseJSON
+          = withObject "GrafeasV1beta1DiscoveryDetails"
+              (\ o ->
+                 GrafeasV1beta1DiscoveryDetails' <$>
+                   (o .:? "discovered"))
+
+instance ToJSON GrafeasV1beta1DiscoveryDetails where
+        toJSON GrafeasV1beta1DiscoveryDetails'{..}
+          = object
+              (catMaybes [("discovered" .=) <$> _gvddDiscovered])
+
+-- | The location of the vulnerability.
+--
+-- /See:/ 'vulnerabilityLocation' smart constructor.
+data VulnerabilityLocation = VulnerabilityLocation'
+    { _vlVersion :: !(Maybe Version)
+    , _vlPackage :: !(Maybe Text)
+    , _vlCpeURI  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VulnerabilityLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vlVersion'
+--
+-- * 'vlPackage'
+--
+-- * 'vlCpeURI'
+vulnerabilityLocation
+    :: VulnerabilityLocation
+vulnerabilityLocation =
+    VulnerabilityLocation'
+    { _vlVersion = Nothing
+    , _vlPackage = Nothing
+    , _vlCpeURI = Nothing
+    }
+
+-- | Required. The version of the package being described.
+vlVersion :: Lens' VulnerabilityLocation (Maybe Version)
+vlVersion
+  = lens _vlVersion (\ s a -> s{_vlVersion = a})
+
+-- | Required. The package being described.
+vlPackage :: Lens' VulnerabilityLocation (Maybe Text)
+vlPackage
+  = lens _vlPackage (\ s a -> s{_vlPackage = a})
+
+-- | Required. The CPE URI in [cpe
+-- format](https:\/\/cpe.mitre.org\/specification\/) format. Examples
+-- include distro or storage location for vulnerable jar.
+vlCpeURI :: Lens' VulnerabilityLocation (Maybe Text)
+vlCpeURI = lens _vlCpeURI (\ s a -> s{_vlCpeURI = a})
+
+instance FromJSON VulnerabilityLocation where
+        parseJSON
+          = withObject "VulnerabilityLocation"
+              (\ o ->
+                 VulnerabilityLocation' <$>
+                   (o .:? "version") <*> (o .:? "package") <*>
+                     (o .:? "cpeUri"))
+
+instance ToJSON VulnerabilityLocation where
+        toJSON VulnerabilityLocation'{..}
+          = object
+              (catMaybes
+                 [("version" .=) <$> _vlVersion,
+                  ("package" .=) <$> _vlPackage,
+                  ("cpeUri" .=) <$> _vlCpeURI])
+
+-- | Per resource and severity counts of fixable and total vulnerabilites.
+--
+-- /See:/ 'fixableTotalByDigest' smart constructor.
+data FixableTotalByDigest = FixableTotalByDigest'
+    { _ftbdSeverity     :: !(Maybe FixableTotalByDigestSeverity)
+    , _ftbdFixableCount :: !(Maybe (Textual Int64))
+    , _ftbdResource     :: !(Maybe Resource)
+    , _ftbdTotalCount   :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FixableTotalByDigest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ftbdSeverity'
+--
+-- * 'ftbdFixableCount'
+--
+-- * 'ftbdResource'
+--
+-- * 'ftbdTotalCount'
+fixableTotalByDigest
+    :: FixableTotalByDigest
+fixableTotalByDigest =
+    FixableTotalByDigest'
+    { _ftbdSeverity = Nothing
+    , _ftbdFixableCount = Nothing
+    , _ftbdResource = Nothing
+    , _ftbdTotalCount = Nothing
+    }
+
+-- | The severity for this count. SEVERITY_UNSPECIFIED indicates total across
+-- all severities.
+ftbdSeverity :: Lens' FixableTotalByDigest (Maybe FixableTotalByDigestSeverity)
+ftbdSeverity
+  = lens _ftbdSeverity (\ s a -> s{_ftbdSeverity = a})
+
+-- | The number of fixable vulnerabilities associated with this resource.
+ftbdFixableCount :: Lens' FixableTotalByDigest (Maybe Int64)
+ftbdFixableCount
+  = lens _ftbdFixableCount
+      (\ s a -> s{_ftbdFixableCount = a})
+      . mapping _Coerce
+
+-- | The affected resource.
+ftbdResource :: Lens' FixableTotalByDigest (Maybe Resource)
+ftbdResource
+  = lens _ftbdResource (\ s a -> s{_ftbdResource = a})
+
+-- | The total number of vulnerabilities associated with this resource.
+ftbdTotalCount :: Lens' FixableTotalByDigest (Maybe Int64)
+ftbdTotalCount
+  = lens _ftbdTotalCount
+      (\ s a -> s{_ftbdTotalCount = a})
+      . mapping _Coerce
+
+instance FromJSON FixableTotalByDigest where
+        parseJSON
+          = withObject "FixableTotalByDigest"
+              (\ o ->
+                 FixableTotalByDigest' <$>
+                   (o .:? "severity") <*> (o .:? "fixableCount") <*>
+                     (o .:? "resource")
+                     <*> (o .:? "totalCount"))
+
+instance ToJSON FixableTotalByDigest where
+        toJSON FixableTotalByDigest'{..}
+          = object
+              (catMaybes
+                 [("severity" .=) <$> _ftbdSeverity,
+                  ("fixableCount" .=) <$> _ftbdFixableCount,
+                  ("resource" .=) <$> _ftbdResource,
+                  ("totalCount" .=) <$> _ftbdTotalCount])
+
+-- | Metadata for any related URL information.
+--
+-- /See:/ 'relatedURL' smart constructor.
+data RelatedURL = RelatedURL'
+    { _ruURL   :: !(Maybe Text)
+    , _ruLabel :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RelatedURL' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ruURL'
+--
+-- * 'ruLabel'
+relatedURL
+    :: RelatedURL
+relatedURL =
+    RelatedURL'
+    { _ruURL = Nothing
+    , _ruLabel = Nothing
+    }
+
+-- | Specific URL associated with the resource.
+ruURL :: Lens' RelatedURL (Maybe Text)
+ruURL = lens _ruURL (\ s a -> s{_ruURL = a})
+
+-- | Label to describe usage of the URL.
+ruLabel :: Lens' RelatedURL (Maybe Text)
+ruLabel = lens _ruLabel (\ s a -> s{_ruLabel = a})
+
+instance FromJSON RelatedURL where
+        parseJSON
+          = withObject "RelatedURL"
+              (\ o ->
+                 RelatedURL' <$> (o .:? "url") <*> (o .:? "label"))
+
+instance ToJSON RelatedURL where
+        toJSON RelatedURL'{..}
+          = object
+              (catMaybes
+                 [("url" .=) <$> _ruURL, ("label" .=) <$> _ruLabel])
+
+-- | Details of an image occurrence.
+--
+-- /See:/ 'grafeasV1beta1ImageDetails' smart constructor.
+newtype GrafeasV1beta1ImageDetails = GrafeasV1beta1ImageDetails'
+    { _gvidDerivedImage :: Maybe Derived
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GrafeasV1beta1ImageDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gvidDerivedImage'
+grafeasV1beta1ImageDetails
+    :: GrafeasV1beta1ImageDetails
+grafeasV1beta1ImageDetails =
+    GrafeasV1beta1ImageDetails'
+    { _gvidDerivedImage = Nothing
+    }
+
+-- | Required. Immutable. The child image derived from the base image.
+gvidDerivedImage :: Lens' GrafeasV1beta1ImageDetails (Maybe Derived)
+gvidDerivedImage
+  = lens _gvidDerivedImage
+      (\ s a -> s{_gvidDerivedImage = a})
+
+instance FromJSON GrafeasV1beta1ImageDetails where
+        parseJSON
+          = withObject "GrafeasV1beta1ImageDetails"
+              (\ o ->
+                 GrafeasV1beta1ImageDetails' <$>
+                   (o .:? "derivedImage"))
+
+instance ToJSON GrafeasV1beta1ImageDetails where
+        toJSON GrafeasV1beta1ImageDetails'{..}
+          = object
+              (catMaybes
+                 [("derivedImage" .=) <$> _gvidDerivedImage])
+
+-- | Response for creating occurrences in batch.
+--
+-- /See:/ 'batchCreateOccurrencesResponse' smart constructor.
+newtype BatchCreateOccurrencesResponse = BatchCreateOccurrencesResponse'
+    { _bOccurrences :: Maybe [Occurrence]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BatchCreateOccurrencesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bOccurrences'
+batchCreateOccurrencesResponse
+    :: BatchCreateOccurrencesResponse
+batchCreateOccurrencesResponse =
+    BatchCreateOccurrencesResponse'
+    { _bOccurrences = Nothing
+    }
+
+-- | The occurrences that were created.
+bOccurrences :: Lens' BatchCreateOccurrencesResponse [Occurrence]
+bOccurrences
+  = lens _bOccurrences (\ s a -> s{_bOccurrences = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BatchCreateOccurrencesResponse
+         where
+        parseJSON
+          = withObject "BatchCreateOccurrencesResponse"
+              (\ o ->
+                 BatchCreateOccurrencesResponse' <$>
+                   (o .:? "occurrences" .!= mempty))
+
+instance ToJSON BatchCreateOccurrencesResponse where
+        toJSON BatchCreateOccurrencesResponse'{..}
+          = object
+              (catMaybes [("occurrences" .=) <$> _bOccurrences])
+
+-- | Labels with user defined metadata.
+--
+-- /See:/ 'sourceContextLabels' smart constructor.
+newtype SourceContextLabels = SourceContextLabels'
+    { _sclAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SourceContextLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sclAddtional'
+sourceContextLabels
+    :: HashMap Text Text -- ^ 'sclAddtional'
+    -> SourceContextLabels
+sourceContextLabels pSclAddtional_ =
+    SourceContextLabels'
+    { _sclAddtional = _Coerce # pSclAddtional_
+    }
+
+sclAddtional :: Lens' SourceContextLabels (HashMap Text Text)
+sclAddtional
+  = lens _sclAddtional (\ s a -> s{_sclAddtional = a})
+      . _Coerce
+
+instance FromJSON SourceContextLabels where
+        parseJSON
+          = withObject "SourceContextLabels"
+              (\ o -> SourceContextLabels' <$> (parseJSONObject o))
+
+instance ToJSON SourceContextLabels where
+        toJSON = toJSON . _sclAddtional
+
+-- | Response for listing scan configurations.
+--
+-- /See:/ 'listScanConfigsResponse' smart constructor.
+data ListScanConfigsResponse = ListScanConfigsResponse'
+    { _lscrNextPageToken :: !(Maybe Text)
+    , _lscrScanConfigs   :: !(Maybe [ScanConfig])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListScanConfigsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lscrNextPageToken'
+--
+-- * 'lscrScanConfigs'
+listScanConfigsResponse
+    :: ListScanConfigsResponse
+listScanConfigsResponse =
+    ListScanConfigsResponse'
+    { _lscrNextPageToken = Nothing
+    , _lscrScanConfigs = Nothing
+    }
+
+-- | 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.
+lscrNextPageToken :: Lens' ListScanConfigsResponse (Maybe Text)
+lscrNextPageToken
+  = lens _lscrNextPageToken
+      (\ s a -> s{_lscrNextPageToken = a})
+
+-- | The scan configurations requested.
+lscrScanConfigs :: Lens' ListScanConfigsResponse [ScanConfig]
+lscrScanConfigs
+  = lens _lscrScanConfigs
+      (\ s a -> s{_lscrScanConfigs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListScanConfigsResponse where
+        parseJSON
+          = withObject "ListScanConfigsResponse"
+              (\ o ->
+                 ListScanConfigsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "scanConfigs" .!= mempty))
+
+instance ToJSON ListScanConfigsResponse where
+        toJSON ListScanConfigsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lscrNextPageToken,
+                  ("scanConfigs" .=) <$> _lscrScanConfigs])
+
+-- | Version contains structured information about the version of a package.
+--
+-- /See:/ 'version' smart constructor.
+data Version = Version'
+    { _vKind     :: !(Maybe VersionKind)
+    , _vName     :: !(Maybe Text)
+    , _vRevision :: !(Maybe Text)
+    , _vEpoch    :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Version' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vKind'
+--
+-- * 'vName'
+--
+-- * 'vRevision'
+--
+-- * 'vEpoch'
+version
+    :: Version
+version =
+    Version'
+    { _vKind = Nothing
+    , _vName = Nothing
+    , _vRevision = Nothing
+    , _vEpoch = Nothing
+    }
+
+-- | Required. Distinguishes between sentinel MIN\/MAX versions and normal
+-- versions.
+vKind :: Lens' Version (Maybe VersionKind)
+vKind = lens _vKind (\ s a -> s{_vKind = a})
+
+-- | Required only when version kind is NORMAL. The main part of the version
+-- name.
+vName :: Lens' Version (Maybe Text)
+vName = lens _vName (\ s a -> s{_vName = a})
+
+-- | The iteration of the package build from the above version.
+vRevision :: Lens' Version (Maybe Text)
+vRevision
+  = lens _vRevision (\ s a -> s{_vRevision = a})
+
+-- | Used to correct mistakes in the version numbering scheme.
+vEpoch :: Lens' Version (Maybe Int32)
+vEpoch
+  = lens _vEpoch (\ s a -> s{_vEpoch = a}) .
+      mapping _Coerce
+
+instance FromJSON Version where
+        parseJSON
+          = withObject "Version"
+              (\ o ->
+                 Version' <$>
+                   (o .:? "kind") <*> (o .:? "name") <*>
+                     (o .:? "revision")
+                     <*> (o .:? "epoch"))
+
+instance ToJSON Version where
+        toJSON Version'{..}
+          = object
+              (catMaybes
+                 [("kind" .=) <$> _vKind, ("name" .=) <$> _vName,
+                  ("revision" .=) <$> _vRevision,
+                  ("epoch" .=) <$> _vEpoch])
+
+-- | Container message for hashes of byte content of files, used in source
+-- messages to verify integrity of source input to the build.
+--
+-- /See:/ 'fileHashes' smart constructor.
+newtype FileHashes = FileHashes'
+    { _fhFileHash :: Maybe [Hash]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FileHashes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fhFileHash'
+fileHashes
+    :: FileHashes
+fileHashes =
+    FileHashes'
+    { _fhFileHash = Nothing
+    }
+
+-- | Required. Collection of file hashes.
+fhFileHash :: Lens' FileHashes [Hash]
+fhFileHash
+  = lens _fhFileHash (\ s a -> s{_fhFileHash = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON FileHashes where
+        parseJSON
+          = withObject "FileHashes"
+              (\ o ->
+                 FileHashes' <$> (o .:? "fileHash" .!= mempty))
+
+instance ToJSON FileHashes where
+        toJSON FileHashes'{..}
+          = object
+              (catMaybes [("fileHash" .=) <$> _fhFileHash])
+
+-- | An entity that can have metadata. For example, a Docker image.
+--
+-- /See:/ 'resource' smart constructor.
+data Resource = Resource'
+    { _rContentHash :: !(Maybe Hash)
+    , _rURI         :: !(Maybe Text)
+    , _rName        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Resource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rContentHash'
+--
+-- * 'rURI'
+--
+-- * 'rName'
+resource
+    :: Resource
+resource =
+    Resource'
+    { _rContentHash = Nothing
+    , _rURI = Nothing
+    , _rName = Nothing
+    }
+
+-- | The hash of the resource content. For example, the Docker digest.
+rContentHash :: Lens' Resource (Maybe Hash)
+rContentHash
+  = lens _rContentHash (\ s a -> s{_rContentHash = a})
+
+-- | Required. The unique URI of the resource. For example,
+-- \`https:\/\/gcr.io\/project\/image\'sha256:foo\` for a Docker image.
+rURI :: Lens' Resource (Maybe Text)
+rURI = lens _rURI (\ s a -> s{_rURI = a})
+
+-- | The name of the resource. For example, the name of a Docker image -
+-- \"Debian\".
+rName :: Lens' Resource (Maybe Text)
+rName = lens _rName (\ s a -> s{_rName = a})
+
+instance FromJSON Resource where
+        parseJSON
+          = withObject "Resource"
+              (\ o ->
+                 Resource' <$>
+                   (o .:? "contentHash") <*> (o .:? "uri") <*>
+                     (o .:? "name"))
+
+instance ToJSON Resource where
+        toJSON Resource'{..}
+          = object
+              (catMaybes
+                 [("contentHash" .=) <$> _rContentHash,
+                  ("uri" .=) <$> _rURI, ("name" .=) <$> _rName])
+
+-- | Details of a deployment occurrence.
+--
+-- /See:/ 'grafeasV1beta1DeploymentDetails' smart constructor.
+newtype GrafeasV1beta1DeploymentDetails = GrafeasV1beta1DeploymentDetails'
+    { _gvddDeployment :: Maybe Deployment
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GrafeasV1beta1DeploymentDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gvddDeployment'
+grafeasV1beta1DeploymentDetails
+    :: GrafeasV1beta1DeploymentDetails
+grafeasV1beta1DeploymentDetails =
+    GrafeasV1beta1DeploymentDetails'
+    { _gvddDeployment = Nothing
+    }
+
+-- | Required. Deployment history for the resource.
+gvddDeployment :: Lens' GrafeasV1beta1DeploymentDetails (Maybe Deployment)
+gvddDeployment
+  = lens _gvddDeployment
+      (\ s a -> s{_gvddDeployment = a})
+
+instance FromJSON GrafeasV1beta1DeploymentDetails
+         where
+        parseJSON
+          = withObject "GrafeasV1beta1DeploymentDetails"
+              (\ o ->
+                 GrafeasV1beta1DeploymentDetails' <$>
+                   (o .:? "deployment"))
+
+instance ToJSON GrafeasV1beta1DeploymentDetails where
+        toJSON GrafeasV1beta1DeploymentDetails'{..}
+          = object
+              (catMaybes [("deployment" .=) <$> _gvddDeployment])
+
+-- | Metadata for all operations used and required for all operations that
+-- created by Container Analysis Providers
+--
+-- /See:/ 'googleDevtoolsContaineranalysisV1alpha1OperationMetadata' smart constructor.
+data GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata = GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata'
+    { _gdcvomEndTime    :: !(Maybe DateTime')
+    , _gdcvomCreateTime :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdcvomEndTime'
+--
+-- * 'gdcvomCreateTime'
+googleDevtoolsContaineranalysisV1alpha1OperationMetadata
+    :: GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+googleDevtoolsContaineranalysisV1alpha1OperationMetadata =
+    GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata'
+    { _gdcvomEndTime = Nothing
+    , _gdcvomCreateTime = Nothing
+    }
+
+-- | Output only. The time that this operation was marked completed or
+-- failed.
+gdcvomEndTime :: Lens' GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata (Maybe UTCTime)
+gdcvomEndTime
+  = lens _gdcvomEndTime
+      (\ s a -> s{_gdcvomEndTime = a})
+      . mapping _DateTime
+
+-- | Output only. The time this operation was created.
+gdcvomCreateTime :: Lens' GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata (Maybe UTCTime)
+gdcvomCreateTime
+  = lens _gdcvomCreateTime
+      (\ s a -> s{_gdcvomCreateTime = a})
+      . mapping _DateTime
+
+instance FromJSON
+         GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+         where
+        parseJSON
+          = withObject
+              "GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata"
+              (\ o ->
+                 GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata'
+                   <$> (o .:? "endTime") <*> (o .:? "createTime"))
+
+instance ToJSON
+         GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata
+         where
+        toJSON
+          GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata'{..}
+          = object
+              (catMaybes
+                 [("endTime" .=) <$> _gdcvomEndTime,
+                  ("createTime" .=) <$> _gdcvomCreateTime])
+
+-- | Details of an attestation occurrence.
+--
+-- /See:/ 'details' smart constructor.
+newtype Details = Details'
+    { _dAttestation :: Maybe Attestation
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Details' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dAttestation'
+details
+    :: Details
+details =
+    Details'
+    { _dAttestation = Nothing
+    }
+
+-- | Required. Attestation for the resource.
+dAttestation :: Lens' Details (Maybe Attestation)
+dAttestation
+  = lens _dAttestation (\ s a -> s{_dAttestation = a})
+
+instance FromJSON Details where
+        parseJSON
+          = withObject "Details"
+              (\ o -> Details' <$> (o .:? "attestation"))
+
+instance ToJSON Details where
+        toJSON Details'{..}
+          = object
+              (catMaybes [("attestation" .=) <$> _dAttestation])
+
+-- | This represents a particular package that is distributed over various
+-- channels. E.g., glibc (aka libc6) is distributed by many, at various
+-- versions.
+--
+-- /See:/ 'package' smart constructor.
+data Package = Package'
+    { _pDistribution :: !(Maybe [Distribution])
+    , _pName         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Package' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pDistribution'
+--
+-- * 'pName'
+package
+    :: Package
+package =
+    Package'
+    { _pDistribution = Nothing
+    , _pName = Nothing
+    }
+
+-- | The various channels by which a package is distributed.
+pDistribution :: Lens' Package [Distribution]
+pDistribution
+  = lens _pDistribution
+      (\ s a -> s{_pDistribution = a})
+      . _Default
+      . _Coerce
+
+-- | Required. Immutable. The name of the package.
+pName :: Lens' Package (Maybe Text)
+pName = lens _pName (\ s a -> s{_pName = a})
+
+instance FromJSON Package where
+        parseJSON
+          = withObject "Package"
+              (\ o ->
+                 Package' <$>
+                   (o .:? "distribution" .!= mempty) <*> (o .:? "name"))
+
+instance ToJSON Package where
+        toJSON Package'{..}
+          = object
+              (catMaybes
+                 [("distribution" .=) <$> _pDistribution,
+                  ("name" .=) <$> _pName])
+
+-- | Response for listing notes.
+--
+-- /See:/ 'listNotesResponse' smart constructor.
+data ListNotesResponse = ListNotesResponse'
+    { _lnrNextPageToken :: !(Maybe Text)
+    , _lnrNotes         :: !(Maybe [Note])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListNotesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lnrNextPageToken'
+--
+-- * 'lnrNotes'
+listNotesResponse
+    :: ListNotesResponse
+listNotesResponse =
+    ListNotesResponse'
+    { _lnrNextPageToken = Nothing
+    , _lnrNotes = Nothing
+    }
+
+-- | 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.
+lnrNextPageToken :: Lens' ListNotesResponse (Maybe Text)
+lnrNextPageToken
+  = lens _lnrNextPageToken
+      (\ s a -> s{_lnrNextPageToken = a})
+
+-- | The notes requested.
+lnrNotes :: Lens' ListNotesResponse [Note]
+lnrNotes
+  = lens _lnrNotes (\ s a -> s{_lnrNotes = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListNotesResponse where
+        parseJSON
+          = withObject "ListNotesResponse"
+              (\ o ->
+                 ListNotesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "notes" .!= mempty))
+
+instance ToJSON ListNotesResponse where
+        toJSON ListNotesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lnrNextPageToken,
+                  ("notes" .=) <$> _lnrNotes])
+
+-- | Message encapsulating the signature of the verified build.
+--
+-- /See:/ 'buildSignature' smart constructor.
+data BuildSignature = BuildSignature'
+    { _bsSignature :: !(Maybe Bytes)
+    , _bsKeyType   :: !(Maybe BuildSignatureKeyType)
+    , _bsKeyId     :: !(Maybe Text)
+    , _bsPublicKey :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BuildSignature' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsSignature'
+--
+-- * 'bsKeyType'
+--
+-- * 'bsKeyId'
+--
+-- * 'bsPublicKey'
+buildSignature
+    :: BuildSignature
+buildSignature =
+    BuildSignature'
+    { _bsSignature = Nothing
+    , _bsKeyType = Nothing
+    , _bsKeyId = Nothing
+    , _bsPublicKey = Nothing
+    }
+
+-- | Required. Signature of the related \`BuildProvenance\`. In JSON, this is
+-- base-64 encoded.
+bsSignature :: Lens' BuildSignature (Maybe ByteString)
+bsSignature
+  = lens _bsSignature (\ s a -> s{_bsSignature = a}) .
+      mapping _Bytes
+
+-- | The type of the key, either stored in \`public_key\` or referenced in
+-- \`key_id\`.
+bsKeyType :: Lens' BuildSignature (Maybe BuildSignatureKeyType)
+bsKeyType
+  = lens _bsKeyType (\ s a -> s{_bsKeyType = a})
+
+-- | 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).
+bsKeyId :: Lens' BuildSignature (Maybe Text)
+bsKeyId = lens _bsKeyId (\ s a -> s{_bsKeyId = a})
+
+-- | 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\`
+bsPublicKey :: Lens' BuildSignature (Maybe Text)
+bsPublicKey
+  = lens _bsPublicKey (\ s a -> s{_bsPublicKey = a})
+
+instance FromJSON BuildSignature where
+        parseJSON
+          = withObject "BuildSignature"
+              (\ o ->
+                 BuildSignature' <$>
+                   (o .:? "signature") <*> (o .:? "keyType") <*>
+                     (o .:? "keyId")
+                     <*> (o .:? "publicKey"))
+
+instance ToJSON BuildSignature where
+        toJSON BuildSignature'{..}
+          = object
+              (catMaybes
+                 [("signature" .=) <$> _bsSignature,
+                  ("keyType" .=) <$> _bsKeyType,
+                  ("keyId" .=) <$> _bsKeyId,
+                  ("publicKey" .=) <$> _bsPublicKey])
+
+-- | Request message for \`TestIamPermissions\` method.
+--
+-- /See:/ 'testIAMPermissionsRequest' smart constructor.
+newtype TestIAMPermissionsRequest = TestIAMPermissionsRequest'
+    { _tiprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestIAMPermissionsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiprPermissions'
+testIAMPermissionsRequest
+    :: TestIAMPermissionsRequest
+testIAMPermissionsRequest =
+    TestIAMPermissionsRequest'
+    { _tiprPermissions = Nothing
+    }
+
+-- | 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).
+tiprPermissions :: Lens' TestIAMPermissionsRequest [Text]
+tiprPermissions
+  = lens _tiprPermissions
+      (\ s a -> s{_tiprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsRequest where
+        parseJSON
+          = withObject "TestIAMPermissionsRequest"
+              (\ o ->
+                 TestIAMPermissionsRequest' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsRequest where
+        toJSON TestIAMPermissionsRequest'{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _tiprPermissions])
+
+-- | Provides information about the analysis status of a discovered resource.
+--
+-- /See:/ 'discovered' smart constructor.
+data Discovered = Discovered'
+    { _dLastAnalysisTime    :: !(Maybe DateTime')
+    , _dAnalysisStatusError :: !(Maybe Status)
+    , _dAnalysisStatus      :: !(Maybe DiscoveredAnalysisStatus)
+    , _dContinuousAnalysis  :: !(Maybe DiscoveredContinuousAnalysis)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Discovered' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dLastAnalysisTime'
+--
+-- * 'dAnalysisStatusError'
+--
+-- * 'dAnalysisStatus'
+--
+-- * 'dContinuousAnalysis'
+discovered
+    :: Discovered
+discovered =
+    Discovered'
+    { _dLastAnalysisTime = Nothing
+    , _dAnalysisStatusError = Nothing
+    , _dAnalysisStatus = Nothing
+    , _dContinuousAnalysis = Nothing
+    }
+
+-- | The last time continuous analysis was done for this resource.
+-- Deprecated, do not use.
+dLastAnalysisTime :: Lens' Discovered (Maybe UTCTime)
+dLastAnalysisTime
+  = lens _dLastAnalysisTime
+      (\ s a -> s{_dLastAnalysisTime = a})
+      . mapping _DateTime
+
+-- | When an error is encountered this will contain a LocalizedMessage under
+-- details to show to the user. The LocalizedMessage is output only and
+-- populated by the API.
+dAnalysisStatusError :: Lens' Discovered (Maybe Status)
+dAnalysisStatusError
+  = lens _dAnalysisStatusError
+      (\ s a -> s{_dAnalysisStatusError = a})
+
+-- | The status of discovery for the resource.
+dAnalysisStatus :: Lens' Discovered (Maybe DiscoveredAnalysisStatus)
+dAnalysisStatus
+  = lens _dAnalysisStatus
+      (\ s a -> s{_dAnalysisStatus = a})
+
+-- | Whether the resource is continuously analyzed.
+dContinuousAnalysis :: Lens' Discovered (Maybe DiscoveredContinuousAnalysis)
+dContinuousAnalysis
+  = lens _dContinuousAnalysis
+      (\ s a -> s{_dContinuousAnalysis = a})
+
+instance FromJSON Discovered where
+        parseJSON
+          = withObject "Discovered"
+              (\ o ->
+                 Discovered' <$>
+                   (o .:? "lastAnalysisTime") <*>
+                     (o .:? "analysisStatusError")
+                     <*> (o .:? "analysisStatus")
+                     <*> (o .:? "continuousAnalysis"))
+
+instance ToJSON Discovered where
+        toJSON Discovered'{..}
+          = object
+              (catMaybes
+                 [("lastAnalysisTime" .=) <$> _dLastAnalysisTime,
+                  ("analysisStatusError" .=) <$> _dAnalysisStatusError,
+                  ("analysisStatus" .=) <$> _dAnalysisStatus,
+                  ("continuousAnalysis" .=) <$> _dContinuousAnalysis])
+
+-- | Derived describes the derived image portion (Occurrence) of the
+-- DockerImage relationship. This image would be produced from a Dockerfile
+-- with FROM .
+--
+-- /See:/ 'derived' smart constructor.
+data Derived = Derived'
+    { _dBaseResourceURL :: !(Maybe Text)
+    , _dFingerprint     :: !(Maybe Fingerprint)
+    , _dDistance        :: !(Maybe (Textual Int32))
+    , _dLayerInfo       :: !(Maybe [Layer])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Derived' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dBaseResourceURL'
+--
+-- * 'dFingerprint'
+--
+-- * 'dDistance'
+--
+-- * 'dLayerInfo'
+derived
+    :: Derived
+derived =
+    Derived'
+    { _dBaseResourceURL = Nothing
+    , _dFingerprint = Nothing
+    , _dDistance = Nothing
+    , _dLayerInfo = Nothing
+    }
+
+-- | Output only. This contains the base image URL for the derived image
+-- occurrence.
+dBaseResourceURL :: Lens' Derived (Maybe Text)
+dBaseResourceURL
+  = lens _dBaseResourceURL
+      (\ s a -> s{_dBaseResourceURL = a})
+
+-- | Required. The fingerprint of the derived image.
+dFingerprint :: Lens' Derived (Maybe Fingerprint)
+dFingerprint
+  = lens _dFingerprint (\ s a -> s{_dFingerprint = a})
+
+-- | Output only. The number of layers by which this image differs from the
+-- associated image basis.
+dDistance :: Lens' Derived (Maybe Int32)
+dDistance
+  = lens _dDistance (\ s a -> s{_dDistance = a}) .
+      mapping _Coerce
+
+-- | 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.
+dLayerInfo :: Lens' Derived [Layer]
+dLayerInfo
+  = lens _dLayerInfo (\ s a -> s{_dLayerInfo = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Derived where
+        parseJSON
+          = withObject "Derived"
+              (\ o ->
+                 Derived' <$>
+                   (o .:? "baseResourceUrl") <*> (o .:? "fingerprint")
+                     <*> (o .:? "distance")
+                     <*> (o .:? "layerInfo" .!= mempty))
+
+instance ToJSON Derived where
+        toJSON Derived'{..}
+          = object
+              (catMaybes
+                 [("baseResourceUrl" .=) <$> _dBaseResourceURL,
+                  ("fingerprint" .=) <$> _dFingerprint,
+                  ("distance" .=) <$> _dDistance,
+                  ("layerInfo" .=) <$> _dLayerInfo])
+
+-- | Details of a build occurrence.
+--
+-- /See:/ 'grafeasV1beta1BuildDetails' smart constructor.
+data GrafeasV1beta1BuildDetails = GrafeasV1beta1BuildDetails'
+    { _gvbdProvenanceBytes :: !(Maybe Text)
+    , _gvbdProvenance      :: !(Maybe BuildProvenance)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GrafeasV1beta1BuildDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gvbdProvenanceBytes'
+--
+-- * 'gvbdProvenance'
+grafeasV1beta1BuildDetails
+    :: GrafeasV1beta1BuildDetails
+grafeasV1beta1BuildDetails =
+    GrafeasV1beta1BuildDetails'
+    { _gvbdProvenanceBytes = Nothing
+    , _gvbdProvenance = Nothing
+    }
+
+-- | Serialized JSON representation of the provenance, used in generating the
+-- build signature in the corresponding build note. After verifying the
+-- signature, \`provenance_bytes\` can be unmarshalled and compared to the
+-- provenance to confirm that it is unchanged. A base64-encoded string
+-- representation of the provenance bytes is used for the signature in
+-- order to interoperate with openssl which expects this format for
+-- signature verification. The serialized form is captured both to avoid
+-- ambiguity in how the provenance is marshalled to json as well to prevent
+-- incompatibilities with future changes.
+gvbdProvenanceBytes :: Lens' GrafeasV1beta1BuildDetails (Maybe Text)
+gvbdProvenanceBytes
+  = lens _gvbdProvenanceBytes
+      (\ s a -> s{_gvbdProvenanceBytes = a})
+
+-- | Required. The actual provenance for the build.
+gvbdProvenance :: Lens' GrafeasV1beta1BuildDetails (Maybe BuildProvenance)
+gvbdProvenance
+  = lens _gvbdProvenance
+      (\ s a -> s{_gvbdProvenance = a})
+
+instance FromJSON GrafeasV1beta1BuildDetails where
+        parseJSON
+          = withObject "GrafeasV1beta1BuildDetails"
+              (\ o ->
+                 GrafeasV1beta1BuildDetails' <$>
+                   (o .:? "provenanceBytes") <*> (o .:? "provenance"))
+
+instance ToJSON GrafeasV1beta1BuildDetails where
+        toJSON GrafeasV1beta1BuildDetails'{..}
+          = object
+              (catMaybes
+                 [("provenanceBytes" .=) <$> _gvbdProvenanceBytes,
+                  ("provenance" .=) <$> _gvbdProvenance])
+
+-- | Source describes the location of the source used for the build.
+--
+-- /See:/ 'source' smart constructor.
+data Source = Source'
+    { _sContext                  :: !(Maybe SourceContext)
+    , _sAdditionalContexts       :: !(Maybe [SourceContext])
+    , _sArtifactStorageSourceURI :: !(Maybe Text)
+    , _sFileHashes               :: !(Maybe SourceFileHashes)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Source' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sContext'
+--
+-- * 'sAdditionalContexts'
+--
+-- * 'sArtifactStorageSourceURI'
+--
+-- * 'sFileHashes'
+source
+    :: Source
+source =
+    Source'
+    { _sContext = Nothing
+    , _sAdditionalContexts = Nothing
+    , _sArtifactStorageSourceURI = Nothing
+    , _sFileHashes = Nothing
+    }
+
+-- | If provided, the source code used for the build came from this location.
+sContext :: Lens' Source (Maybe SourceContext)
+sContext = lens _sContext (\ s a -> s{_sContext = a})
+
+-- | 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.
+sAdditionalContexts :: Lens' Source [SourceContext]
+sAdditionalContexts
+  = lens _sAdditionalContexts
+      (\ s a -> s{_sAdditionalContexts = a})
+      . _Default
+      . _Coerce
+
+-- | If provided, the input binary artifacts for the build came from this
+-- location.
+sArtifactStorageSourceURI :: Lens' Source (Maybe Text)
+sArtifactStorageSourceURI
+  = lens _sArtifactStorageSourceURI
+      (\ s a -> s{_sArtifactStorageSourceURI = a})
+
+-- | 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.
+sFileHashes :: Lens' Source (Maybe SourceFileHashes)
+sFileHashes
+  = lens _sFileHashes (\ s a -> s{_sFileHashes = a})
+
+instance FromJSON Source where
+        parseJSON
+          = withObject "Source"
+              (\ o ->
+                 Source' <$>
+                   (o .:? "context") <*>
+                     (o .:? "additionalContexts" .!= mempty)
+                     <*> (o .:? "artifactStorageSourceUri")
+                     <*> (o .:? "fileHashes"))
+
+instance ToJSON Source where
+        toJSON Source'{..}
+          = object
+              (catMaybes
+                 [("context" .=) <$> _sContext,
+                  ("additionalContexts" .=) <$> _sAdditionalContexts,
+                  ("artifactStorageSourceUri" .=) <$>
+                    _sArtifactStorageSourceURI,
+                  ("fileHashes" .=) <$> _sFileHashes])
+
+-- | A scan configuration specifies whether Cloud components in a project
+-- have a particular type of analysis being run. For example, it can
+-- configure whether vulnerability scanning is being done on Docker images
+-- or not.
+--
+-- /See:/ 'scanConfig' smart constructor.
+data ScanConfig = ScanConfig'
+    { _scEnabled     :: !(Maybe Bool)
+    , _scUpdateTime  :: !(Maybe DateTime')
+    , _scName        :: !(Maybe Text)
+    , _scDescription :: !(Maybe Text)
+    , _scCreateTime  :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ScanConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scEnabled'
+--
+-- * 'scUpdateTime'
+--
+-- * 'scName'
+--
+-- * 'scDescription'
+--
+-- * 'scCreateTime'
+scanConfig
+    :: ScanConfig
+scanConfig =
+    ScanConfig'
+    { _scEnabled = Nothing
+    , _scUpdateTime = Nothing
+    , _scName = Nothing
+    , _scDescription = Nothing
+    , _scCreateTime = Nothing
+    }
+
+-- | Whether the scan is enabled.
+scEnabled :: Lens' ScanConfig (Maybe Bool)
+scEnabled
+  = lens _scEnabled (\ s a -> s{_scEnabled = a})
+
+-- | Output only. The time this scan config was last updated.
+scUpdateTime :: Lens' ScanConfig (Maybe UTCTime)
+scUpdateTime
+  = lens _scUpdateTime (\ s a -> s{_scUpdateTime = a})
+      . mapping _DateTime
+
+-- | Output only. The name of the scan configuration in the form of
+-- \`projects\/[PROJECT_ID]\/scanConfigs\/[SCAN_CONFIG_ID]\`.
+scName :: Lens' ScanConfig (Maybe Text)
+scName = lens _scName (\ s a -> s{_scName = a})
+
+-- | Output only. A human-readable description of what the scan configuration
+-- does.
+scDescription :: Lens' ScanConfig (Maybe Text)
+scDescription
+  = lens _scDescription
+      (\ s a -> s{_scDescription = a})
+
+-- | Output only. The time this scan config was created.
+scCreateTime :: Lens' ScanConfig (Maybe UTCTime)
+scCreateTime
+  = lens _scCreateTime (\ s a -> s{_scCreateTime = a})
+      . mapping _DateTime
+
+instance FromJSON ScanConfig where
+        parseJSON
+          = withObject "ScanConfig"
+              (\ o ->
+                 ScanConfig' <$>
+                   (o .:? "enabled") <*> (o .:? "updateTime") <*>
+                     (o .:? "name")
+                     <*> (o .:? "description")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON ScanConfig where
+        toJSON ScanConfig'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _scEnabled,
+                  ("updateTime" .=) <$> _scUpdateTime,
+                  ("name" .=) <$> _scName,
+                  ("description" .=) <$> _scDescription,
+                  ("createTime" .=) <$> _scCreateTime])
+
+-- | A GitSourceContext denotes a particular revision in a third party Git
+-- repository (e.g., GitHub).
+--
+-- /See:/ 'gitSourceContext' smart constructor.
+data GitSourceContext = GitSourceContext'
+    { _gURL        :: !(Maybe Text)
+    , _gRevisionId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GitSourceContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gURL'
+--
+-- * 'gRevisionId'
+gitSourceContext
+    :: GitSourceContext
+gitSourceContext =
+    GitSourceContext'
+    { _gURL = Nothing
+    , _gRevisionId = Nothing
+    }
+
+-- | Git repository URL.
+gURL :: Lens' GitSourceContext (Maybe Text)
+gURL = lens _gURL (\ s a -> s{_gURL = a})
+
+-- | Git commit hash.
+gRevisionId :: Lens' GitSourceContext (Maybe Text)
+gRevisionId
+  = lens _gRevisionId (\ s a -> s{_gRevisionId = a})
+
+instance FromJSON GitSourceContext where
+        parseJSON
+          = withObject "GitSourceContext"
+              (\ o ->
+                 GitSourceContext' <$>
+                   (o .:? "url") <*> (o .:? "revisionId"))
+
+instance ToJSON GitSourceContext where
+        toJSON GitSourceContext'{..}
+          = object
+              (catMaybes
+                 [("url" .=) <$> _gURL,
+                  ("revisionId" .=) <$> _gRevisionId])
+
+-- | Response message for \`TestIamPermissions\` method.
+--
+-- /See:/ 'testIAMPermissionsResponse' smart constructor.
+newtype TestIAMPermissionsResponse = TestIAMPermissionsResponse'
+    { _tiamprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestIAMPermissionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiamprPermissions'
+testIAMPermissionsResponse
+    :: TestIAMPermissionsResponse
+testIAMPermissionsResponse =
+    TestIAMPermissionsResponse'
+    { _tiamprPermissions = Nothing
+    }
+
+-- | A subset of \`TestPermissionsRequest.permissions\` that the caller is
+-- allowed.
+tiamprPermissions :: Lens' TestIAMPermissionsResponse [Text]
+tiamprPermissions
+  = lens _tiamprPermissions
+      (\ s a -> s{_tiamprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsResponse where
+        parseJSON
+          = withObject "TestIAMPermissionsResponse"
+              (\ o ->
+                 TestIAMPermissionsResponse' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsResponse where
+        toJSON TestIAMPermissionsResponse'{..}
+          = object
+              (catMaybes
+                 [("permissions" .=) <$> _tiamprPermissions])
+
+-- | 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).
+--
+-- /See:/ 'policy' smart constructor.
+data Policy = Policy'
+    { _pAuditConfigs :: !(Maybe [AuditConfig])
+    , _pEtag         :: !(Maybe Bytes)
+    , _pVersion      :: !(Maybe (Textual Int32))
+    , _pBindings     :: !(Maybe [Binding])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Policy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pAuditConfigs'
+--
+-- * 'pEtag'
+--
+-- * 'pVersion'
+--
+-- * 'pBindings'
+policy
+    :: Policy
+policy =
+    Policy'
+    { _pAuditConfigs = Nothing
+    , _pEtag = Nothing
+    , _pVersion = Nothing
+    , _pBindings = Nothing
+    }
+
+-- | Specifies cloud audit logging configuration for this policy.
+pAuditConfigs :: Lens' Policy [AuditConfig]
+pAuditConfigs
+  = lens _pAuditConfigs
+      (\ s a -> s{_pAuditConfigs = a})
+      . _Default
+      . _Coerce
+
+-- | \`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.
+pEtag :: Lens' Policy (Maybe ByteString)
+pEtag
+  = lens _pEtag (\ s a -> s{_pEtag = a}) .
+      mapping _Bytes
+
+-- | Deprecated.
+pVersion :: Lens' Policy (Maybe Int32)
+pVersion
+  = lens _pVersion (\ s a -> s{_pVersion = a}) .
+      mapping _Coerce
+
+-- | Associates a list of \`members\` to a \`role\`. \`bindings\` with no
+-- members will result in an error.
+pBindings :: Lens' Policy [Binding]
+pBindings
+  = lens _pBindings (\ s a -> s{_pBindings = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Policy where
+        parseJSON
+          = withObject "Policy"
+              (\ o ->
+                 Policy' <$>
+                   (o .:? "auditConfigs" .!= mempty) <*> (o .:? "etag")
+                     <*> (o .:? "version")
+                     <*> (o .:? "bindings" .!= mempty))
+
+instance ToJSON Policy where
+        toJSON Policy'{..}
+          = object
+              (catMaybes
+                 [("auditConfigs" .=) <$> _pAuditConfigs,
+                  ("etag" .=) <$> _pEtag, ("version" .=) <$> _pVersion,
+                  ("bindings" .=) <$> _pBindings])
+
+-- | Layer holds metadata specific to a layer of a Docker image.
+--
+-- /See:/ 'layer' smart constructor.
+data Layer = Layer'
+    { _lDirective :: !(Maybe LayerDirective)
+    , _lArguments :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Layer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lDirective'
+--
+-- * 'lArguments'
+layer
+    :: Layer
+layer =
+    Layer'
+    { _lDirective = Nothing
+    , _lArguments = Nothing
+    }
+
+-- | Required. The recovered Dockerfile directive used to construct this
+-- layer.
+lDirective :: Lens' Layer (Maybe LayerDirective)
+lDirective
+  = lens _lDirective (\ s a -> s{_lDirective = a})
+
+-- | The recovered arguments to the Dockerfile directive.
+lArguments :: Lens' Layer (Maybe Text)
+lArguments
+  = lens _lArguments (\ s a -> s{_lArguments = a})
+
+instance FromJSON Layer where
+        parseJSON
+          = withObject "Layer"
+              (\ o ->
+                 Layer' <$>
+                   (o .:? "directive") <*> (o .:? "arguments"))
+
+instance ToJSON Layer where
+        toJSON Layer'{..}
+          = object
+              (catMaybes
+                 [("directive" .=) <$> _lDirective,
+                  ("arguments" .=) <$> _lArguments])
+
+-- | A CloudRepoSourceContext denotes a particular revision in a Google Cloud
+-- Source Repo.
+--
+-- /See:/ 'cloudRepoSourceContext' smart constructor.
+data CloudRepoSourceContext = CloudRepoSourceContext'
+    { _crscRepoId       :: !(Maybe RepoId)
+    , _crscRevisionId   :: !(Maybe Text)
+    , _crscAliasContext :: !(Maybe AliasContext)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CloudRepoSourceContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crscRepoId'
+--
+-- * 'crscRevisionId'
+--
+-- * 'crscAliasContext'
+cloudRepoSourceContext
+    :: CloudRepoSourceContext
+cloudRepoSourceContext =
+    CloudRepoSourceContext'
+    { _crscRepoId = Nothing
+    , _crscRevisionId = Nothing
+    , _crscAliasContext = Nothing
+    }
+
+-- | The ID of the repo.
+crscRepoId :: Lens' CloudRepoSourceContext (Maybe RepoId)
+crscRepoId
+  = lens _crscRepoId (\ s a -> s{_crscRepoId = a})
+
+-- | A revision ID.
+crscRevisionId :: Lens' CloudRepoSourceContext (Maybe Text)
+crscRevisionId
+  = lens _crscRevisionId
+      (\ s a -> s{_crscRevisionId = a})
+
+-- | An alias, which may be a branch or tag.
+crscAliasContext :: Lens' CloudRepoSourceContext (Maybe AliasContext)
+crscAliasContext
+  = lens _crscAliasContext
+      (\ s a -> s{_crscAliasContext = a})
+
+instance FromJSON CloudRepoSourceContext where
+        parseJSON
+          = withObject "CloudRepoSourceContext"
+              (\ o ->
+                 CloudRepoSourceContext' <$>
+                   (o .:? "repoId") <*> (o .:? "revisionId") <*>
+                     (o .:? "aliasContext"))
+
+instance ToJSON CloudRepoSourceContext where
+        toJSON CloudRepoSourceContext'{..}
+          = object
+              (catMaybes
+                 [("repoId" .=) <$> _crscRepoId,
+                  ("revisionId" .=) <$> _crscRevisionId,
+                  ("aliasContext" .=) <$> _crscAliasContext])
+
+-- | 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.
+--
+-- /See:/ 'auditLogConfig' smart constructor.
+data AuditLogConfig = AuditLogConfig'
+    { _alcLogType         :: !(Maybe AuditLogConfigLogType)
+    , _alcExemptedMembers :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuditLogConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alcLogType'
+--
+-- * 'alcExemptedMembers'
+auditLogConfig
+    :: AuditLogConfig
+auditLogConfig =
+    AuditLogConfig'
+    { _alcLogType = Nothing
+    , _alcExemptedMembers = Nothing
+    }
+
+-- | The log type that this config enables.
+alcLogType :: Lens' AuditLogConfig (Maybe AuditLogConfigLogType)
+alcLogType
+  = lens _alcLogType (\ s a -> s{_alcLogType = a})
+
+-- | Specifies the identities that do not cause logging for this type of
+-- permission. Follows the same format of Binding.members.
+alcExemptedMembers :: Lens' AuditLogConfig [Text]
+alcExemptedMembers
+  = lens _alcExemptedMembers
+      (\ s a -> s{_alcExemptedMembers = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditLogConfig where
+        parseJSON
+          = withObject "AuditLogConfig"
+              (\ o ->
+                 AuditLogConfig' <$>
+                   (o .:? "logType") <*>
+                     (o .:? "exemptedMembers" .!= mempty))
+
+instance ToJSON AuditLogConfig where
+        toJSON AuditLogConfig'{..}
+          = object
+              (catMaybes
+                 [("logType" .=) <$> _alcLogType,
+                  ("exemptedMembers" .=) <$> _alcExemptedMembers])
+
+-- | 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.
+--
+-- /See:/ 'pgpSignedAttestation' smart constructor.
+data PgpSignedAttestation = PgpSignedAttestation'
+    { _psaSignature   :: !(Maybe Text)
+    , _psaPgpKeyId    :: !(Maybe Text)
+    , _psaContentType :: !(Maybe PgpSignedAttestationContentType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PgpSignedAttestation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psaSignature'
+--
+-- * 'psaPgpKeyId'
+--
+-- * 'psaContentType'
+pgpSignedAttestation
+    :: PgpSignedAttestation
+pgpSignedAttestation =
+    PgpSignedAttestation'
+    { _psaSignature = Nothing
+    , _psaPgpKeyId = Nothing
+    , _psaContentType = Nothing
+    }
+
+-- | Required. The raw content of the signature, as output by GNU Privacy
+-- Guard (GPG) or equivalent. Since this message only supports attached
+-- signatures, the payload that was signed must be attached. While the
+-- signature format supported is dependent on the verification
+-- implementation, currently only ASCII-armored (\`--armor\` to gpg),
+-- non-clearsigned (\`--sign\` rather than \`--clearsign\` to gpg) are
+-- supported. Concretely, \`gpg --sign --armor --output=signature.gpg
+-- payload.json\` will create the signature content expected in this field
+-- in \`signature.gpg\` for the \`payload.json\` attestation payload.
+psaSignature :: Lens' PgpSignedAttestation (Maybe Text)
+psaSignature
+  = lens _psaSignature (\ s a -> s{_psaSignature = a})
+
+-- | The cryptographic fingerprint of the key used to generate the signature,
+-- as output by, e.g. \`gpg --list-keys\`. This should be the version 4,
+-- full 160-bit fingerprint, expressed as a 40 character hexidecimal
+-- string. See https:\/\/tools.ietf.org\/html\/rfc4880#section-12.2 for
+-- details. Implementations may choose to acknowledge \"LONG\", \"SHORT\",
+-- or other abbreviated key IDs, but only the full fingerprint is
+-- guaranteed to work. In gpg, the full fingerprint can be retrieved from
+-- the \`fpr\` field returned when calling --list-keys with --with-colons.
+-- For example: \`\`\` gpg --with-colons --with-fingerprint
+-- --force-v4-certs \\ --list-keys attester\'example.com
+-- tru::1:1513631572:0:3:1:5 pub:......
+-- fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: \`\`\` Above, the
+-- fingerprint is \`24FF6481B76AC91E66A00AC657A93A81EF3AE6FB\`.
+psaPgpKeyId :: Lens' PgpSignedAttestation (Maybe Text)
+psaPgpKeyId
+  = lens _psaPgpKeyId (\ s a -> s{_psaPgpKeyId = a})
+
+-- | 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).
+psaContentType :: Lens' PgpSignedAttestation (Maybe PgpSignedAttestationContentType)
+psaContentType
+  = lens _psaContentType
+      (\ s a -> s{_psaContentType = a})
+
+instance FromJSON PgpSignedAttestation where
+        parseJSON
+          = withObject "PgpSignedAttestation"
+              (\ o ->
+                 PgpSignedAttestation' <$>
+                   (o .:? "signature") <*> (o .:? "pgpKeyId") <*>
+                     (o .:? "contentType"))
+
+instance ToJSON PgpSignedAttestation where
+        toJSON PgpSignedAttestation'{..}
+          = object
+              (catMaybes
+                 [("signature" .=) <$> _psaSignature,
+                  ("pgpKeyId" .=) <$> _psaPgpKeyId,
+                  ("contentType" .=) <$> _psaContentType])
+
+-- | The notes to create. Max allowed length is 1000.
+--
+-- /See:/ 'batchCreateNotesRequestNotes' smart constructor.
+newtype BatchCreateNotesRequestNotes = BatchCreateNotesRequestNotes'
+    { _bcnrnAddtional :: HashMap Text Note
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BatchCreateNotesRequestNotes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bcnrnAddtional'
+batchCreateNotesRequestNotes
+    :: HashMap Text Note -- ^ 'bcnrnAddtional'
+    -> BatchCreateNotesRequestNotes
+batchCreateNotesRequestNotes pBcnrnAddtional_ =
+    BatchCreateNotesRequestNotes'
+    { _bcnrnAddtional = _Coerce # pBcnrnAddtional_
+    }
+
+bcnrnAddtional :: Lens' BatchCreateNotesRequestNotes (HashMap Text Note)
+bcnrnAddtional
+  = lens _bcnrnAddtional
+      (\ s a -> s{_bcnrnAddtional = a})
+      . _Coerce
+
+instance FromJSON BatchCreateNotesRequestNotes where
+        parseJSON
+          = withObject "BatchCreateNotesRequestNotes"
+              (\ o ->
+                 BatchCreateNotesRequestNotes' <$>
+                   (parseJSONObject o))
+
+instance ToJSON BatchCreateNotesRequestNotes where
+        toJSON = toJSON . _bcnrnAddtional
+
+-- | An alias to a repo revision.
+--
+-- /See:/ 'aliasContext' smart constructor.
+data AliasContext = AliasContext'
+    { _acKind :: !(Maybe AliasContextKind)
+    , _acName :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AliasContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acKind'
+--
+-- * 'acName'
+aliasContext
+    :: AliasContext
+aliasContext =
+    AliasContext'
+    { _acKind = Nothing
+    , _acName = Nothing
+    }
+
+-- | The alias kind.
+acKind :: Lens' AliasContext (Maybe AliasContextKind)
+acKind = lens _acKind (\ s a -> s{_acKind = a})
+
+-- | The alias name.
+acName :: Lens' AliasContext (Maybe Text)
+acName = lens _acName (\ s a -> s{_acName = a})
+
+instance FromJSON AliasContext where
+        parseJSON
+          = withObject "AliasContext"
+              (\ o ->
+                 AliasContext' <$> (o .:? "kind") <*> (o .:? "name"))
+
+instance ToJSON AliasContext where
+        toJSON AliasContext'{..}
+          = object
+              (catMaybes
+                 [("kind" .=) <$> _acKind, ("name" .=) <$> _acName])
+
+-- | Associates \`members\` with a \`role\`.
+--
+-- /See:/ 'binding' smart constructor.
+data Binding = Binding'
+    { _bMembers   :: !(Maybe [Text])
+    , _bRole      :: !(Maybe Text)
+    , _bCondition :: !(Maybe Expr)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Binding' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bMembers'
+--
+-- * 'bRole'
+--
+-- * 'bCondition'
+binding
+    :: Binding
+binding =
+    Binding'
+    { _bMembers = Nothing
+    , _bRole = Nothing
+    , _bCondition = Nothing
+    }
+
+-- | 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\`.
+bMembers :: Lens' Binding [Text]
+bMembers
+  = lens _bMembers (\ s a -> s{_bMembers = a}) .
+      _Default
+      . _Coerce
+
+-- | Role that is assigned to \`members\`. For example, \`roles\/viewer\`,
+-- \`roles\/editor\`, or \`roles\/owner\`.
+bRole :: Lens' Binding (Maybe Text)
+bRole = lens _bRole (\ s a -> s{_bRole = a})
+
+-- | 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.
+bCondition :: Lens' Binding (Maybe Expr)
+bCondition
+  = lens _bCondition (\ s a -> s{_bCondition = a})
+
+instance FromJSON Binding where
+        parseJSON
+          = withObject "Binding"
+              (\ o ->
+                 Binding' <$>
+                   (o .:? "members" .!= mempty) <*> (o .:? "role") <*>
+                     (o .:? "condition"))
+
+instance ToJSON Binding where
+        toJSON Binding'{..}
+          = object
+              (catMaybes
+                 [("members" .=) <$> _bMembers,
+                  ("role" .=) <$> _bRole,
+                  ("condition" .=) <$> _bCondition])
+
+-- | Identifies all appearances of this vulnerability in the package for a
+-- specific distro\/location. For example: glibc in
+-- cpe:\/o:debian:debian_linux:8 for versions 2.1 - 2.2
+--
+-- /See:/ 'detail' smart constructor.
+data Detail = Detail'
+    { _detMinAffectedVersion :: !(Maybe Version)
+    , _detPackageType        :: !(Maybe Text)
+    , _detIsObsolete         :: !(Maybe Bool)
+    , _detFixedLocation      :: !(Maybe VulnerabilityLocation)
+    , _detSeverityName       :: !(Maybe Text)
+    , _detMaxAffectedVersion :: !(Maybe Version)
+    , _detPackage            :: !(Maybe Text)
+    , _detCpeURI             :: !(Maybe Text)
+    , _detDescription        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Detail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'detMinAffectedVersion'
+--
+-- * 'detPackageType'
+--
+-- * 'detIsObsolete'
+--
+-- * 'detFixedLocation'
+--
+-- * 'detSeverityName'
+--
+-- * 'detMaxAffectedVersion'
+--
+-- * 'detPackage'
+--
+-- * 'detCpeURI'
+--
+-- * 'detDescription'
+detail
+    :: Detail
+detail =
+    Detail'
+    { _detMinAffectedVersion = Nothing
+    , _detPackageType = Nothing
+    , _detIsObsolete = Nothing
+    , _detFixedLocation = Nothing
+    , _detSeverityName = Nothing
+    , _detMaxAffectedVersion = Nothing
+    , _detPackage = Nothing
+    , _detCpeURI = Nothing
+    , _detDescription = Nothing
+    }
+
+-- | The min version of the package in which the vulnerability exists.
+detMinAffectedVersion :: Lens' Detail (Maybe Version)
+detMinAffectedVersion
+  = lens _detMinAffectedVersion
+      (\ s a -> s{_detMinAffectedVersion = a})
+
+-- | The type of package; whether native or non native(ruby gems, node.js
+-- packages etc).
+detPackageType :: Lens' Detail (Maybe Text)
+detPackageType
+  = lens _detPackageType
+      (\ s a -> s{_detPackageType = a})
+
+-- | Whether this detail is obsolete. Occurrences are expected not to point
+-- to obsolete details.
+detIsObsolete :: Lens' Detail (Maybe Bool)
+detIsObsolete
+  = lens _detIsObsolete
+      (\ s a -> s{_detIsObsolete = a})
+
+-- | The fix for this specific package version.
+detFixedLocation :: Lens' Detail (Maybe VulnerabilityLocation)
+detFixedLocation
+  = lens _detFixedLocation
+      (\ s a -> s{_detFixedLocation = a})
+
+-- | The severity (eg: distro assigned severity) for this vulnerability.
+detSeverityName :: Lens' Detail (Maybe Text)
+detSeverityName
+  = lens _detSeverityName
+      (\ s a -> s{_detSeverityName = a})
+
+-- | The max version of the package in which the vulnerability exists.
+detMaxAffectedVersion :: Lens' Detail (Maybe Version)
+detMaxAffectedVersion
+  = lens _detMaxAffectedVersion
+      (\ s a -> s{_detMaxAffectedVersion = a})
+
+-- | Required. The name of the package where the vulnerability was found.
+detPackage :: Lens' Detail (Maybe Text)
+detPackage
+  = lens _detPackage (\ s a -> s{_detPackage = a})
+
+-- | Required. The CPE URI in [cpe
+-- format](https:\/\/cpe.mitre.org\/specification\/) in which the
+-- vulnerability manifests. Examples include distro or storage location for
+-- vulnerable jar.
+detCpeURI :: Lens' Detail (Maybe Text)
+detCpeURI
+  = lens _detCpeURI (\ s a -> s{_detCpeURI = a})
+
+-- | A vendor-specific description of this note.
+detDescription :: Lens' Detail (Maybe Text)
+detDescription
+  = lens _detDescription
+      (\ s a -> s{_detDescription = a})
+
+instance FromJSON Detail where
+        parseJSON
+          = withObject "Detail"
+              (\ o ->
+                 Detail' <$>
+                   (o .:? "minAffectedVersion") <*>
+                     (o .:? "packageType")
+                     <*> (o .:? "isObsolete")
+                     <*> (o .:? "fixedLocation")
+                     <*> (o .:? "severityName")
+                     <*> (o .:? "maxAffectedVersion")
+                     <*> (o .:? "package")
+                     <*> (o .:? "cpeUri")
+                     <*> (o .:? "description"))
+
+instance ToJSON Detail where
+        toJSON Detail'{..}
+          = object
+              (catMaybes
+                 [("minAffectedVersion" .=) <$>
+                    _detMinAffectedVersion,
+                  ("packageType" .=) <$> _detPackageType,
+                  ("isObsolete" .=) <$> _detIsObsolete,
+                  ("fixedLocation" .=) <$> _detFixedLocation,
+                  ("severityName" .=) <$> _detSeverityName,
+                  ("maxAffectedVersion" .=) <$> _detMaxAffectedVersion,
+                  ("package" .=) <$> _detPackage,
+                  ("cpeUri" .=) <$> _detCpeURI,
+                  ("description" .=) <$> _detDescription])
+
+-- | Note kind that represents a logical attestation \"role\" or
+-- \"authority\". For example, an organization might have one \`Authority\`
+-- for \"QA\" and one for \"build\". This note is intended to act strictly
+-- as a grouping mechanism for the attached occurrences (Attestations).
+-- This grouping mechanism also provides a security boundary, since IAM
+-- ACLs gate the ability for a principle to attach an occurrence to a given
+-- note. It also provides a single point of lookup to find all attached
+-- attestation occurrences, even if they don\'t all live in the same
+-- project.
+--
+-- /See:/ 'authority' smart constructor.
+newtype Authority = Authority'
+    { _aHint :: Maybe Hint
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Authority' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aHint'
+authority
+    :: Authority
+authority =
+    Authority'
+    { _aHint = Nothing
+    }
+
+-- | Hint hints at the purpose of the attestation authority.
+aHint :: Lens' Authority (Maybe Hint)
+aHint = lens _aHint (\ s a -> s{_aHint = a})
+
+instance FromJSON Authority where
+        parseJSON
+          = withObject "Authority"
+              (\ o -> Authority' <$> (o .:? "hint"))
+
+instance ToJSON Authority where
+        toJSON Authority'{..}
+          = object (catMaybes [("hint" .=) <$> _aHint])
+
+-- | Details of a package occurrence.
+--
+-- /See:/ 'grafeasV1beta1PackageDetails' smart constructor.
+newtype GrafeasV1beta1PackageDetails = GrafeasV1beta1PackageDetails'
+    { _gvpdInstallation :: Maybe Installation
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GrafeasV1beta1PackageDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gvpdInstallation'
+grafeasV1beta1PackageDetails
+    :: GrafeasV1beta1PackageDetails
+grafeasV1beta1PackageDetails =
+    GrafeasV1beta1PackageDetails'
+    { _gvpdInstallation = Nothing
+    }
+
+-- | Required. Where the package was installed.
+gvpdInstallation :: Lens' GrafeasV1beta1PackageDetails (Maybe Installation)
+gvpdInstallation
+  = lens _gvpdInstallation
+      (\ s a -> s{_gvpdInstallation = a})
+
+instance FromJSON GrafeasV1beta1PackageDetails where
+        parseJSON
+          = withObject "GrafeasV1beta1PackageDetails"
+              (\ o ->
+                 GrafeasV1beta1PackageDetails' <$>
+                   (o .:? "installation"))
+
+instance ToJSON GrafeasV1beta1PackageDetails where
+        toJSON GrafeasV1beta1PackageDetails'{..}
+          = object
+              (catMaybes
+                 [("installation" .=) <$> _gvpdInstallation])
+
+-- | The period during which some deployable was active in a runtime.
+--
+-- /See:/ 'deployment' smart constructor.
+data Deployment = Deployment'
+    { _depResourceURI  :: !(Maybe [Text])
+    , _depPlatform     :: !(Maybe DeploymentPlatform)
+    , _depConfig       :: !(Maybe Text)
+    , _depUndeployTime :: !(Maybe DateTime')
+    , _depDeployTime   :: !(Maybe DateTime')
+    , _depAddress      :: !(Maybe Text)
+    , _depUserEmail    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Deployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'depResourceURI'
+--
+-- * 'depPlatform'
+--
+-- * 'depConfig'
+--
+-- * 'depUndeployTime'
+--
+-- * 'depDeployTime'
+--
+-- * 'depAddress'
+--
+-- * 'depUserEmail'
+deployment
+    :: Deployment
+deployment =
+    Deployment'
+    { _depResourceURI = Nothing
+    , _depPlatform = Nothing
+    , _depConfig = Nothing
+    , _depUndeployTime = Nothing
+    , _depDeployTime = Nothing
+    , _depAddress = Nothing
+    , _depUserEmail = Nothing
+    }
+
+-- | Output only. Resource URI for the artifact being deployed taken from the
+-- deployable field with the same name.
+depResourceURI :: Lens' Deployment [Text]
+depResourceURI
+  = lens _depResourceURI
+      (\ s a -> s{_depResourceURI = a})
+      . _Default
+      . _Coerce
+
+-- | Platform hosting this deployment.
+depPlatform :: Lens' Deployment (Maybe DeploymentPlatform)
+depPlatform
+  = lens _depPlatform (\ s a -> s{_depPlatform = a})
+
+-- | Configuration used to create this deployment.
+depConfig :: Lens' Deployment (Maybe Text)
+depConfig
+  = lens _depConfig (\ s a -> s{_depConfig = a})
+
+-- | End of the lifetime of this deployment.
+depUndeployTime :: Lens' Deployment (Maybe UTCTime)
+depUndeployTime
+  = lens _depUndeployTime
+      (\ s a -> s{_depUndeployTime = a})
+      . mapping _DateTime
+
+-- | Required. Beginning of the lifetime of this deployment.
+depDeployTime :: Lens' Deployment (Maybe UTCTime)
+depDeployTime
+  = lens _depDeployTime
+      (\ s a -> s{_depDeployTime = a})
+      . mapping _DateTime
+
+-- | Address of the runtime element hosting this deployment.
+depAddress :: Lens' Deployment (Maybe Text)
+depAddress
+  = lens _depAddress (\ s a -> s{_depAddress = a})
+
+-- | Identity of the user that triggered this deployment.
+depUserEmail :: Lens' Deployment (Maybe Text)
+depUserEmail
+  = lens _depUserEmail (\ s a -> s{_depUserEmail = a})
+
+instance FromJSON Deployment where
+        parseJSON
+          = withObject "Deployment"
+              (\ o ->
+                 Deployment' <$>
+                   (o .:? "resourceUri" .!= mempty) <*>
+                     (o .:? "platform")
+                     <*> (o .:? "config")
+                     <*> (o .:? "undeployTime")
+                     <*> (o .:? "deployTime")
+                     <*> (o .:? "address")
+                     <*> (o .:? "userEmail"))
+
+instance ToJSON Deployment where
+        toJSON Deployment'{..}
+          = object
+              (catMaybes
+                 [("resourceUri" .=) <$> _depResourceURI,
+                  ("platform" .=) <$> _depPlatform,
+                  ("config" .=) <$> _depConfig,
+                  ("undeployTime" .=) <$> _depUndeployTime,
+                  ("deployTime" .=) <$> _depDeployTime,
+                  ("address" .=) <$> _depAddress,
+                  ("userEmail" .=) <$> _depUserEmail])
diff --git a/gen/Network/Google/ContainerAnalysis/Types/Sum.hs b/gen/Network/Google/ContainerAnalysis/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/ContainerAnalysis/Types/Sum.hs
@@ -0,0 +1,865 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.ContainerAnalysis.Types.Sum
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.ContainerAnalysis.Types.Sum where
+
+import           Network.Google.Prelude hiding (Bytes)
+
+-- | Required. The recovered Dockerfile directive used to construct this
+-- layer.
+data LayerDirective
+    = DirectiveUnspecified
+      -- ^ @DIRECTIVE_UNSPECIFIED@
+      -- Default value for unsupported\/missing directive.
+    | Maintainer
+      -- ^ @MAINTAINER@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#maintainer
+    | Run
+      -- ^ @RUN@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#run
+    | Cmd
+      -- ^ @CMD@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#cmd
+    | Label
+      -- ^ @LABEL@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#label
+    | Expose
+      -- ^ @EXPOSE@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#expose
+    | Env
+      -- ^ @ENV@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#env
+    | Add
+      -- ^ @ADD@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#add
+    | Copy
+      -- ^ @COPY@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#copy
+    | Entrypoint
+      -- ^ @ENTRYPOINT@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#entrypoint
+    | Volume
+      -- ^ @VOLUME@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#volume
+    | User
+      -- ^ @USER@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#user
+    | Workdir
+      -- ^ @WORKDIR@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#workdir
+    | Arg
+      -- ^ @ARG@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#arg
+    | Onbuild
+      -- ^ @ONBUILD@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#onbuild
+    | Stopsignal
+      -- ^ @STOPSIGNAL@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#stopsignal
+    | Healthcheck
+      -- ^ @HEALTHCHECK@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#healthcheck
+    | Shell
+      -- ^ @SHELL@
+      -- https:\/\/docs.docker.com\/reference\/builder\/#shell
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable LayerDirective
+
+instance FromHttpApiData LayerDirective where
+    parseQueryParam = \case
+        "DIRECTIVE_UNSPECIFIED" -> Right DirectiveUnspecified
+        "MAINTAINER" -> Right Maintainer
+        "RUN" -> Right Run
+        "CMD" -> Right Cmd
+        "LABEL" -> Right Label
+        "EXPOSE" -> Right Expose
+        "ENV" -> Right Env
+        "ADD" -> Right Add
+        "COPY" -> Right Copy
+        "ENTRYPOINT" -> Right Entrypoint
+        "VOLUME" -> Right Volume
+        "USER" -> Right User
+        "WORKDIR" -> Right Workdir
+        "ARG" -> Right Arg
+        "ONBUILD" -> Right Onbuild
+        "STOPSIGNAL" -> Right Stopsignal
+        "HEALTHCHECK" -> Right Healthcheck
+        "SHELL" -> Right Shell
+        x -> Left ("Unable to parse LayerDirective from: " <> x)
+
+instance ToHttpApiData LayerDirective where
+    toQueryParam = \case
+        DirectiveUnspecified -> "DIRECTIVE_UNSPECIFIED"
+        Maintainer -> "MAINTAINER"
+        Run -> "RUN"
+        Cmd -> "CMD"
+        Label -> "LABEL"
+        Expose -> "EXPOSE"
+        Env -> "ENV"
+        Add -> "ADD"
+        Copy -> "COPY"
+        Entrypoint -> "ENTRYPOINT"
+        Volume -> "VOLUME"
+        User -> "USER"
+        Workdir -> "WORKDIR"
+        Arg -> "ARG"
+        Onbuild -> "ONBUILD"
+        Stopsignal -> "STOPSIGNAL"
+        Healthcheck -> "HEALTHCHECK"
+        Shell -> "SHELL"
+
+instance FromJSON LayerDirective where
+    parseJSON = parseJSONText "LayerDirective"
+
+instance ToJSON LayerDirective where
+    toJSON = toJSONText
+
+-- | The status of discovery for the resource.
+data DiscoveredAnalysisStatus
+    = AnalysisStatusUnspecified
+      -- ^ @ANALYSIS_STATUS_UNSPECIFIED@
+      -- Unknown.
+    | Pending
+      -- ^ @PENDING@
+      -- Resource is known but no action has been taken yet.
+    | Scanning
+      -- ^ @SCANNING@
+      -- Resource is being analyzed.
+    | FinishedSuccess
+      -- ^ @FINISHED_SUCCESS@
+      -- Analysis has finished successfully.
+    | FinishedFailed
+      -- ^ @FINISHED_FAILED@
+      -- Analysis has finished unsuccessfully, the analysis itself is in a bad
+      -- state.
+    | FinishedUnsupported
+      -- ^ @FINISHED_UNSUPPORTED@
+      -- The resource is known not to be supported
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiscoveredAnalysisStatus
+
+instance FromHttpApiData DiscoveredAnalysisStatus where
+    parseQueryParam = \case
+        "ANALYSIS_STATUS_UNSPECIFIED" -> Right AnalysisStatusUnspecified
+        "PENDING" -> Right Pending
+        "SCANNING" -> Right Scanning
+        "FINISHED_SUCCESS" -> Right FinishedSuccess
+        "FINISHED_FAILED" -> Right FinishedFailed
+        "FINISHED_UNSUPPORTED" -> Right FinishedUnsupported
+        x -> Left ("Unable to parse DiscoveredAnalysisStatus from: " <> x)
+
+instance ToHttpApiData DiscoveredAnalysisStatus where
+    toQueryParam = \case
+        AnalysisStatusUnspecified -> "ANALYSIS_STATUS_UNSPECIFIED"
+        Pending -> "PENDING"
+        Scanning -> "SCANNING"
+        FinishedSuccess -> "FINISHED_SUCCESS"
+        FinishedFailed -> "FINISHED_FAILED"
+        FinishedUnsupported -> "FINISHED_UNSUPPORTED"
+
+instance FromJSON DiscoveredAnalysisStatus where
+    parseJSON = parseJSONText "DiscoveredAnalysisStatus"
+
+instance ToJSON DiscoveredAnalysisStatus where
+    toJSON = toJSONText
+
+-- | Output only. The note provider assigned Severity of the vulnerability.
+data GrafeasV1beta1VulnerabilityDetailsSeverity
+    = SeverityUnspecified
+      -- ^ @SEVERITY_UNSPECIFIED@
+      -- Unknown.
+    | Minimal
+      -- ^ @MINIMAL@
+      -- Minimal severity.
+    | Low
+      -- ^ @LOW@
+      -- Low severity.
+    | Medium
+      -- ^ @MEDIUM@
+      -- Medium severity.
+    | High
+      -- ^ @HIGH@
+      -- High severity.
+    | Critical
+      -- ^ @CRITICAL@
+      -- Critical severity.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GrafeasV1beta1VulnerabilityDetailsSeverity
+
+instance FromHttpApiData GrafeasV1beta1VulnerabilityDetailsSeverity where
+    parseQueryParam = \case
+        "SEVERITY_UNSPECIFIED" -> Right SeverityUnspecified
+        "MINIMAL" -> Right Minimal
+        "LOW" -> Right Low
+        "MEDIUM" -> Right Medium
+        "HIGH" -> Right High
+        "CRITICAL" -> Right Critical
+        x -> Left ("Unable to parse GrafeasV1beta1VulnerabilityDetailsSeverity from: " <> x)
+
+instance ToHttpApiData GrafeasV1beta1VulnerabilityDetailsSeverity where
+    toQueryParam = \case
+        SeverityUnspecified -> "SEVERITY_UNSPECIFIED"
+        Minimal -> "MINIMAL"
+        Low -> "LOW"
+        Medium -> "MEDIUM"
+        High -> "HIGH"
+        Critical -> "CRITICAL"
+
+instance FromJSON GrafeasV1beta1VulnerabilityDetailsSeverity where
+    parseJSON = parseJSONText "GrafeasV1beta1VulnerabilityDetailsSeverity"
+
+instance ToJSON GrafeasV1beta1VulnerabilityDetailsSeverity where
+    toJSON = toJSONText
+
+-- | Output only. This explicitly denotes which of the occurrence details are
+-- specified. This field can be used as a filter in list requests.
+data OccurrenceKind
+    = OKNoteKindUnspecified
+      -- ^ @NOTE_KIND_UNSPECIFIED@
+      -- Unknown.
+    | OKVulnerability
+      -- ^ @VULNERABILITY@
+      -- The note and occurrence represent a package vulnerability.
+    | OKBuild
+      -- ^ @BUILD@
+      -- The note and occurrence assert build provenance.
+    | OKImage
+      -- ^ @IMAGE@
+      -- This represents an image basis relationship.
+    | OKPackage
+      -- ^ @PACKAGE@
+      -- This represents a package installed via a package manager.
+    | OKDeployment
+      -- ^ @DEPLOYMENT@
+      -- The note and occurrence track deployment events.
+    | OKDiscovery
+      -- ^ @DISCOVERY@
+      -- The note and occurrence track the initial discovery status of a
+      -- resource.
+    | OKAttestation
+      -- ^ @ATTESTATION@
+      -- This represents a logical \"role\" that can attest to artifacts.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable OccurrenceKind
+
+instance FromHttpApiData OccurrenceKind where
+    parseQueryParam = \case
+        "NOTE_KIND_UNSPECIFIED" -> Right OKNoteKindUnspecified
+        "VULNERABILITY" -> Right OKVulnerability
+        "BUILD" -> Right OKBuild
+        "IMAGE" -> Right OKImage
+        "PACKAGE" -> Right OKPackage
+        "DEPLOYMENT" -> Right OKDeployment
+        "DISCOVERY" -> Right OKDiscovery
+        "ATTESTATION" -> Right OKAttestation
+        x -> Left ("Unable to parse OccurrenceKind from: " <> x)
+
+instance ToHttpApiData OccurrenceKind where
+    toQueryParam = \case
+        OKNoteKindUnspecified -> "NOTE_KIND_UNSPECIFIED"
+        OKVulnerability -> "VULNERABILITY"
+        OKBuild -> "BUILD"
+        OKImage -> "IMAGE"
+        OKPackage -> "PACKAGE"
+        OKDeployment -> "DEPLOYMENT"
+        OKDiscovery -> "DISCOVERY"
+        OKAttestation -> "ATTESTATION"
+
+instance FromJSON OccurrenceKind where
+    parseJSON = parseJSONText "OccurrenceKind"
+
+instance ToJSON OccurrenceKind where
+    toJSON = toJSONText
+
+-- | Note provider assigned impact of the vulnerability.
+data VulnerabilitySeverity
+    = VSSeverityUnspecified
+      -- ^ @SEVERITY_UNSPECIFIED@
+      -- Unknown.
+    | VSMinimal
+      -- ^ @MINIMAL@
+      -- Minimal severity.
+    | VSLow
+      -- ^ @LOW@
+      -- Low severity.
+    | VSMedium
+      -- ^ @MEDIUM@
+      -- Medium severity.
+    | VSHigh
+      -- ^ @HIGH@
+      -- High severity.
+    | VSCritical
+      -- ^ @CRITICAL@
+      -- Critical severity.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable VulnerabilitySeverity
+
+instance FromHttpApiData VulnerabilitySeverity where
+    parseQueryParam = \case
+        "SEVERITY_UNSPECIFIED" -> Right VSSeverityUnspecified
+        "MINIMAL" -> Right VSMinimal
+        "LOW" -> Right VSLow
+        "MEDIUM" -> Right VSMedium
+        "HIGH" -> Right VSHigh
+        "CRITICAL" -> Right VSCritical
+        x -> Left ("Unable to parse VulnerabilitySeverity from: " <> x)
+
+instance ToHttpApiData VulnerabilitySeverity where
+    toQueryParam = \case
+        VSSeverityUnspecified -> "SEVERITY_UNSPECIFIED"
+        VSMinimal -> "MINIMAL"
+        VSLow -> "LOW"
+        VSMedium -> "MEDIUM"
+        VSHigh -> "HIGH"
+        VSCritical -> "CRITICAL"
+
+instance FromJSON VulnerabilitySeverity where
+    parseJSON = parseJSONText "VulnerabilitySeverity"
+
+instance ToJSON VulnerabilitySeverity where
+    toJSON = toJSONText
+
+-- | Whether the resource is continuously analyzed.
+data DiscoveredContinuousAnalysis
+    = ContinuousAnalysisUnspecified
+      -- ^ @CONTINUOUS_ANALYSIS_UNSPECIFIED@
+      -- Unknown.
+    | Active
+      -- ^ @ACTIVE@
+      -- The resource is continuously analyzed.
+    | Inactive
+      -- ^ @INACTIVE@
+      -- The resource is ignored for continuous analysis.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiscoveredContinuousAnalysis
+
+instance FromHttpApiData DiscoveredContinuousAnalysis where
+    parseQueryParam = \case
+        "CONTINUOUS_ANALYSIS_UNSPECIFIED" -> Right ContinuousAnalysisUnspecified
+        "ACTIVE" -> Right Active
+        "INACTIVE" -> Right Inactive
+        x -> Left ("Unable to parse DiscoveredContinuousAnalysis from: " <> x)
+
+instance ToHttpApiData DiscoveredContinuousAnalysis where
+    toQueryParam = \case
+        ContinuousAnalysisUnspecified -> "CONTINUOUS_ANALYSIS_UNSPECIFIED"
+        Active -> "ACTIVE"
+        Inactive -> "INACTIVE"
+
+instance FromJSON DiscoveredContinuousAnalysis where
+    parseJSON = parseJSONText "DiscoveredContinuousAnalysis"
+
+instance ToJSON DiscoveredContinuousAnalysis where
+    toJSON = toJSONText
+
+-- | Output only. The type of analysis. This field can be used as a filter in
+-- list requests.
+data NoteKind
+    = NKNoteKindUnspecified
+      -- ^ @NOTE_KIND_UNSPECIFIED@
+      -- Unknown.
+    | NKVulnerability
+      -- ^ @VULNERABILITY@
+      -- The note and occurrence represent a package vulnerability.
+    | NKBuild
+      -- ^ @BUILD@
+      -- The note and occurrence assert build provenance.
+    | NKImage
+      -- ^ @IMAGE@
+      -- This represents an image basis relationship.
+    | NKPackage
+      -- ^ @PACKAGE@
+      -- This represents a package installed via a package manager.
+    | NKDeployment
+      -- ^ @DEPLOYMENT@
+      -- The note and occurrence track deployment events.
+    | NKDiscovery
+      -- ^ @DISCOVERY@
+      -- The note and occurrence track the initial discovery status of a
+      -- resource.
+    | NKAttestation
+      -- ^ @ATTESTATION@
+      -- This represents a logical \"role\" that can attest to artifacts.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NoteKind
+
+instance FromHttpApiData NoteKind where
+    parseQueryParam = \case
+        "NOTE_KIND_UNSPECIFIED" -> Right NKNoteKindUnspecified
+        "VULNERABILITY" -> Right NKVulnerability
+        "BUILD" -> Right NKBuild
+        "IMAGE" -> Right NKImage
+        "PACKAGE" -> Right NKPackage
+        "DEPLOYMENT" -> Right NKDeployment
+        "DISCOVERY" -> Right NKDiscovery
+        "ATTESTATION" -> Right NKAttestation
+        x -> Left ("Unable to parse NoteKind from: " <> x)
+
+instance ToHttpApiData NoteKind where
+    toQueryParam = \case
+        NKNoteKindUnspecified -> "NOTE_KIND_UNSPECIFIED"
+        NKVulnerability -> "VULNERABILITY"
+        NKBuild -> "BUILD"
+        NKImage -> "IMAGE"
+        NKPackage -> "PACKAGE"
+        NKDeployment -> "DEPLOYMENT"
+        NKDiscovery -> "DISCOVERY"
+        NKAttestation -> "ATTESTATION"
+
+instance FromJSON NoteKind where
+    parseJSON = parseJSONText "NoteKind"
+
+instance ToJSON NoteKind where
+    toJSON = toJSONText
+
+-- | Platform hosting this deployment.
+data DeploymentPlatform
+    = PlatformUnspecified
+      -- ^ @PLATFORM_UNSPECIFIED@
+      -- Unknown.
+    | Gke
+      -- ^ @GKE@
+      -- Google Container Engine.
+    | Flex
+      -- ^ @FLEX@
+      -- Google App Engine: Flexible Environment.
+    | Custom
+      -- ^ @CUSTOM@
+      -- Custom user-defined platform.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DeploymentPlatform
+
+instance FromHttpApiData DeploymentPlatform where
+    parseQueryParam = \case
+        "PLATFORM_UNSPECIFIED" -> Right PlatformUnspecified
+        "GKE" -> Right Gke
+        "FLEX" -> Right Flex
+        "CUSTOM" -> Right Custom
+        x -> Left ("Unable to parse DeploymentPlatform from: " <> x)
+
+instance ToHttpApiData DeploymentPlatform where
+    toQueryParam = \case
+        PlatformUnspecified -> "PLATFORM_UNSPECIFIED"
+        Gke -> "GKE"
+        Flex -> "FLEX"
+        Custom -> "CUSTOM"
+
+instance FromJSON DeploymentPlatform where
+    parseJSON = parseJSONText "DeploymentPlatform"
+
+instance ToJSON DeploymentPlatform where
+    toJSON = toJSONText
+
+-- | The CPU architecture for which packages in this distribution channel
+-- were built.
+data DistributionArchitecture
+    = ArchitectureUnspecified
+      -- ^ @ARCHITECTURE_UNSPECIFIED@
+      -- Unknown architecture.
+    | X86
+      -- ^ @X86@
+      -- X86 architecture.
+    | X64
+      -- ^ @X64@
+      -- X64 architecture.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DistributionArchitecture
+
+instance FromHttpApiData DistributionArchitecture where
+    parseQueryParam = \case
+        "ARCHITECTURE_UNSPECIFIED" -> Right ArchitectureUnspecified
+        "X86" -> Right X86
+        "X64" -> Right X64
+        x -> Left ("Unable to parse DistributionArchitecture from: " <> x)
+
+instance ToHttpApiData DistributionArchitecture where
+    toQueryParam = \case
+        ArchitectureUnspecified -> "ARCHITECTURE_UNSPECIFIED"
+        X86 -> "X86"
+        X64 -> "X64"
+
+instance FromJSON DistributionArchitecture where
+    parseJSON = parseJSONText "DistributionArchitecture"
+
+instance ToJSON DistributionArchitecture where
+    toJSON = toJSONText
+
+-- | The severity for this count. SEVERITY_UNSPECIFIED indicates total across
+-- all severities.
+data FixableTotalByDigestSeverity
+    = FTBDSSeverityUnspecified
+      -- ^ @SEVERITY_UNSPECIFIED@
+      -- Unknown.
+    | FTBDSMinimal
+      -- ^ @MINIMAL@
+      -- Minimal severity.
+    | FTBDSLow
+      -- ^ @LOW@
+      -- Low severity.
+    | FTBDSMedium
+      -- ^ @MEDIUM@
+      -- Medium severity.
+    | FTBDSHigh
+      -- ^ @HIGH@
+      -- High severity.
+    | FTBDSCritical
+      -- ^ @CRITICAL@
+      -- Critical severity.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable FixableTotalByDigestSeverity
+
+instance FromHttpApiData FixableTotalByDigestSeverity where
+    parseQueryParam = \case
+        "SEVERITY_UNSPECIFIED" -> Right FTBDSSeverityUnspecified
+        "MINIMAL" -> Right FTBDSMinimal
+        "LOW" -> Right FTBDSLow
+        "MEDIUM" -> Right FTBDSMedium
+        "HIGH" -> Right FTBDSHigh
+        "CRITICAL" -> Right FTBDSCritical
+        x -> Left ("Unable to parse FixableTotalByDigestSeverity from: " <> x)
+
+instance ToHttpApiData FixableTotalByDigestSeverity where
+    toQueryParam = \case
+        FTBDSSeverityUnspecified -> "SEVERITY_UNSPECIFIED"
+        FTBDSMinimal -> "MINIMAL"
+        FTBDSLow -> "LOW"
+        FTBDSMedium -> "MEDIUM"
+        FTBDSHigh -> "HIGH"
+        FTBDSCritical -> "CRITICAL"
+
+instance FromJSON FixableTotalByDigestSeverity where
+    parseJSON = parseJSONText "FixableTotalByDigestSeverity"
+
+instance ToJSON FixableTotalByDigestSeverity where
+    toJSON = toJSONText
+
+-- | The log type that this config enables.
+data AuditLogConfigLogType
+    = LogTypeUnspecified
+      -- ^ @LOG_TYPE_UNSPECIFIED@
+      -- Default case. Should never be this.
+    | AdminRead
+      -- ^ @ADMIN_READ@
+      -- Admin reads. Example: CloudIAM getIamPolicy
+    | DataWrite
+      -- ^ @DATA_WRITE@
+      -- Data writes. Example: CloudSQL Users create
+    | DataRead
+      -- ^ @DATA_READ@
+      -- Data reads. Example: CloudSQL Users list
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AuditLogConfigLogType
+
+instance FromHttpApiData AuditLogConfigLogType where
+    parseQueryParam = \case
+        "LOG_TYPE_UNSPECIFIED" -> Right LogTypeUnspecified
+        "ADMIN_READ" -> Right AdminRead
+        "DATA_WRITE" -> Right DataWrite
+        "DATA_READ" -> Right DataRead
+        x -> Left ("Unable to parse AuditLogConfigLogType from: " <> x)
+
+instance ToHttpApiData AuditLogConfigLogType where
+    toQueryParam = \case
+        LogTypeUnspecified -> "LOG_TYPE_UNSPECIFIED"
+        AdminRead -> "ADMIN_READ"
+        DataWrite -> "DATA_WRITE"
+        DataRead -> "DATA_READ"
+
+instance FromJSON AuditLogConfigLogType where
+    parseJSON = parseJSONText "AuditLogConfigLogType"
+
+instance ToJSON AuditLogConfigLogType where
+    toJSON = toJSONText
+
+-- | 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).
+data PgpSignedAttestationContentType
+    = ContentTypeUnspecified
+      -- ^ @CONTENT_TYPE_UNSPECIFIED@
+      -- \`ContentType\` is not set.
+    | SimpleSigningJSON
+      -- ^ @SIMPLE_SIGNING_JSON@
+      -- Atomic format attestation signature. See
+      -- https:\/\/github.com\/containers\/image\/blob\/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7\/docs\/atomic-signature.md
+      -- The payload extracted from \`signature\` is a JSON blob conforming to
+      -- the linked schema.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable PgpSignedAttestationContentType
+
+instance FromHttpApiData PgpSignedAttestationContentType where
+    parseQueryParam = \case
+        "CONTENT_TYPE_UNSPECIFIED" -> Right ContentTypeUnspecified
+        "SIMPLE_SIGNING_JSON" -> Right SimpleSigningJSON
+        x -> Left ("Unable to parse PgpSignedAttestationContentType from: " <> x)
+
+instance ToHttpApiData PgpSignedAttestationContentType where
+    toQueryParam = \case
+        ContentTypeUnspecified -> "CONTENT_TYPE_UNSPECIFIED"
+        SimpleSigningJSON -> "SIMPLE_SIGNING_JSON"
+
+instance FromJSON PgpSignedAttestationContentType where
+    parseJSON = parseJSONText "PgpSignedAttestationContentType"
+
+instance ToJSON PgpSignedAttestationContentType where
+    toJSON = toJSONText
+
+-- | V1 error format.
+data Xgafv
+    = X1
+      -- ^ @1@
+      -- v1 error format
+    | X2
+      -- ^ @2@
+      -- v2 error format
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable Xgafv
+
+instance FromHttpApiData Xgafv where
+    parseQueryParam = \case
+        "1" -> Right X1
+        "2" -> Right X2
+        x -> Left ("Unable to parse Xgafv from: " <> x)
+
+instance ToHttpApiData Xgafv where
+    toQueryParam = \case
+        X1 -> "1"
+        X2 -> "2"
+
+instance FromJSON Xgafv where
+    parseJSON = parseJSONText "Xgafv"
+
+instance ToJSON Xgafv where
+    toJSON = toJSONText
+
+-- | Required. Distinguishes between sentinel MIN\/MAX versions and normal
+-- versions.
+data VersionKind
+    = VersionKindUnspecified
+      -- ^ @VERSION_KIND_UNSPECIFIED@
+      -- Unknown.
+    | Normal
+      -- ^ @NORMAL@
+      -- A standard package version.
+    | Minimum
+      -- ^ @MINIMUM@
+      -- A special version representing negative infinity.
+    | Maximum
+      -- ^ @MAXIMUM@
+      -- A special version representing positive infinity.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable VersionKind
+
+instance FromHttpApiData VersionKind where
+    parseQueryParam = \case
+        "VERSION_KIND_UNSPECIFIED" -> Right VersionKindUnspecified
+        "NORMAL" -> Right Normal
+        "MINIMUM" -> Right Minimum
+        "MAXIMUM" -> Right Maximum
+        x -> Left ("Unable to parse VersionKind from: " <> x)
+
+instance ToHttpApiData VersionKind where
+    toQueryParam = \case
+        VersionKindUnspecified -> "VERSION_KIND_UNSPECIFIED"
+        Normal -> "NORMAL"
+        Minimum -> "MINIMUM"
+        Maximum -> "MAXIMUM"
+
+instance FromJSON VersionKind where
+    parseJSON = parseJSONText "VersionKind"
+
+instance ToJSON VersionKind where
+    toJSON = toJSONText
+
+-- | Required. The type of hash that was performed.
+data HashType
+    = HashTypeUnspecified
+      -- ^ @HASH_TYPE_UNSPECIFIED@
+      -- Unknown.
+    | SHA256
+      -- ^ @SHA256@
+      -- A SHA-256 hash.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable HashType
+
+instance FromHttpApiData HashType where
+    parseQueryParam = \case
+        "HASH_TYPE_UNSPECIFIED" -> Right HashTypeUnspecified
+        "SHA256" -> Right SHA256
+        x -> Left ("Unable to parse HashType from: " <> x)
+
+instance ToHttpApiData HashType where
+    toQueryParam = \case
+        HashTypeUnspecified -> "HASH_TYPE_UNSPECIFIED"
+        SHA256 -> "SHA256"
+
+instance FromJSON HashType where
+    parseJSON = parseJSONText "HashType"
+
+instance ToJSON HashType where
+    toJSON = toJSONText
+
+-- | The type of the key, either stored in \`public_key\` or referenced in
+-- \`key_id\`.
+data BuildSignatureKeyType
+    = KeyTypeUnspecified
+      -- ^ @KEY_TYPE_UNSPECIFIED@
+      -- \`KeyType\` is not set.
+    | PgpAsciiArmored
+      -- ^ @PGP_ASCII_ARMORED@
+      -- \`PGP ASCII Armored\` public key.
+    | PkixPem
+      -- ^ @PKIX_PEM@
+      -- \`PKIX PEM\` public key.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable BuildSignatureKeyType
+
+instance FromHttpApiData BuildSignatureKeyType where
+    parseQueryParam = \case
+        "KEY_TYPE_UNSPECIFIED" -> Right KeyTypeUnspecified
+        "PGP_ASCII_ARMORED" -> Right PgpAsciiArmored
+        "PKIX_PEM" -> Right PkixPem
+        x -> Left ("Unable to parse BuildSignatureKeyType from: " <> x)
+
+instance ToHttpApiData BuildSignatureKeyType where
+    toQueryParam = \case
+        KeyTypeUnspecified -> "KEY_TYPE_UNSPECIFIED"
+        PgpAsciiArmored -> "PGP_ASCII_ARMORED"
+        PkixPem -> "PKIX_PEM"
+
+instance FromJSON BuildSignatureKeyType where
+    parseJSON = parseJSONText "BuildSignatureKeyType"
+
+instance ToJSON BuildSignatureKeyType where
+    toJSON = toJSONText
+
+-- | Required. Immutable. The kind of analysis that is handled by this
+-- discovery.
+data DiscoveryAnalysisKind
+    = DAKNoteKindUnspecified
+      -- ^ @NOTE_KIND_UNSPECIFIED@
+      -- Unknown.
+    | DAKVulnerability
+      -- ^ @VULNERABILITY@
+      -- The note and occurrence represent a package vulnerability.
+    | DAKBuild
+      -- ^ @BUILD@
+      -- The note and occurrence assert build provenance.
+    | DAKImage
+      -- ^ @IMAGE@
+      -- This represents an image basis relationship.
+    | DAKPackage
+      -- ^ @PACKAGE@
+      -- This represents a package installed via a package manager.
+    | DAKDeployment
+      -- ^ @DEPLOYMENT@
+      -- The note and occurrence track deployment events.
+    | DAKDiscovery
+      -- ^ @DISCOVERY@
+      -- The note and occurrence track the initial discovery status of a
+      -- resource.
+    | DAKAttestation
+      -- ^ @ATTESTATION@
+      -- This represents a logical \"role\" that can attest to artifacts.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DiscoveryAnalysisKind
+
+instance FromHttpApiData DiscoveryAnalysisKind where
+    parseQueryParam = \case
+        "NOTE_KIND_UNSPECIFIED" -> Right DAKNoteKindUnspecified
+        "VULNERABILITY" -> Right DAKVulnerability
+        "BUILD" -> Right DAKBuild
+        "IMAGE" -> Right DAKImage
+        "PACKAGE" -> Right DAKPackage
+        "DEPLOYMENT" -> Right DAKDeployment
+        "DISCOVERY" -> Right DAKDiscovery
+        "ATTESTATION" -> Right DAKAttestation
+        x -> Left ("Unable to parse DiscoveryAnalysisKind from: " <> x)
+
+instance ToHttpApiData DiscoveryAnalysisKind where
+    toQueryParam = \case
+        DAKNoteKindUnspecified -> "NOTE_KIND_UNSPECIFIED"
+        DAKVulnerability -> "VULNERABILITY"
+        DAKBuild -> "BUILD"
+        DAKImage -> "IMAGE"
+        DAKPackage -> "PACKAGE"
+        DAKDeployment -> "DEPLOYMENT"
+        DAKDiscovery -> "DISCOVERY"
+        DAKAttestation -> "ATTESTATION"
+
+instance FromJSON DiscoveryAnalysisKind where
+    parseJSON = parseJSONText "DiscoveryAnalysisKind"
+
+instance ToJSON DiscoveryAnalysisKind where
+    toJSON = toJSONText
+
+-- | The alias kind.
+data AliasContextKind
+    = KindUnspecified
+      -- ^ @KIND_UNSPECIFIED@
+      -- Unknown.
+    | Fixed
+      -- ^ @FIXED@
+      -- Git tag.
+    | Movable
+      -- ^ @MOVABLE@
+      -- Git branch.
+    | Other
+      -- ^ @OTHER@
+      -- Used to specify non-standard aliases. For example, if a Git repo has a
+      -- ref named \"refs\/foo\/bar\".
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AliasContextKind
+
+instance FromHttpApiData AliasContextKind where
+    parseQueryParam = \case
+        "KIND_UNSPECIFIED" -> Right KindUnspecified
+        "FIXED" -> Right Fixed
+        "MOVABLE" -> Right Movable
+        "OTHER" -> Right Other
+        x -> Left ("Unable to parse AliasContextKind from: " <> x)
+
+instance ToHttpApiData AliasContextKind where
+    toQueryParam = \case
+        KindUnspecified -> "KIND_UNSPECIFIED"
+        Fixed -> "FIXED"
+        Movable -> "MOVABLE"
+        Other -> "OTHER"
+
+instance FromJSON AliasContextKind where
+    parseJSON = parseJSONText "AliasContextKind"
+
+instance ToJSON AliasContextKind where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/BatchCreate.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/BatchCreate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/BatchCreate.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.BatchCreate
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates new notes in batch.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.batchCreate@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.BatchCreate
+    (
+    -- * REST Resource
+      ProjectsNotesBatchCreateResource
+
+    -- * Creating a Request
+    , projectsNotesBatchCreate
+    , ProjectsNotesBatchCreate
+
+    -- * Request Lenses
+    , pnbcParent
+    , pnbcXgafv
+    , pnbcUploadProtocol
+    , pnbcAccessToken
+    , pnbcUploadType
+    , pnbcPayload
+    , pnbcCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.batchCreate@ method which the
+-- 'ProjectsNotesBatchCreate' request conforms to.
+type ProjectsNotesBatchCreateResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "notes:batchCreate" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BatchCreateNotesRequest :>
+                         Post '[JSON] BatchCreateNotesResponse
+
+-- | Creates new notes in batch.
+--
+-- /See:/ 'projectsNotesBatchCreate' smart constructor.
+data ProjectsNotesBatchCreate = ProjectsNotesBatchCreate'
+    { _pnbcParent         :: !Text
+    , _pnbcXgafv          :: !(Maybe Xgafv)
+    , _pnbcUploadProtocol :: !(Maybe Text)
+    , _pnbcAccessToken    :: !(Maybe Text)
+    , _pnbcUploadType     :: !(Maybe Text)
+    , _pnbcPayload        :: !BatchCreateNotesRequest
+    , _pnbcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesBatchCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pnbcParent'
+--
+-- * 'pnbcXgafv'
+--
+-- * 'pnbcUploadProtocol'
+--
+-- * 'pnbcAccessToken'
+--
+-- * 'pnbcUploadType'
+--
+-- * 'pnbcPayload'
+--
+-- * 'pnbcCallback'
+projectsNotesBatchCreate
+    :: Text -- ^ 'pnbcParent'
+    -> BatchCreateNotesRequest -- ^ 'pnbcPayload'
+    -> ProjectsNotesBatchCreate
+projectsNotesBatchCreate pPnbcParent_ pPnbcPayload_ =
+    ProjectsNotesBatchCreate'
+    { _pnbcParent = pPnbcParent_
+    , _pnbcXgafv = Nothing
+    , _pnbcUploadProtocol = Nothing
+    , _pnbcAccessToken = Nothing
+    , _pnbcUploadType = Nothing
+    , _pnbcPayload = pPnbcPayload_
+    , _pnbcCallback = Nothing
+    }
+
+-- | The name of the project in the form of \`projects\/[PROJECT_ID]\`, under
+-- which the notes are to be created.
+pnbcParent :: Lens' ProjectsNotesBatchCreate Text
+pnbcParent
+  = lens _pnbcParent (\ s a -> s{_pnbcParent = a})
+
+-- | V1 error format.
+pnbcXgafv :: Lens' ProjectsNotesBatchCreate (Maybe Xgafv)
+pnbcXgafv
+  = lens _pnbcXgafv (\ s a -> s{_pnbcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pnbcUploadProtocol :: Lens' ProjectsNotesBatchCreate (Maybe Text)
+pnbcUploadProtocol
+  = lens _pnbcUploadProtocol
+      (\ s a -> s{_pnbcUploadProtocol = a})
+
+-- | OAuth access token.
+pnbcAccessToken :: Lens' ProjectsNotesBatchCreate (Maybe Text)
+pnbcAccessToken
+  = lens _pnbcAccessToken
+      (\ s a -> s{_pnbcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pnbcUploadType :: Lens' ProjectsNotesBatchCreate (Maybe Text)
+pnbcUploadType
+  = lens _pnbcUploadType
+      (\ s a -> s{_pnbcUploadType = a})
+
+-- | Multipart request metadata.
+pnbcPayload :: Lens' ProjectsNotesBatchCreate BatchCreateNotesRequest
+pnbcPayload
+  = lens _pnbcPayload (\ s a -> s{_pnbcPayload = a})
+
+-- | JSONP
+pnbcCallback :: Lens' ProjectsNotesBatchCreate (Maybe Text)
+pnbcCallback
+  = lens _pnbcCallback (\ s a -> s{_pnbcCallback = a})
+
+instance GoogleRequest ProjectsNotesBatchCreate where
+        type Rs ProjectsNotesBatchCreate =
+             BatchCreateNotesResponse
+        type Scopes ProjectsNotesBatchCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesBatchCreate'{..}
+          = go _pnbcParent _pnbcXgafv _pnbcUploadProtocol
+              _pnbcAccessToken
+              _pnbcUploadType
+              _pnbcCallback
+              (Just AltJSON)
+              _pnbcPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesBatchCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Create.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Create.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new note.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.create@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Create
+    (
+    -- * REST Resource
+      ProjectsNotesCreateResource
+
+    -- * Creating a Request
+    , projectsNotesCreate
+    , ProjectsNotesCreate
+
+    -- * Request Lenses
+    , pncParent
+    , pncXgafv
+    , pncUploadProtocol
+    , pncAccessToken
+    , pncUploadType
+    , pncPayload
+    , pncNoteId
+    , pncCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.create@ method which the
+-- 'ProjectsNotesCreate' request conforms to.
+type ProjectsNotesCreateResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "notes" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "noteId" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Note :> Post '[JSON] Note
+
+-- | Creates a new note.
+--
+-- /See:/ 'projectsNotesCreate' smart constructor.
+data ProjectsNotesCreate = ProjectsNotesCreate'
+    { _pncParent         :: !Text
+    , _pncXgafv          :: !(Maybe Xgafv)
+    , _pncUploadProtocol :: !(Maybe Text)
+    , _pncAccessToken    :: !(Maybe Text)
+    , _pncUploadType     :: !(Maybe Text)
+    , _pncPayload        :: !Note
+    , _pncNoteId         :: !(Maybe Text)
+    , _pncCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pncParent'
+--
+-- * 'pncXgafv'
+--
+-- * 'pncUploadProtocol'
+--
+-- * 'pncAccessToken'
+--
+-- * 'pncUploadType'
+--
+-- * 'pncPayload'
+--
+-- * 'pncNoteId'
+--
+-- * 'pncCallback'
+projectsNotesCreate
+    :: Text -- ^ 'pncParent'
+    -> Note -- ^ 'pncPayload'
+    -> ProjectsNotesCreate
+projectsNotesCreate pPncParent_ pPncPayload_ =
+    ProjectsNotesCreate'
+    { _pncParent = pPncParent_
+    , _pncXgafv = Nothing
+    , _pncUploadProtocol = Nothing
+    , _pncAccessToken = Nothing
+    , _pncUploadType = Nothing
+    , _pncPayload = pPncPayload_
+    , _pncNoteId = Nothing
+    , _pncCallback = Nothing
+    }
+
+-- | The name of the project in the form of \`projects\/[PROJECT_ID]\`, under
+-- which the note is to be created.
+pncParent :: Lens' ProjectsNotesCreate Text
+pncParent
+  = lens _pncParent (\ s a -> s{_pncParent = a})
+
+-- | V1 error format.
+pncXgafv :: Lens' ProjectsNotesCreate (Maybe Xgafv)
+pncXgafv = lens _pncXgafv (\ s a -> s{_pncXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pncUploadProtocol :: Lens' ProjectsNotesCreate (Maybe Text)
+pncUploadProtocol
+  = lens _pncUploadProtocol
+      (\ s a -> s{_pncUploadProtocol = a})
+
+-- | OAuth access token.
+pncAccessToken :: Lens' ProjectsNotesCreate (Maybe Text)
+pncAccessToken
+  = lens _pncAccessToken
+      (\ s a -> s{_pncAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pncUploadType :: Lens' ProjectsNotesCreate (Maybe Text)
+pncUploadType
+  = lens _pncUploadType
+      (\ s a -> s{_pncUploadType = a})
+
+-- | Multipart request metadata.
+pncPayload :: Lens' ProjectsNotesCreate Note
+pncPayload
+  = lens _pncPayload (\ s a -> s{_pncPayload = a})
+
+-- | The ID to use for this note.
+pncNoteId :: Lens' ProjectsNotesCreate (Maybe Text)
+pncNoteId
+  = lens _pncNoteId (\ s a -> s{_pncNoteId = a})
+
+-- | JSONP
+pncCallback :: Lens' ProjectsNotesCreate (Maybe Text)
+pncCallback
+  = lens _pncCallback (\ s a -> s{_pncCallback = a})
+
+instance GoogleRequest ProjectsNotesCreate where
+        type Rs ProjectsNotesCreate = Note
+        type Scopes ProjectsNotesCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesCreate'{..}
+          = go _pncParent _pncXgafv _pncUploadProtocol
+              _pncAccessToken
+              _pncUploadType
+              _pncNoteId
+              _pncCallback
+              (Just AltJSON)
+              _pncPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Delete.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Delete.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified note.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.delete@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Delete
+    (
+    -- * REST Resource
+      ProjectsNotesDeleteResource
+
+    -- * Creating a Request
+    , projectsNotesDelete
+    , ProjectsNotesDelete
+
+    -- * Request Lenses
+    , pndXgafv
+    , pndUploadProtocol
+    , pndAccessToken
+    , pndUploadType
+    , pndName
+    , pndCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.delete@ method which the
+-- 'ProjectsNotesDelete' request conforms to.
+type ProjectsNotesDeleteResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+
+-- | Deletes the specified note.
+--
+-- /See:/ 'projectsNotesDelete' smart constructor.
+data ProjectsNotesDelete = ProjectsNotesDelete'
+    { _pndXgafv          :: !(Maybe Xgafv)
+    , _pndUploadProtocol :: !(Maybe Text)
+    , _pndAccessToken    :: !(Maybe Text)
+    , _pndUploadType     :: !(Maybe Text)
+    , _pndName           :: !Text
+    , _pndCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pndXgafv'
+--
+-- * 'pndUploadProtocol'
+--
+-- * 'pndAccessToken'
+--
+-- * 'pndUploadType'
+--
+-- * 'pndName'
+--
+-- * 'pndCallback'
+projectsNotesDelete
+    :: Text -- ^ 'pndName'
+    -> ProjectsNotesDelete
+projectsNotesDelete pPndName_ =
+    ProjectsNotesDelete'
+    { _pndXgafv = Nothing
+    , _pndUploadProtocol = Nothing
+    , _pndAccessToken = Nothing
+    , _pndUploadType = Nothing
+    , _pndName = pPndName_
+    , _pndCallback = Nothing
+    }
+
+-- | V1 error format.
+pndXgafv :: Lens' ProjectsNotesDelete (Maybe Xgafv)
+pndXgafv = lens _pndXgafv (\ s a -> s{_pndXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pndUploadProtocol :: Lens' ProjectsNotesDelete (Maybe Text)
+pndUploadProtocol
+  = lens _pndUploadProtocol
+      (\ s a -> s{_pndUploadProtocol = a})
+
+-- | OAuth access token.
+pndAccessToken :: Lens' ProjectsNotesDelete (Maybe Text)
+pndAccessToken
+  = lens _pndAccessToken
+      (\ s a -> s{_pndAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pndUploadType :: Lens' ProjectsNotesDelete (Maybe Text)
+pndUploadType
+  = lens _pndUploadType
+      (\ s a -> s{_pndUploadType = a})
+
+-- | The name of the note in the form of
+-- \`projects\/[PROVIDER_ID]\/notes\/[NOTE_ID]\`.
+pndName :: Lens' ProjectsNotesDelete Text
+pndName = lens _pndName (\ s a -> s{_pndName = a})
+
+-- | JSONP
+pndCallback :: Lens' ProjectsNotesDelete (Maybe Text)
+pndCallback
+  = lens _pndCallback (\ s a -> s{_pndCallback = a})
+
+instance GoogleRequest ProjectsNotesDelete where
+        type Rs ProjectsNotesDelete = Empty
+        type Scopes ProjectsNotesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesDelete'{..}
+          = go _pndName _pndXgafv _pndUploadProtocol
+              _pndAccessToken
+              _pndUploadType
+              _pndCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Get.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Get.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the specified note.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.get@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Get
+    (
+    -- * REST Resource
+      ProjectsNotesGetResource
+
+    -- * Creating a Request
+    , projectsNotesGet
+    , ProjectsNotesGet
+
+    -- * Request Lenses
+    , pngXgafv
+    , pngUploadProtocol
+    , pngAccessToken
+    , pngUploadType
+    , pngName
+    , pngCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.get@ method which the
+-- 'ProjectsNotesGet' request conforms to.
+type ProjectsNotesGetResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Note
+
+-- | Gets the specified note.
+--
+-- /See:/ 'projectsNotesGet' smart constructor.
+data ProjectsNotesGet = ProjectsNotesGet'
+    { _pngXgafv          :: !(Maybe Xgafv)
+    , _pngUploadProtocol :: !(Maybe Text)
+    , _pngAccessToken    :: !(Maybe Text)
+    , _pngUploadType     :: !(Maybe Text)
+    , _pngName           :: !Text
+    , _pngCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pngXgafv'
+--
+-- * 'pngUploadProtocol'
+--
+-- * 'pngAccessToken'
+--
+-- * 'pngUploadType'
+--
+-- * 'pngName'
+--
+-- * 'pngCallback'
+projectsNotesGet
+    :: Text -- ^ 'pngName'
+    -> ProjectsNotesGet
+projectsNotesGet pPngName_ =
+    ProjectsNotesGet'
+    { _pngXgafv = Nothing
+    , _pngUploadProtocol = Nothing
+    , _pngAccessToken = Nothing
+    , _pngUploadType = Nothing
+    , _pngName = pPngName_
+    , _pngCallback = Nothing
+    }
+
+-- | V1 error format.
+pngXgafv :: Lens' ProjectsNotesGet (Maybe Xgafv)
+pngXgafv = lens _pngXgafv (\ s a -> s{_pngXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pngUploadProtocol :: Lens' ProjectsNotesGet (Maybe Text)
+pngUploadProtocol
+  = lens _pngUploadProtocol
+      (\ s a -> s{_pngUploadProtocol = a})
+
+-- | OAuth access token.
+pngAccessToken :: Lens' ProjectsNotesGet (Maybe Text)
+pngAccessToken
+  = lens _pngAccessToken
+      (\ s a -> s{_pngAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pngUploadType :: Lens' ProjectsNotesGet (Maybe Text)
+pngUploadType
+  = lens _pngUploadType
+      (\ s a -> s{_pngUploadType = a})
+
+-- | The name of the note in the form of
+-- \`projects\/[PROVIDER_ID]\/notes\/[NOTE_ID]\`.
+pngName :: Lens' ProjectsNotesGet Text
+pngName = lens _pngName (\ s a -> s{_pngName = a})
+
+-- | JSONP
+pngCallback :: Lens' ProjectsNotesGet (Maybe Text)
+pngCallback
+  = lens _pngCallback (\ s a -> s{_pngCallback = a})
+
+instance GoogleRequest ProjectsNotesGet where
+        type Rs ProjectsNotesGet = Note
+        type Scopes ProjectsNotesGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesGet'{..}
+          = go _pngName _pngXgafv _pngUploadProtocol
+              _pngAccessToken
+              _pngUploadType
+              _pngCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/GetIAMPolicy.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/GetIAMPolicy.hs
@@ -0,0 +1,176 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a note or an occurrence resource.
+-- Requires \`containeranalysis.notes.setIamPolicy\` or
+-- \`containeranalysis.occurrences.setIamPolicy\` permission if the
+-- resource is a note or occurrence, respectively. The resource takes the
+-- format \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.getIamPolicy@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsNotesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsNotesGetIAMPolicy
+    , ProjectsNotesGetIAMPolicy
+
+    -- * Request Lenses
+    , pngipXgafv
+    , pngipUploadProtocol
+    , pngipAccessToken
+    , pngipUploadType
+    , pngipPayload
+    , pngipResource
+    , pngipCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.getIamPolicy@ method which the
+-- 'ProjectsNotesGetIAMPolicy' request conforms to.
+type ProjectsNotesGetIAMPolicyResource =
+     "v1beta1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for a note or an occurrence resource.
+-- Requires \`containeranalysis.notes.setIamPolicy\` or
+-- \`containeranalysis.occurrences.setIamPolicy\` permission if the
+-- resource is a note or occurrence, respectively. The resource takes the
+-- format \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ 'projectsNotesGetIAMPolicy' smart constructor.
+data ProjectsNotesGetIAMPolicy = ProjectsNotesGetIAMPolicy'
+    { _pngipXgafv          :: !(Maybe Xgafv)
+    , _pngipUploadProtocol :: !(Maybe Text)
+    , _pngipAccessToken    :: !(Maybe Text)
+    , _pngipUploadType     :: !(Maybe Text)
+    , _pngipPayload        :: !GetIAMPolicyRequest
+    , _pngipResource       :: !Text
+    , _pngipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pngipXgafv'
+--
+-- * 'pngipUploadProtocol'
+--
+-- * 'pngipAccessToken'
+--
+-- * 'pngipUploadType'
+--
+-- * 'pngipPayload'
+--
+-- * 'pngipResource'
+--
+-- * 'pngipCallback'
+projectsNotesGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'pngipPayload'
+    -> Text -- ^ 'pngipResource'
+    -> ProjectsNotesGetIAMPolicy
+projectsNotesGetIAMPolicy pPngipPayload_ pPngipResource_ =
+    ProjectsNotesGetIAMPolicy'
+    { _pngipXgafv = Nothing
+    , _pngipUploadProtocol = Nothing
+    , _pngipAccessToken = Nothing
+    , _pngipUploadType = Nothing
+    , _pngipPayload = pPngipPayload_
+    , _pngipResource = pPngipResource_
+    , _pngipCallback = Nothing
+    }
+
+-- | V1 error format.
+pngipXgafv :: Lens' ProjectsNotesGetIAMPolicy (Maybe Xgafv)
+pngipXgafv
+  = lens _pngipXgafv (\ s a -> s{_pngipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pngipUploadProtocol :: Lens' ProjectsNotesGetIAMPolicy (Maybe Text)
+pngipUploadProtocol
+  = lens _pngipUploadProtocol
+      (\ s a -> s{_pngipUploadProtocol = a})
+
+-- | OAuth access token.
+pngipAccessToken :: Lens' ProjectsNotesGetIAMPolicy (Maybe Text)
+pngipAccessToken
+  = lens _pngipAccessToken
+      (\ s a -> s{_pngipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pngipUploadType :: Lens' ProjectsNotesGetIAMPolicy (Maybe Text)
+pngipUploadType
+  = lens _pngipUploadType
+      (\ s a -> s{_pngipUploadType = a})
+
+-- | Multipart request metadata.
+pngipPayload :: Lens' ProjectsNotesGetIAMPolicy GetIAMPolicyRequest
+pngipPayload
+  = lens _pngipPayload (\ s a -> s{_pngipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+pngipResource :: Lens' ProjectsNotesGetIAMPolicy Text
+pngipResource
+  = lens _pngipResource
+      (\ s a -> s{_pngipResource = a})
+
+-- | JSONP
+pngipCallback :: Lens' ProjectsNotesGetIAMPolicy (Maybe Text)
+pngipCallback
+  = lens _pngipCallback
+      (\ s a -> s{_pngipCallback = a})
+
+instance GoogleRequest ProjectsNotesGetIAMPolicy
+         where
+        type Rs ProjectsNotesGetIAMPolicy = Policy
+        type Scopes ProjectsNotesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesGetIAMPolicy'{..}
+          = go _pngipResource _pngipXgafv _pngipUploadProtocol
+              _pngipAccessToken
+              _pngipUploadType
+              _pngipCallback
+              (Just AltJSON)
+              _pngipPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/List.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/List.hs
@@ -0,0 +1,186 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists notes for the specified project.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.list@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.List
+    (
+    -- * REST Resource
+      ProjectsNotesListResource
+
+    -- * Creating a Request
+    , projectsNotesList
+    , ProjectsNotesList
+
+    -- * Request Lenses
+    , pnlParent
+    , pnlXgafv
+    , pnlUploadProtocol
+    , pnlAccessToken
+    , pnlUploadType
+    , pnlFilter
+    , pnlPageToken
+    , pnlPageSize
+    , pnlCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.list@ method which the
+-- 'ProjectsNotesList' request conforms to.
+type ProjectsNotesListResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "notes" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListNotesResponse
+
+-- | Lists notes for the specified project.
+--
+-- /See:/ 'projectsNotesList' smart constructor.
+data ProjectsNotesList = ProjectsNotesList'
+    { _pnlParent         :: !Text
+    , _pnlXgafv          :: !(Maybe Xgafv)
+    , _pnlUploadProtocol :: !(Maybe Text)
+    , _pnlAccessToken    :: !(Maybe Text)
+    , _pnlUploadType     :: !(Maybe Text)
+    , _pnlFilter         :: !(Maybe Text)
+    , _pnlPageToken      :: !(Maybe Text)
+    , _pnlPageSize       :: !(Maybe (Textual Int32))
+    , _pnlCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pnlParent'
+--
+-- * 'pnlXgafv'
+--
+-- * 'pnlUploadProtocol'
+--
+-- * 'pnlAccessToken'
+--
+-- * 'pnlUploadType'
+--
+-- * 'pnlFilter'
+--
+-- * 'pnlPageToken'
+--
+-- * 'pnlPageSize'
+--
+-- * 'pnlCallback'
+projectsNotesList
+    :: Text -- ^ 'pnlParent'
+    -> ProjectsNotesList
+projectsNotesList pPnlParent_ =
+    ProjectsNotesList'
+    { _pnlParent = pPnlParent_
+    , _pnlXgafv = Nothing
+    , _pnlUploadProtocol = Nothing
+    , _pnlAccessToken = Nothing
+    , _pnlUploadType = Nothing
+    , _pnlFilter = Nothing
+    , _pnlPageToken = Nothing
+    , _pnlPageSize = Nothing
+    , _pnlCallback = Nothing
+    }
+
+-- | The name of the project to list notes for in the form of
+-- \`projects\/[PROJECT_ID]\`.
+pnlParent :: Lens' ProjectsNotesList Text
+pnlParent
+  = lens _pnlParent (\ s a -> s{_pnlParent = a})
+
+-- | V1 error format.
+pnlXgafv :: Lens' ProjectsNotesList (Maybe Xgafv)
+pnlXgafv = lens _pnlXgafv (\ s a -> s{_pnlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pnlUploadProtocol :: Lens' ProjectsNotesList (Maybe Text)
+pnlUploadProtocol
+  = lens _pnlUploadProtocol
+      (\ s a -> s{_pnlUploadProtocol = a})
+
+-- | OAuth access token.
+pnlAccessToken :: Lens' ProjectsNotesList (Maybe Text)
+pnlAccessToken
+  = lens _pnlAccessToken
+      (\ s a -> s{_pnlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pnlUploadType :: Lens' ProjectsNotesList (Maybe Text)
+pnlUploadType
+  = lens _pnlUploadType
+      (\ s a -> s{_pnlUploadType = a})
+
+-- | The filter expression.
+pnlFilter :: Lens' ProjectsNotesList (Maybe Text)
+pnlFilter
+  = lens _pnlFilter (\ s a -> s{_pnlFilter = a})
+
+-- | Token to provide to skip to a particular spot in the list.
+pnlPageToken :: Lens' ProjectsNotesList (Maybe Text)
+pnlPageToken
+  = lens _pnlPageToken (\ s a -> s{_pnlPageToken = a})
+
+-- | Number of notes to return in the list. Must be positive. Max allowed
+-- page size is 1000. If not specified, page size defaults to 20.
+pnlPageSize :: Lens' ProjectsNotesList (Maybe Int32)
+pnlPageSize
+  = lens _pnlPageSize (\ s a -> s{_pnlPageSize = a}) .
+      mapping _Coerce
+
+-- | JSONP
+pnlCallback :: Lens' ProjectsNotesList (Maybe Text)
+pnlCallback
+  = lens _pnlCallback (\ s a -> s{_pnlCallback = a})
+
+instance GoogleRequest ProjectsNotesList where
+        type Rs ProjectsNotesList = ListNotesResponse
+        type Scopes ProjectsNotesList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesList'{..}
+          = go _pnlParent _pnlXgafv _pnlUploadProtocol
+              _pnlAccessToken
+              _pnlUploadType
+              _pnlFilter
+              _pnlPageToken
+              _pnlPageSize
+              _pnlCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Occurrences/List.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Occurrences/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Occurrences/List.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.Occurrences.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists occurrences referencing the specified note. Provider projects can
+-- use this method to get all occurrences across consumer projects
+-- referencing the specified note.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.occurrences.list@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Occurrences.List
+    (
+    -- * REST Resource
+      ProjectsNotesOccurrencesListResource
+
+    -- * Creating a Request
+    , projectsNotesOccurrencesList
+    , ProjectsNotesOccurrencesList
+
+    -- * Request Lenses
+    , pnolXgafv
+    , pnolUploadProtocol
+    , pnolAccessToken
+    , pnolUploadType
+    , pnolName
+    , pnolFilter
+    , pnolPageToken
+    , pnolPageSize
+    , pnolCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.occurrences.list@ method which the
+-- 'ProjectsNotesOccurrencesList' request conforms to.
+type ProjectsNotesOccurrencesListResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         "occurrences" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListNoteOccurrencesResponse
+
+-- | Lists occurrences referencing the specified note. Provider projects can
+-- use this method to get all occurrences across consumer projects
+-- referencing the specified note.
+--
+-- /See:/ 'projectsNotesOccurrencesList' smart constructor.
+data ProjectsNotesOccurrencesList = ProjectsNotesOccurrencesList'
+    { _pnolXgafv          :: !(Maybe Xgafv)
+    , _pnolUploadProtocol :: !(Maybe Text)
+    , _pnolAccessToken    :: !(Maybe Text)
+    , _pnolUploadType     :: !(Maybe Text)
+    , _pnolName           :: !Text
+    , _pnolFilter         :: !(Maybe Text)
+    , _pnolPageToken      :: !(Maybe Text)
+    , _pnolPageSize       :: !(Maybe (Textual Int32))
+    , _pnolCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesOccurrencesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pnolXgafv'
+--
+-- * 'pnolUploadProtocol'
+--
+-- * 'pnolAccessToken'
+--
+-- * 'pnolUploadType'
+--
+-- * 'pnolName'
+--
+-- * 'pnolFilter'
+--
+-- * 'pnolPageToken'
+--
+-- * 'pnolPageSize'
+--
+-- * 'pnolCallback'
+projectsNotesOccurrencesList
+    :: Text -- ^ 'pnolName'
+    -> ProjectsNotesOccurrencesList
+projectsNotesOccurrencesList pPnolName_ =
+    ProjectsNotesOccurrencesList'
+    { _pnolXgafv = Nothing
+    , _pnolUploadProtocol = Nothing
+    , _pnolAccessToken = Nothing
+    , _pnolUploadType = Nothing
+    , _pnolName = pPnolName_
+    , _pnolFilter = Nothing
+    , _pnolPageToken = Nothing
+    , _pnolPageSize = Nothing
+    , _pnolCallback = Nothing
+    }
+
+-- | V1 error format.
+pnolXgafv :: Lens' ProjectsNotesOccurrencesList (Maybe Xgafv)
+pnolXgafv
+  = lens _pnolXgafv (\ s a -> s{_pnolXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pnolUploadProtocol :: Lens' ProjectsNotesOccurrencesList (Maybe Text)
+pnolUploadProtocol
+  = lens _pnolUploadProtocol
+      (\ s a -> s{_pnolUploadProtocol = a})
+
+-- | OAuth access token.
+pnolAccessToken :: Lens' ProjectsNotesOccurrencesList (Maybe Text)
+pnolAccessToken
+  = lens _pnolAccessToken
+      (\ s a -> s{_pnolAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pnolUploadType :: Lens' ProjectsNotesOccurrencesList (Maybe Text)
+pnolUploadType
+  = lens _pnolUploadType
+      (\ s a -> s{_pnolUploadType = a})
+
+-- | The name of the note to list occurrences for in the form of
+-- \`projects\/[PROVIDER_ID]\/notes\/[NOTE_ID]\`.
+pnolName :: Lens' ProjectsNotesOccurrencesList Text
+pnolName = lens _pnolName (\ s a -> s{_pnolName = a})
+
+-- | The filter expression.
+pnolFilter :: Lens' ProjectsNotesOccurrencesList (Maybe Text)
+pnolFilter
+  = lens _pnolFilter (\ s a -> s{_pnolFilter = a})
+
+-- | Token to provide to skip to a particular spot in the list.
+pnolPageToken :: Lens' ProjectsNotesOccurrencesList (Maybe Text)
+pnolPageToken
+  = lens _pnolPageToken
+      (\ s a -> s{_pnolPageToken = a})
+
+-- | Number of occurrences to return in the list.
+pnolPageSize :: Lens' ProjectsNotesOccurrencesList (Maybe Int32)
+pnolPageSize
+  = lens _pnolPageSize (\ s a -> s{_pnolPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+pnolCallback :: Lens' ProjectsNotesOccurrencesList (Maybe Text)
+pnolCallback
+  = lens _pnolCallback (\ s a -> s{_pnolCallback = a})
+
+instance GoogleRequest ProjectsNotesOccurrencesList
+         where
+        type Rs ProjectsNotesOccurrencesList =
+             ListNoteOccurrencesResponse
+        type Scopes ProjectsNotesOccurrencesList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesOccurrencesList'{..}
+          = go _pnolName _pnolXgafv _pnolUploadProtocol
+              _pnolAccessToken
+              _pnolUploadType
+              _pnolFilter
+              _pnolPageToken
+              _pnolPageSize
+              _pnolCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesOccurrencesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Patch.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/Patch.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.Patch
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified note.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.patch@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.Patch
+    (
+    -- * REST Resource
+      ProjectsNotesPatchResource
+
+    -- * Creating a Request
+    , projectsNotesPatch
+    , ProjectsNotesPatch
+
+    -- * Request Lenses
+    , pnpXgafv
+    , pnpUploadProtocol
+    , pnpUpdateMask
+    , pnpAccessToken
+    , pnpUploadType
+    , pnpPayload
+    , pnpName
+    , pnpCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.patch@ method which the
+-- 'ProjectsNotesPatch' request conforms to.
+type ProjectsNotesPatchResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "updateMask" GFieldMask :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Note :> Patch '[JSON] Note
+
+-- | Updates the specified note.
+--
+-- /See:/ 'projectsNotesPatch' smart constructor.
+data ProjectsNotesPatch = ProjectsNotesPatch'
+    { _pnpXgafv          :: !(Maybe Xgafv)
+    , _pnpUploadProtocol :: !(Maybe Text)
+    , _pnpUpdateMask     :: !(Maybe GFieldMask)
+    , _pnpAccessToken    :: !(Maybe Text)
+    , _pnpUploadType     :: !(Maybe Text)
+    , _pnpPayload        :: !Note
+    , _pnpName           :: !Text
+    , _pnpCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pnpXgafv'
+--
+-- * 'pnpUploadProtocol'
+--
+-- * 'pnpUpdateMask'
+--
+-- * 'pnpAccessToken'
+--
+-- * 'pnpUploadType'
+--
+-- * 'pnpPayload'
+--
+-- * 'pnpName'
+--
+-- * 'pnpCallback'
+projectsNotesPatch
+    :: Note -- ^ 'pnpPayload'
+    -> Text -- ^ 'pnpName'
+    -> ProjectsNotesPatch
+projectsNotesPatch pPnpPayload_ pPnpName_ =
+    ProjectsNotesPatch'
+    { _pnpXgafv = Nothing
+    , _pnpUploadProtocol = Nothing
+    , _pnpUpdateMask = Nothing
+    , _pnpAccessToken = Nothing
+    , _pnpUploadType = Nothing
+    , _pnpPayload = pPnpPayload_
+    , _pnpName = pPnpName_
+    , _pnpCallback = Nothing
+    }
+
+-- | V1 error format.
+pnpXgafv :: Lens' ProjectsNotesPatch (Maybe Xgafv)
+pnpXgafv = lens _pnpXgafv (\ s a -> s{_pnpXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pnpUploadProtocol :: Lens' ProjectsNotesPatch (Maybe Text)
+pnpUploadProtocol
+  = lens _pnpUploadProtocol
+      (\ s a -> s{_pnpUploadProtocol = a})
+
+-- | The fields to update.
+pnpUpdateMask :: Lens' ProjectsNotesPatch (Maybe GFieldMask)
+pnpUpdateMask
+  = lens _pnpUpdateMask
+      (\ s a -> s{_pnpUpdateMask = a})
+
+-- | OAuth access token.
+pnpAccessToken :: Lens' ProjectsNotesPatch (Maybe Text)
+pnpAccessToken
+  = lens _pnpAccessToken
+      (\ s a -> s{_pnpAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pnpUploadType :: Lens' ProjectsNotesPatch (Maybe Text)
+pnpUploadType
+  = lens _pnpUploadType
+      (\ s a -> s{_pnpUploadType = a})
+
+-- | Multipart request metadata.
+pnpPayload :: Lens' ProjectsNotesPatch Note
+pnpPayload
+  = lens _pnpPayload (\ s a -> s{_pnpPayload = a})
+
+-- | The name of the note in the form of
+-- \`projects\/[PROVIDER_ID]\/notes\/[NOTE_ID]\`.
+pnpName :: Lens' ProjectsNotesPatch Text
+pnpName = lens _pnpName (\ s a -> s{_pnpName = a})
+
+-- | JSONP
+pnpCallback :: Lens' ProjectsNotesPatch (Maybe Text)
+pnpCallback
+  = lens _pnpCallback (\ s a -> s{_pnpCallback = a})
+
+instance GoogleRequest ProjectsNotesPatch where
+        type Rs ProjectsNotesPatch = Note
+        type Scopes ProjectsNotesPatch =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesPatch'{..}
+          = go _pnpName _pnpXgafv _pnpUploadProtocol
+              _pnpUpdateMask
+              _pnpAccessToken
+              _pnpUploadType
+              _pnpCallback
+              (Just AltJSON)
+              _pnpPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/SetIAMPolicy.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/SetIAMPolicy.hs
@@ -0,0 +1,176 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.SetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the access control policy on the specified note or occurrence.
+-- Requires \`containeranalysis.notes.setIamPolicy\` or
+-- \`containeranalysis.occurrences.setIamPolicy\` permission if the
+-- resource is a note or an occurrence, respectively. The resource takes
+-- the format \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.setIamPolicy@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsNotesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsNotesSetIAMPolicy
+    , ProjectsNotesSetIAMPolicy
+
+    -- * Request Lenses
+    , pnsipXgafv
+    , pnsipUploadProtocol
+    , pnsipAccessToken
+    , pnsipUploadType
+    , pnsipPayload
+    , pnsipResource
+    , pnsipCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.setIamPolicy@ method which the
+-- 'ProjectsNotesSetIAMPolicy' request conforms to.
+type ProjectsNotesSetIAMPolicyResource =
+     "v1beta1" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified note or occurrence.
+-- Requires \`containeranalysis.notes.setIamPolicy\` or
+-- \`containeranalysis.occurrences.setIamPolicy\` permission if the
+-- resource is a note or an occurrence, respectively. The resource takes
+-- the format \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ 'projectsNotesSetIAMPolicy' smart constructor.
+data ProjectsNotesSetIAMPolicy = ProjectsNotesSetIAMPolicy'
+    { _pnsipXgafv          :: !(Maybe Xgafv)
+    , _pnsipUploadProtocol :: !(Maybe Text)
+    , _pnsipAccessToken    :: !(Maybe Text)
+    , _pnsipUploadType     :: !(Maybe Text)
+    , _pnsipPayload        :: !SetIAMPolicyRequest
+    , _pnsipResource       :: !Text
+    , _pnsipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pnsipXgafv'
+--
+-- * 'pnsipUploadProtocol'
+--
+-- * 'pnsipAccessToken'
+--
+-- * 'pnsipUploadType'
+--
+-- * 'pnsipPayload'
+--
+-- * 'pnsipResource'
+--
+-- * 'pnsipCallback'
+projectsNotesSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'pnsipPayload'
+    -> Text -- ^ 'pnsipResource'
+    -> ProjectsNotesSetIAMPolicy
+projectsNotesSetIAMPolicy pPnsipPayload_ pPnsipResource_ =
+    ProjectsNotesSetIAMPolicy'
+    { _pnsipXgafv = Nothing
+    , _pnsipUploadProtocol = Nothing
+    , _pnsipAccessToken = Nothing
+    , _pnsipUploadType = Nothing
+    , _pnsipPayload = pPnsipPayload_
+    , _pnsipResource = pPnsipResource_
+    , _pnsipCallback = Nothing
+    }
+
+-- | V1 error format.
+pnsipXgafv :: Lens' ProjectsNotesSetIAMPolicy (Maybe Xgafv)
+pnsipXgafv
+  = lens _pnsipXgafv (\ s a -> s{_pnsipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pnsipUploadProtocol :: Lens' ProjectsNotesSetIAMPolicy (Maybe Text)
+pnsipUploadProtocol
+  = lens _pnsipUploadProtocol
+      (\ s a -> s{_pnsipUploadProtocol = a})
+
+-- | OAuth access token.
+pnsipAccessToken :: Lens' ProjectsNotesSetIAMPolicy (Maybe Text)
+pnsipAccessToken
+  = lens _pnsipAccessToken
+      (\ s a -> s{_pnsipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pnsipUploadType :: Lens' ProjectsNotesSetIAMPolicy (Maybe Text)
+pnsipUploadType
+  = lens _pnsipUploadType
+      (\ s a -> s{_pnsipUploadType = a})
+
+-- | Multipart request metadata.
+pnsipPayload :: Lens' ProjectsNotesSetIAMPolicy SetIAMPolicyRequest
+pnsipPayload
+  = lens _pnsipPayload (\ s a -> s{_pnsipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+pnsipResource :: Lens' ProjectsNotesSetIAMPolicy Text
+pnsipResource
+  = lens _pnsipResource
+      (\ s a -> s{_pnsipResource = a})
+
+-- | JSONP
+pnsipCallback :: Lens' ProjectsNotesSetIAMPolicy (Maybe Text)
+pnsipCallback
+  = lens _pnsipCallback
+      (\ s a -> s{_pnsipCallback = a})
+
+instance GoogleRequest ProjectsNotesSetIAMPolicy
+         where
+        type Rs ProjectsNotesSetIAMPolicy = Policy
+        type Scopes ProjectsNotesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesSetIAMPolicy'{..}
+          = go _pnsipResource _pnsipXgafv _pnsipUploadProtocol
+              _pnsipAccessToken
+              _pnsipUploadType
+              _pnsipCallback
+              (Just AltJSON)
+              _pnsipPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsNotesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/TestIAMPermissions.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Notes/TestIAMPermissions.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Notes.TestIAMPermissions
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the permissions that a caller has on the specified note or
+-- occurrence. Requires list permission on the project (for example,
+-- \`containeranalysis.notes.list\`). The resource takes the format
+-- \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.notes.testIamPermissions@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Notes.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsNotesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsNotesTestIAMPermissions
+    , ProjectsNotesTestIAMPermissions
+
+    -- * Request Lenses
+    , pntipXgafv
+    , pntipUploadProtocol
+    , pntipAccessToken
+    , pntipUploadType
+    , pntipPayload
+    , pntipResource
+    , pntipCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.notes.testIamPermissions@ method which the
+-- 'ProjectsNotesTestIAMPermissions' request conforms to.
+type ProjectsNotesTestIAMPermissionsResource =
+     "v1beta1" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns the permissions that a caller has on the specified note or
+-- occurrence. Requires list permission on the project (for example,
+-- \`containeranalysis.notes.list\`). The resource takes the format
+-- \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ 'projectsNotesTestIAMPermissions' smart constructor.
+data ProjectsNotesTestIAMPermissions = ProjectsNotesTestIAMPermissions'
+    { _pntipXgafv          :: !(Maybe Xgafv)
+    , _pntipUploadProtocol :: !(Maybe Text)
+    , _pntipAccessToken    :: !(Maybe Text)
+    , _pntipUploadType     :: !(Maybe Text)
+    , _pntipPayload        :: !TestIAMPermissionsRequest
+    , _pntipResource       :: !Text
+    , _pntipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsNotesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pntipXgafv'
+--
+-- * 'pntipUploadProtocol'
+--
+-- * 'pntipAccessToken'
+--
+-- * 'pntipUploadType'
+--
+-- * 'pntipPayload'
+--
+-- * 'pntipResource'
+--
+-- * 'pntipCallback'
+projectsNotesTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'pntipPayload'
+    -> Text -- ^ 'pntipResource'
+    -> ProjectsNotesTestIAMPermissions
+projectsNotesTestIAMPermissions pPntipPayload_ pPntipResource_ =
+    ProjectsNotesTestIAMPermissions'
+    { _pntipXgafv = Nothing
+    , _pntipUploadProtocol = Nothing
+    , _pntipAccessToken = Nothing
+    , _pntipUploadType = Nothing
+    , _pntipPayload = pPntipPayload_
+    , _pntipResource = pPntipResource_
+    , _pntipCallback = Nothing
+    }
+
+-- | V1 error format.
+pntipXgafv :: Lens' ProjectsNotesTestIAMPermissions (Maybe Xgafv)
+pntipXgafv
+  = lens _pntipXgafv (\ s a -> s{_pntipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pntipUploadProtocol :: Lens' ProjectsNotesTestIAMPermissions (Maybe Text)
+pntipUploadProtocol
+  = lens _pntipUploadProtocol
+      (\ s a -> s{_pntipUploadProtocol = a})
+
+-- | OAuth access token.
+pntipAccessToken :: Lens' ProjectsNotesTestIAMPermissions (Maybe Text)
+pntipAccessToken
+  = lens _pntipAccessToken
+      (\ s a -> s{_pntipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pntipUploadType :: Lens' ProjectsNotesTestIAMPermissions (Maybe Text)
+pntipUploadType
+  = lens _pntipUploadType
+      (\ s a -> s{_pntipUploadType = a})
+
+-- | Multipart request metadata.
+pntipPayload :: Lens' ProjectsNotesTestIAMPermissions TestIAMPermissionsRequest
+pntipPayload
+  = lens _pntipPayload (\ s a -> s{_pntipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+pntipResource :: Lens' ProjectsNotesTestIAMPermissions Text
+pntipResource
+  = lens _pntipResource
+      (\ s a -> s{_pntipResource = a})
+
+-- | JSONP
+pntipCallback :: Lens' ProjectsNotesTestIAMPermissions (Maybe Text)
+pntipCallback
+  = lens _pntipCallback
+      (\ s a -> s{_pntipCallback = a})
+
+instance GoogleRequest
+         ProjectsNotesTestIAMPermissions where
+        type Rs ProjectsNotesTestIAMPermissions =
+             TestIAMPermissionsResponse
+        type Scopes ProjectsNotesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsNotesTestIAMPermissions'{..}
+          = go _pntipResource _pntipXgafv _pntipUploadProtocol
+              _pntipAccessToken
+              _pntipUploadType
+              _pntipCallback
+              (Just AltJSON)
+              _pntipPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsNotesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/BatchCreate.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/BatchCreate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/BatchCreate.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.BatchCreate
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates new occurrences in batch.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.batchCreate@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.BatchCreate
+    (
+    -- * REST Resource
+      ProjectsOccurrencesBatchCreateResource
+
+    -- * Creating a Request
+    , projectsOccurrencesBatchCreate
+    , ProjectsOccurrencesBatchCreate
+
+    -- * Request Lenses
+    , pobcParent
+    , pobcXgafv
+    , pobcUploadProtocol
+    , pobcAccessToken
+    , pobcUploadType
+    , pobcPayload
+    , pobcCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.batchCreate@ method which the
+-- 'ProjectsOccurrencesBatchCreate' request conforms to.
+type ProjectsOccurrencesBatchCreateResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "occurrences:batchCreate" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BatchCreateOccurrencesRequest :>
+                         Post '[JSON] BatchCreateOccurrencesResponse
+
+-- | Creates new occurrences in batch.
+--
+-- /See:/ 'projectsOccurrencesBatchCreate' smart constructor.
+data ProjectsOccurrencesBatchCreate = ProjectsOccurrencesBatchCreate'
+    { _pobcParent         :: !Text
+    , _pobcXgafv          :: !(Maybe Xgafv)
+    , _pobcUploadProtocol :: !(Maybe Text)
+    , _pobcAccessToken    :: !(Maybe Text)
+    , _pobcUploadType     :: !(Maybe Text)
+    , _pobcPayload        :: !BatchCreateOccurrencesRequest
+    , _pobcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesBatchCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pobcParent'
+--
+-- * 'pobcXgafv'
+--
+-- * 'pobcUploadProtocol'
+--
+-- * 'pobcAccessToken'
+--
+-- * 'pobcUploadType'
+--
+-- * 'pobcPayload'
+--
+-- * 'pobcCallback'
+projectsOccurrencesBatchCreate
+    :: Text -- ^ 'pobcParent'
+    -> BatchCreateOccurrencesRequest -- ^ 'pobcPayload'
+    -> ProjectsOccurrencesBatchCreate
+projectsOccurrencesBatchCreate pPobcParent_ pPobcPayload_ =
+    ProjectsOccurrencesBatchCreate'
+    { _pobcParent = pPobcParent_
+    , _pobcXgafv = Nothing
+    , _pobcUploadProtocol = Nothing
+    , _pobcAccessToken = Nothing
+    , _pobcUploadType = Nothing
+    , _pobcPayload = pPobcPayload_
+    , _pobcCallback = Nothing
+    }
+
+-- | The name of the project in the form of \`projects\/[PROJECT_ID]\`, under
+-- which the occurrences are to be created.
+pobcParent :: Lens' ProjectsOccurrencesBatchCreate Text
+pobcParent
+  = lens _pobcParent (\ s a -> s{_pobcParent = a})
+
+-- | V1 error format.
+pobcXgafv :: Lens' ProjectsOccurrencesBatchCreate (Maybe Xgafv)
+pobcXgafv
+  = lens _pobcXgafv (\ s a -> s{_pobcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pobcUploadProtocol :: Lens' ProjectsOccurrencesBatchCreate (Maybe Text)
+pobcUploadProtocol
+  = lens _pobcUploadProtocol
+      (\ s a -> s{_pobcUploadProtocol = a})
+
+-- | OAuth access token.
+pobcAccessToken :: Lens' ProjectsOccurrencesBatchCreate (Maybe Text)
+pobcAccessToken
+  = lens _pobcAccessToken
+      (\ s a -> s{_pobcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pobcUploadType :: Lens' ProjectsOccurrencesBatchCreate (Maybe Text)
+pobcUploadType
+  = lens _pobcUploadType
+      (\ s a -> s{_pobcUploadType = a})
+
+-- | Multipart request metadata.
+pobcPayload :: Lens' ProjectsOccurrencesBatchCreate BatchCreateOccurrencesRequest
+pobcPayload
+  = lens _pobcPayload (\ s a -> s{_pobcPayload = a})
+
+-- | JSONP
+pobcCallback :: Lens' ProjectsOccurrencesBatchCreate (Maybe Text)
+pobcCallback
+  = lens _pobcCallback (\ s a -> s{_pobcCallback = a})
+
+instance GoogleRequest ProjectsOccurrencesBatchCreate
+         where
+        type Rs ProjectsOccurrencesBatchCreate =
+             BatchCreateOccurrencesResponse
+        type Scopes ProjectsOccurrencesBatchCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesBatchCreate'{..}
+          = go _pobcParent _pobcXgafv _pobcUploadProtocol
+              _pobcAccessToken
+              _pobcUploadType
+              _pobcCallback
+              (Just AltJSON)
+              _pobcPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsOccurrencesBatchCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Create.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Create.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new occurrence.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.create@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Create
+    (
+    -- * REST Resource
+      ProjectsOccurrencesCreateResource
+
+    -- * Creating a Request
+    , projectsOccurrencesCreate
+    , ProjectsOccurrencesCreate
+
+    -- * Request Lenses
+    , pocParent
+    , pocXgafv
+    , pocUploadProtocol
+    , pocAccessToken
+    , pocUploadType
+    , pocPayload
+    , pocCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.create@ method which the
+-- 'ProjectsOccurrencesCreate' request conforms to.
+type ProjectsOccurrencesCreateResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "occurrences" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Occurrence :> Post '[JSON] Occurrence
+
+-- | Creates a new occurrence.
+--
+-- /See:/ 'projectsOccurrencesCreate' smart constructor.
+data ProjectsOccurrencesCreate = ProjectsOccurrencesCreate'
+    { _pocParent         :: !Text
+    , _pocXgafv          :: !(Maybe Xgafv)
+    , _pocUploadProtocol :: !(Maybe Text)
+    , _pocAccessToken    :: !(Maybe Text)
+    , _pocUploadType     :: !(Maybe Text)
+    , _pocPayload        :: !Occurrence
+    , _pocCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pocParent'
+--
+-- * 'pocXgafv'
+--
+-- * 'pocUploadProtocol'
+--
+-- * 'pocAccessToken'
+--
+-- * 'pocUploadType'
+--
+-- * 'pocPayload'
+--
+-- * 'pocCallback'
+projectsOccurrencesCreate
+    :: Text -- ^ 'pocParent'
+    -> Occurrence -- ^ 'pocPayload'
+    -> ProjectsOccurrencesCreate
+projectsOccurrencesCreate pPocParent_ pPocPayload_ =
+    ProjectsOccurrencesCreate'
+    { _pocParent = pPocParent_
+    , _pocXgafv = Nothing
+    , _pocUploadProtocol = Nothing
+    , _pocAccessToken = Nothing
+    , _pocUploadType = Nothing
+    , _pocPayload = pPocPayload_
+    , _pocCallback = Nothing
+    }
+
+-- | The name of the project in the form of \`projects\/[PROJECT_ID]\`, under
+-- which the occurrence is to be created.
+pocParent :: Lens' ProjectsOccurrencesCreate Text
+pocParent
+  = lens _pocParent (\ s a -> s{_pocParent = a})
+
+-- | V1 error format.
+pocXgafv :: Lens' ProjectsOccurrencesCreate (Maybe Xgafv)
+pocXgafv = lens _pocXgafv (\ s a -> s{_pocXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pocUploadProtocol :: Lens' ProjectsOccurrencesCreate (Maybe Text)
+pocUploadProtocol
+  = lens _pocUploadProtocol
+      (\ s a -> s{_pocUploadProtocol = a})
+
+-- | OAuth access token.
+pocAccessToken :: Lens' ProjectsOccurrencesCreate (Maybe Text)
+pocAccessToken
+  = lens _pocAccessToken
+      (\ s a -> s{_pocAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pocUploadType :: Lens' ProjectsOccurrencesCreate (Maybe Text)
+pocUploadType
+  = lens _pocUploadType
+      (\ s a -> s{_pocUploadType = a})
+
+-- | Multipart request metadata.
+pocPayload :: Lens' ProjectsOccurrencesCreate Occurrence
+pocPayload
+  = lens _pocPayload (\ s a -> s{_pocPayload = a})
+
+-- | JSONP
+pocCallback :: Lens' ProjectsOccurrencesCreate (Maybe Text)
+pocCallback
+  = lens _pocCallback (\ s a -> s{_pocCallback = a})
+
+instance GoogleRequest ProjectsOccurrencesCreate
+         where
+        type Rs ProjectsOccurrencesCreate = Occurrence
+        type Scopes ProjectsOccurrencesCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesCreate'{..}
+          = go _pocParent _pocXgafv _pocUploadProtocol
+              _pocAccessToken
+              _pocUploadType
+              _pocCallback
+              (Just AltJSON)
+              _pocPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOccurrencesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Delete.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Delete.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified occurrence. For example, use this method to delete
+-- an occurrence when the occurrence is no longer applicable for the given
+-- resource.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.delete@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Delete
+    (
+    -- * REST Resource
+      ProjectsOccurrencesDeleteResource
+
+    -- * Creating a Request
+    , projectsOccurrencesDelete
+    , ProjectsOccurrencesDelete
+
+    -- * Request Lenses
+    , podXgafv
+    , podUploadProtocol
+    , podAccessToken
+    , podUploadType
+    , podName
+    , podCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.delete@ method which the
+-- 'ProjectsOccurrencesDelete' request conforms to.
+type ProjectsOccurrencesDeleteResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+
+-- | Deletes the specified occurrence. For example, use this method to delete
+-- an occurrence when the occurrence is no longer applicable for the given
+-- resource.
+--
+-- /See:/ 'projectsOccurrencesDelete' smart constructor.
+data ProjectsOccurrencesDelete = ProjectsOccurrencesDelete'
+    { _podXgafv          :: !(Maybe Xgafv)
+    , _podUploadProtocol :: !(Maybe Text)
+    , _podAccessToken    :: !(Maybe Text)
+    , _podUploadType     :: !(Maybe Text)
+    , _podName           :: !Text
+    , _podCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'podXgafv'
+--
+-- * 'podUploadProtocol'
+--
+-- * 'podAccessToken'
+--
+-- * 'podUploadType'
+--
+-- * 'podName'
+--
+-- * 'podCallback'
+projectsOccurrencesDelete
+    :: Text -- ^ 'podName'
+    -> ProjectsOccurrencesDelete
+projectsOccurrencesDelete pPodName_ =
+    ProjectsOccurrencesDelete'
+    { _podXgafv = Nothing
+    , _podUploadProtocol = Nothing
+    , _podAccessToken = Nothing
+    , _podUploadType = Nothing
+    , _podName = pPodName_
+    , _podCallback = Nothing
+    }
+
+-- | V1 error format.
+podXgafv :: Lens' ProjectsOccurrencesDelete (Maybe Xgafv)
+podXgafv = lens _podXgafv (\ s a -> s{_podXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+podUploadProtocol :: Lens' ProjectsOccurrencesDelete (Maybe Text)
+podUploadProtocol
+  = lens _podUploadProtocol
+      (\ s a -> s{_podUploadProtocol = a})
+
+-- | OAuth access token.
+podAccessToken :: Lens' ProjectsOccurrencesDelete (Maybe Text)
+podAccessToken
+  = lens _podAccessToken
+      (\ s a -> s{_podAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+podUploadType :: Lens' ProjectsOccurrencesDelete (Maybe Text)
+podUploadType
+  = lens _podUploadType
+      (\ s a -> s{_podUploadType = a})
+
+-- | The name of the occurrence in the form of
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\`.
+podName :: Lens' ProjectsOccurrencesDelete Text
+podName = lens _podName (\ s a -> s{_podName = a})
+
+-- | JSONP
+podCallback :: Lens' ProjectsOccurrencesDelete (Maybe Text)
+podCallback
+  = lens _podCallback (\ s a -> s{_podCallback = a})
+
+instance GoogleRequest ProjectsOccurrencesDelete
+         where
+        type Rs ProjectsOccurrencesDelete = Empty
+        type Scopes ProjectsOccurrencesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesDelete'{..}
+          = go _podName _podXgafv _podUploadProtocol
+              _podAccessToken
+              _podUploadType
+              _podCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOccurrencesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Get.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Get.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the specified occurrence.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.get@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Get
+    (
+    -- * REST Resource
+      ProjectsOccurrencesGetResource
+
+    -- * Creating a Request
+    , projectsOccurrencesGet
+    , ProjectsOccurrencesGet
+
+    -- * Request Lenses
+    , pogXgafv
+    , pogUploadProtocol
+    , pogAccessToken
+    , pogUploadType
+    , pogName
+    , pogCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.get@ method which the
+-- 'ProjectsOccurrencesGet' request conforms to.
+type ProjectsOccurrencesGetResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Occurrence
+
+-- | Gets the specified occurrence.
+--
+-- /See:/ 'projectsOccurrencesGet' smart constructor.
+data ProjectsOccurrencesGet = ProjectsOccurrencesGet'
+    { _pogXgafv          :: !(Maybe Xgafv)
+    , _pogUploadProtocol :: !(Maybe Text)
+    , _pogAccessToken    :: !(Maybe Text)
+    , _pogUploadType     :: !(Maybe Text)
+    , _pogName           :: !Text
+    , _pogCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pogXgafv'
+--
+-- * 'pogUploadProtocol'
+--
+-- * 'pogAccessToken'
+--
+-- * 'pogUploadType'
+--
+-- * 'pogName'
+--
+-- * 'pogCallback'
+projectsOccurrencesGet
+    :: Text -- ^ 'pogName'
+    -> ProjectsOccurrencesGet
+projectsOccurrencesGet pPogName_ =
+    ProjectsOccurrencesGet'
+    { _pogXgafv = Nothing
+    , _pogUploadProtocol = Nothing
+    , _pogAccessToken = Nothing
+    , _pogUploadType = Nothing
+    , _pogName = pPogName_
+    , _pogCallback = Nothing
+    }
+
+-- | V1 error format.
+pogXgafv :: Lens' ProjectsOccurrencesGet (Maybe Xgafv)
+pogXgafv = lens _pogXgafv (\ s a -> s{_pogXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pogUploadProtocol :: Lens' ProjectsOccurrencesGet (Maybe Text)
+pogUploadProtocol
+  = lens _pogUploadProtocol
+      (\ s a -> s{_pogUploadProtocol = a})
+
+-- | OAuth access token.
+pogAccessToken :: Lens' ProjectsOccurrencesGet (Maybe Text)
+pogAccessToken
+  = lens _pogAccessToken
+      (\ s a -> s{_pogAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pogUploadType :: Lens' ProjectsOccurrencesGet (Maybe Text)
+pogUploadType
+  = lens _pogUploadType
+      (\ s a -> s{_pogUploadType = a})
+
+-- | The name of the occurrence in the form of
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\`.
+pogName :: Lens' ProjectsOccurrencesGet Text
+pogName = lens _pogName (\ s a -> s{_pogName = a})
+
+-- | JSONP
+pogCallback :: Lens' ProjectsOccurrencesGet (Maybe Text)
+pogCallback
+  = lens _pogCallback (\ s a -> s{_pogCallback = a})
+
+instance GoogleRequest ProjectsOccurrencesGet where
+        type Rs ProjectsOccurrencesGet = Occurrence
+        type Scopes ProjectsOccurrencesGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesGet'{..}
+          = go _pogName _pogXgafv _pogUploadProtocol
+              _pogAccessToken
+              _pogUploadType
+              _pogCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOccurrencesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetIAMPolicy.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetIAMPolicy.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a note or an occurrence resource.
+-- Requires \`containeranalysis.notes.setIamPolicy\` or
+-- \`containeranalysis.occurrences.setIamPolicy\` permission if the
+-- resource is a note or occurrence, respectively. The resource takes the
+-- format \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.getIamPolicy@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsOccurrencesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsOccurrencesGetIAMPolicy
+    , ProjectsOccurrencesGetIAMPolicy
+
+    -- * Request Lenses
+    , pogipXgafv
+    , pogipUploadProtocol
+    , pogipAccessToken
+    , pogipUploadType
+    , pogipPayload
+    , pogipResource
+    , pogipCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.getIamPolicy@ method which the
+-- 'ProjectsOccurrencesGetIAMPolicy' request conforms to.
+type ProjectsOccurrencesGetIAMPolicyResource =
+     "v1beta1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for a note or an occurrence resource.
+-- Requires \`containeranalysis.notes.setIamPolicy\` or
+-- \`containeranalysis.occurrences.setIamPolicy\` permission if the
+-- resource is a note or occurrence, respectively. The resource takes the
+-- format \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ 'projectsOccurrencesGetIAMPolicy' smart constructor.
+data ProjectsOccurrencesGetIAMPolicy = ProjectsOccurrencesGetIAMPolicy'
+    { _pogipXgafv          :: !(Maybe Xgafv)
+    , _pogipUploadProtocol :: !(Maybe Text)
+    , _pogipAccessToken    :: !(Maybe Text)
+    , _pogipUploadType     :: !(Maybe Text)
+    , _pogipPayload        :: !GetIAMPolicyRequest
+    , _pogipResource       :: !Text
+    , _pogipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pogipXgafv'
+--
+-- * 'pogipUploadProtocol'
+--
+-- * 'pogipAccessToken'
+--
+-- * 'pogipUploadType'
+--
+-- * 'pogipPayload'
+--
+-- * 'pogipResource'
+--
+-- * 'pogipCallback'
+projectsOccurrencesGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'pogipPayload'
+    -> Text -- ^ 'pogipResource'
+    -> ProjectsOccurrencesGetIAMPolicy
+projectsOccurrencesGetIAMPolicy pPogipPayload_ pPogipResource_ =
+    ProjectsOccurrencesGetIAMPolicy'
+    { _pogipXgafv = Nothing
+    , _pogipUploadProtocol = Nothing
+    , _pogipAccessToken = Nothing
+    , _pogipUploadType = Nothing
+    , _pogipPayload = pPogipPayload_
+    , _pogipResource = pPogipResource_
+    , _pogipCallback = Nothing
+    }
+
+-- | V1 error format.
+pogipXgafv :: Lens' ProjectsOccurrencesGetIAMPolicy (Maybe Xgafv)
+pogipXgafv
+  = lens _pogipXgafv (\ s a -> s{_pogipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pogipUploadProtocol :: Lens' ProjectsOccurrencesGetIAMPolicy (Maybe Text)
+pogipUploadProtocol
+  = lens _pogipUploadProtocol
+      (\ s a -> s{_pogipUploadProtocol = a})
+
+-- | OAuth access token.
+pogipAccessToken :: Lens' ProjectsOccurrencesGetIAMPolicy (Maybe Text)
+pogipAccessToken
+  = lens _pogipAccessToken
+      (\ s a -> s{_pogipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pogipUploadType :: Lens' ProjectsOccurrencesGetIAMPolicy (Maybe Text)
+pogipUploadType
+  = lens _pogipUploadType
+      (\ s a -> s{_pogipUploadType = a})
+
+-- | Multipart request metadata.
+pogipPayload :: Lens' ProjectsOccurrencesGetIAMPolicy GetIAMPolicyRequest
+pogipPayload
+  = lens _pogipPayload (\ s a -> s{_pogipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+pogipResource :: Lens' ProjectsOccurrencesGetIAMPolicy Text
+pogipResource
+  = lens _pogipResource
+      (\ s a -> s{_pogipResource = a})
+
+-- | JSONP
+pogipCallback :: Lens' ProjectsOccurrencesGetIAMPolicy (Maybe Text)
+pogipCallback
+  = lens _pogipCallback
+      (\ s a -> s{_pogipCallback = a})
+
+instance GoogleRequest
+         ProjectsOccurrencesGetIAMPolicy where
+        type Rs ProjectsOccurrencesGetIAMPolicy = Policy
+        type Scopes ProjectsOccurrencesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesGetIAMPolicy'{..}
+          = go _pogipResource _pogipXgafv _pogipUploadProtocol
+              _pogipAccessToken
+              _pogipUploadType
+              _pogipCallback
+              (Just AltJSON)
+              _pogipPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsOccurrencesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetNotes.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetNotes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetNotes.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetNotes
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the note attached to the specified occurrence. Consumer projects
+-- can use this method to get a note that belongs to a provider project.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.getNotes@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetNotes
+    (
+    -- * REST Resource
+      ProjectsOccurrencesGetNotesResource
+
+    -- * Creating a Request
+    , projectsOccurrencesGetNotes
+    , ProjectsOccurrencesGetNotes
+
+    -- * Request Lenses
+    , pognXgafv
+    , pognUploadProtocol
+    , pognAccessToken
+    , pognUploadType
+    , pognName
+    , pognCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.getNotes@ method which the
+-- 'ProjectsOccurrencesGetNotes' request conforms to.
+type ProjectsOccurrencesGetNotesResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         "notes" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Note
+
+-- | Gets the note attached to the specified occurrence. Consumer projects
+-- can use this method to get a note that belongs to a provider project.
+--
+-- /See:/ 'projectsOccurrencesGetNotes' smart constructor.
+data ProjectsOccurrencesGetNotes = ProjectsOccurrencesGetNotes'
+    { _pognXgafv          :: !(Maybe Xgafv)
+    , _pognUploadProtocol :: !(Maybe Text)
+    , _pognAccessToken    :: !(Maybe Text)
+    , _pognUploadType     :: !(Maybe Text)
+    , _pognName           :: !Text
+    , _pognCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesGetNotes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pognXgafv'
+--
+-- * 'pognUploadProtocol'
+--
+-- * 'pognAccessToken'
+--
+-- * 'pognUploadType'
+--
+-- * 'pognName'
+--
+-- * 'pognCallback'
+projectsOccurrencesGetNotes
+    :: Text -- ^ 'pognName'
+    -> ProjectsOccurrencesGetNotes
+projectsOccurrencesGetNotes pPognName_ =
+    ProjectsOccurrencesGetNotes'
+    { _pognXgafv = Nothing
+    , _pognUploadProtocol = Nothing
+    , _pognAccessToken = Nothing
+    , _pognUploadType = Nothing
+    , _pognName = pPognName_
+    , _pognCallback = Nothing
+    }
+
+-- | V1 error format.
+pognXgafv :: Lens' ProjectsOccurrencesGetNotes (Maybe Xgafv)
+pognXgafv
+  = lens _pognXgafv (\ s a -> s{_pognXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pognUploadProtocol :: Lens' ProjectsOccurrencesGetNotes (Maybe Text)
+pognUploadProtocol
+  = lens _pognUploadProtocol
+      (\ s a -> s{_pognUploadProtocol = a})
+
+-- | OAuth access token.
+pognAccessToken :: Lens' ProjectsOccurrencesGetNotes (Maybe Text)
+pognAccessToken
+  = lens _pognAccessToken
+      (\ s a -> s{_pognAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pognUploadType :: Lens' ProjectsOccurrencesGetNotes (Maybe Text)
+pognUploadType
+  = lens _pognUploadType
+      (\ s a -> s{_pognUploadType = a})
+
+-- | The name of the occurrence in the form of
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\`.
+pognName :: Lens' ProjectsOccurrencesGetNotes Text
+pognName = lens _pognName (\ s a -> s{_pognName = a})
+
+-- | JSONP
+pognCallback :: Lens' ProjectsOccurrencesGetNotes (Maybe Text)
+pognCallback
+  = lens _pognCallback (\ s a -> s{_pognCallback = a})
+
+instance GoogleRequest ProjectsOccurrencesGetNotes
+         where
+        type Rs ProjectsOccurrencesGetNotes = Note
+        type Scopes ProjectsOccurrencesGetNotes =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesGetNotes'{..}
+          = go _pognName _pognXgafv _pognUploadProtocol
+              _pognAccessToken
+              _pognUploadType
+              _pognCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOccurrencesGetNotesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetVulnerabilitySummary.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetVulnerabilitySummary.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/GetVulnerabilitySummary.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetVulnerabilitySummary
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a summary of the number and severity of occurrences.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.getVulnerabilitySummary@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetVulnerabilitySummary
+    (
+    -- * REST Resource
+      ProjectsOccurrencesGetVulnerabilitySummaryResource
+
+    -- * Creating a Request
+    , projectsOccurrencesGetVulnerabilitySummary
+    , ProjectsOccurrencesGetVulnerabilitySummary
+
+    -- * Request Lenses
+    , pogvsParent
+    , pogvsXgafv
+    , pogvsUploadProtocol
+    , pogvsAccessToken
+    , pogvsUploadType
+    , pogvsFilter
+    , pogvsCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.getVulnerabilitySummary@ method which the
+-- 'ProjectsOccurrencesGetVulnerabilitySummary' request conforms to.
+type ProjectsOccurrencesGetVulnerabilitySummaryResource
+     =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "occurrences:vulnerabilitySummary" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] VulnerabilityOccurrencesSummary
+
+-- | Gets a summary of the number and severity of occurrences.
+--
+-- /See:/ 'projectsOccurrencesGetVulnerabilitySummary' smart constructor.
+data ProjectsOccurrencesGetVulnerabilitySummary = ProjectsOccurrencesGetVulnerabilitySummary'
+    { _pogvsParent         :: !Text
+    , _pogvsXgafv          :: !(Maybe Xgafv)
+    , _pogvsUploadProtocol :: !(Maybe Text)
+    , _pogvsAccessToken    :: !(Maybe Text)
+    , _pogvsUploadType     :: !(Maybe Text)
+    , _pogvsFilter         :: !(Maybe Text)
+    , _pogvsCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesGetVulnerabilitySummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pogvsParent'
+--
+-- * 'pogvsXgafv'
+--
+-- * 'pogvsUploadProtocol'
+--
+-- * 'pogvsAccessToken'
+--
+-- * 'pogvsUploadType'
+--
+-- * 'pogvsFilter'
+--
+-- * 'pogvsCallback'
+projectsOccurrencesGetVulnerabilitySummary
+    :: Text -- ^ 'pogvsParent'
+    -> ProjectsOccurrencesGetVulnerabilitySummary
+projectsOccurrencesGetVulnerabilitySummary pPogvsParent_ =
+    ProjectsOccurrencesGetVulnerabilitySummary'
+    { _pogvsParent = pPogvsParent_
+    , _pogvsXgafv = Nothing
+    , _pogvsUploadProtocol = Nothing
+    , _pogvsAccessToken = Nothing
+    , _pogvsUploadType = Nothing
+    , _pogvsFilter = Nothing
+    , _pogvsCallback = Nothing
+    }
+
+-- | The name of the project to get a vulnerability summary for in the form
+-- of \`projects\/[PROJECT_ID]\`.
+pogvsParent :: Lens' ProjectsOccurrencesGetVulnerabilitySummary Text
+pogvsParent
+  = lens _pogvsParent (\ s a -> s{_pogvsParent = a})
+
+-- | V1 error format.
+pogvsXgafv :: Lens' ProjectsOccurrencesGetVulnerabilitySummary (Maybe Xgafv)
+pogvsXgafv
+  = lens _pogvsXgafv (\ s a -> s{_pogvsXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pogvsUploadProtocol :: Lens' ProjectsOccurrencesGetVulnerabilitySummary (Maybe Text)
+pogvsUploadProtocol
+  = lens _pogvsUploadProtocol
+      (\ s a -> s{_pogvsUploadProtocol = a})
+
+-- | OAuth access token.
+pogvsAccessToken :: Lens' ProjectsOccurrencesGetVulnerabilitySummary (Maybe Text)
+pogvsAccessToken
+  = lens _pogvsAccessToken
+      (\ s a -> s{_pogvsAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pogvsUploadType :: Lens' ProjectsOccurrencesGetVulnerabilitySummary (Maybe Text)
+pogvsUploadType
+  = lens _pogvsUploadType
+      (\ s a -> s{_pogvsUploadType = a})
+
+-- | The filter expression.
+pogvsFilter :: Lens' ProjectsOccurrencesGetVulnerabilitySummary (Maybe Text)
+pogvsFilter
+  = lens _pogvsFilter (\ s a -> s{_pogvsFilter = a})
+
+-- | JSONP
+pogvsCallback :: Lens' ProjectsOccurrencesGetVulnerabilitySummary (Maybe Text)
+pogvsCallback
+  = lens _pogvsCallback
+      (\ s a -> s{_pogvsCallback = a})
+
+instance GoogleRequest
+         ProjectsOccurrencesGetVulnerabilitySummary where
+        type Rs ProjectsOccurrencesGetVulnerabilitySummary =
+             VulnerabilityOccurrencesSummary
+        type Scopes
+               ProjectsOccurrencesGetVulnerabilitySummary
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsOccurrencesGetVulnerabilitySummary'{..}
+          = go _pogvsParent _pogvsXgafv _pogvsUploadProtocol
+              _pogvsAccessToken
+              _pogvsUploadType
+              _pogvsFilter
+              _pogvsCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsOccurrencesGetVulnerabilitySummaryResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/List.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/List.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists occurrences for the specified project.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.list@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.List
+    (
+    -- * REST Resource
+      ProjectsOccurrencesListResource
+
+    -- * Creating a Request
+    , projectsOccurrencesList
+    , ProjectsOccurrencesList
+
+    -- * Request Lenses
+    , polParent
+    , polXgafv
+    , polUploadProtocol
+    , polAccessToken
+    , polUploadType
+    , polFilter
+    , polPageToken
+    , polPageSize
+    , polCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.list@ method which the
+-- 'ProjectsOccurrencesList' request conforms to.
+type ProjectsOccurrencesListResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "occurrences" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListOccurrencesResponse
+
+-- | Lists occurrences for the specified project.
+--
+-- /See:/ 'projectsOccurrencesList' smart constructor.
+data ProjectsOccurrencesList = ProjectsOccurrencesList'
+    { _polParent         :: !Text
+    , _polXgafv          :: !(Maybe Xgafv)
+    , _polUploadProtocol :: !(Maybe Text)
+    , _polAccessToken    :: !(Maybe Text)
+    , _polUploadType     :: !(Maybe Text)
+    , _polFilter         :: !(Maybe Text)
+    , _polPageToken      :: !(Maybe Text)
+    , _polPageSize       :: !(Maybe (Textual Int32))
+    , _polCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'polParent'
+--
+-- * 'polXgafv'
+--
+-- * 'polUploadProtocol'
+--
+-- * 'polAccessToken'
+--
+-- * 'polUploadType'
+--
+-- * 'polFilter'
+--
+-- * 'polPageToken'
+--
+-- * 'polPageSize'
+--
+-- * 'polCallback'
+projectsOccurrencesList
+    :: Text -- ^ 'polParent'
+    -> ProjectsOccurrencesList
+projectsOccurrencesList pPolParent_ =
+    ProjectsOccurrencesList'
+    { _polParent = pPolParent_
+    , _polXgafv = Nothing
+    , _polUploadProtocol = Nothing
+    , _polAccessToken = Nothing
+    , _polUploadType = Nothing
+    , _polFilter = Nothing
+    , _polPageToken = Nothing
+    , _polPageSize = Nothing
+    , _polCallback = Nothing
+    }
+
+-- | The name of the project to list occurrences for in the form of
+-- \`projects\/[PROJECT_ID]\`.
+polParent :: Lens' ProjectsOccurrencesList Text
+polParent
+  = lens _polParent (\ s a -> s{_polParent = a})
+
+-- | V1 error format.
+polXgafv :: Lens' ProjectsOccurrencesList (Maybe Xgafv)
+polXgafv = lens _polXgafv (\ s a -> s{_polXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+polUploadProtocol :: Lens' ProjectsOccurrencesList (Maybe Text)
+polUploadProtocol
+  = lens _polUploadProtocol
+      (\ s a -> s{_polUploadProtocol = a})
+
+-- | OAuth access token.
+polAccessToken :: Lens' ProjectsOccurrencesList (Maybe Text)
+polAccessToken
+  = lens _polAccessToken
+      (\ s a -> s{_polAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+polUploadType :: Lens' ProjectsOccurrencesList (Maybe Text)
+polUploadType
+  = lens _polUploadType
+      (\ s a -> s{_polUploadType = a})
+
+-- | The filter expression.
+polFilter :: Lens' ProjectsOccurrencesList (Maybe Text)
+polFilter
+  = lens _polFilter (\ s a -> s{_polFilter = a})
+
+-- | Token to provide to skip to a particular spot in the list.
+polPageToken :: Lens' ProjectsOccurrencesList (Maybe Text)
+polPageToken
+  = lens _polPageToken (\ s a -> s{_polPageToken = a})
+
+-- | Number of occurrences to return in the list. Must be positive. Max
+-- allowed page size is 1000. If not specified, page size defaults to 20.
+polPageSize :: Lens' ProjectsOccurrencesList (Maybe Int32)
+polPageSize
+  = lens _polPageSize (\ s a -> s{_polPageSize = a}) .
+      mapping _Coerce
+
+-- | JSONP
+polCallback :: Lens' ProjectsOccurrencesList (Maybe Text)
+polCallback
+  = lens _polCallback (\ s a -> s{_polCallback = a})
+
+instance GoogleRequest ProjectsOccurrencesList where
+        type Rs ProjectsOccurrencesList =
+             ListOccurrencesResponse
+        type Scopes ProjectsOccurrencesList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesList'{..}
+          = go _polParent _polXgafv _polUploadProtocol
+              _polAccessToken
+              _polUploadType
+              _polFilter
+              _polPageToken
+              _polPageSize
+              _polCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOccurrencesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Patch.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/Patch.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Patch
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified occurrence.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.patch@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Patch
+    (
+    -- * REST Resource
+      ProjectsOccurrencesPatchResource
+
+    -- * Creating a Request
+    , projectsOccurrencesPatch
+    , ProjectsOccurrencesPatch
+
+    -- * Request Lenses
+    , popXgafv
+    , popUploadProtocol
+    , popUpdateMask
+    , popAccessToken
+    , popUploadType
+    , popPayload
+    , popName
+    , popCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.patch@ method which the
+-- 'ProjectsOccurrencesPatch' request conforms to.
+type ProjectsOccurrencesPatchResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "updateMask" GFieldMask :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Occurrence :>
+                         Patch '[JSON] Occurrence
+
+-- | Updates the specified occurrence.
+--
+-- /See:/ 'projectsOccurrencesPatch' smart constructor.
+data ProjectsOccurrencesPatch = ProjectsOccurrencesPatch'
+    { _popXgafv          :: !(Maybe Xgafv)
+    , _popUploadProtocol :: !(Maybe Text)
+    , _popUpdateMask     :: !(Maybe GFieldMask)
+    , _popAccessToken    :: !(Maybe Text)
+    , _popUploadType     :: !(Maybe Text)
+    , _popPayload        :: !Occurrence
+    , _popName           :: !Text
+    , _popCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'popXgafv'
+--
+-- * 'popUploadProtocol'
+--
+-- * 'popUpdateMask'
+--
+-- * 'popAccessToken'
+--
+-- * 'popUploadType'
+--
+-- * 'popPayload'
+--
+-- * 'popName'
+--
+-- * 'popCallback'
+projectsOccurrencesPatch
+    :: Occurrence -- ^ 'popPayload'
+    -> Text -- ^ 'popName'
+    -> ProjectsOccurrencesPatch
+projectsOccurrencesPatch pPopPayload_ pPopName_ =
+    ProjectsOccurrencesPatch'
+    { _popXgafv = Nothing
+    , _popUploadProtocol = Nothing
+    , _popUpdateMask = Nothing
+    , _popAccessToken = Nothing
+    , _popUploadType = Nothing
+    , _popPayload = pPopPayload_
+    , _popName = pPopName_
+    , _popCallback = Nothing
+    }
+
+-- | V1 error format.
+popXgafv :: Lens' ProjectsOccurrencesPatch (Maybe Xgafv)
+popXgafv = lens _popXgafv (\ s a -> s{_popXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+popUploadProtocol :: Lens' ProjectsOccurrencesPatch (Maybe Text)
+popUploadProtocol
+  = lens _popUploadProtocol
+      (\ s a -> s{_popUploadProtocol = a})
+
+-- | The fields to update.
+popUpdateMask :: Lens' ProjectsOccurrencesPatch (Maybe GFieldMask)
+popUpdateMask
+  = lens _popUpdateMask
+      (\ s a -> s{_popUpdateMask = a})
+
+-- | OAuth access token.
+popAccessToken :: Lens' ProjectsOccurrencesPatch (Maybe Text)
+popAccessToken
+  = lens _popAccessToken
+      (\ s a -> s{_popAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+popUploadType :: Lens' ProjectsOccurrencesPatch (Maybe Text)
+popUploadType
+  = lens _popUploadType
+      (\ s a -> s{_popUploadType = a})
+
+-- | Multipart request metadata.
+popPayload :: Lens' ProjectsOccurrencesPatch Occurrence
+popPayload
+  = lens _popPayload (\ s a -> s{_popPayload = a})
+
+-- | The name of the occurrence in the form of
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\`.
+popName :: Lens' ProjectsOccurrencesPatch Text
+popName = lens _popName (\ s a -> s{_popName = a})
+
+-- | JSONP
+popCallback :: Lens' ProjectsOccurrencesPatch (Maybe Text)
+popCallback
+  = lens _popCallback (\ s a -> s{_popCallback = a})
+
+instance GoogleRequest ProjectsOccurrencesPatch where
+        type Rs ProjectsOccurrencesPatch = Occurrence
+        type Scopes ProjectsOccurrencesPatch =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesPatch'{..}
+          = go _popName _popXgafv _popUploadProtocol
+              _popUpdateMask
+              _popAccessToken
+              _popUploadType
+              _popCallback
+              (Just AltJSON)
+              _popPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOccurrencesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/SetIAMPolicy.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/SetIAMPolicy.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.SetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the access control policy on the specified note or occurrence.
+-- Requires \`containeranalysis.notes.setIamPolicy\` or
+-- \`containeranalysis.occurrences.setIamPolicy\` permission if the
+-- resource is a note or an occurrence, respectively. The resource takes
+-- the format \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.setIamPolicy@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsOccurrencesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsOccurrencesSetIAMPolicy
+    , ProjectsOccurrencesSetIAMPolicy
+
+    -- * Request Lenses
+    , posipXgafv
+    , posipUploadProtocol
+    , posipAccessToken
+    , posipUploadType
+    , posipPayload
+    , posipResource
+    , posipCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.setIamPolicy@ method which the
+-- 'ProjectsOccurrencesSetIAMPolicy' request conforms to.
+type ProjectsOccurrencesSetIAMPolicyResource =
+     "v1beta1" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified note or occurrence.
+-- Requires \`containeranalysis.notes.setIamPolicy\` or
+-- \`containeranalysis.occurrences.setIamPolicy\` permission if the
+-- resource is a note or an occurrence, respectively. The resource takes
+-- the format \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ 'projectsOccurrencesSetIAMPolicy' smart constructor.
+data ProjectsOccurrencesSetIAMPolicy = ProjectsOccurrencesSetIAMPolicy'
+    { _posipXgafv          :: !(Maybe Xgafv)
+    , _posipUploadProtocol :: !(Maybe Text)
+    , _posipAccessToken    :: !(Maybe Text)
+    , _posipUploadType     :: !(Maybe Text)
+    , _posipPayload        :: !SetIAMPolicyRequest
+    , _posipResource       :: !Text
+    , _posipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'posipXgafv'
+--
+-- * 'posipUploadProtocol'
+--
+-- * 'posipAccessToken'
+--
+-- * 'posipUploadType'
+--
+-- * 'posipPayload'
+--
+-- * 'posipResource'
+--
+-- * 'posipCallback'
+projectsOccurrencesSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'posipPayload'
+    -> Text -- ^ 'posipResource'
+    -> ProjectsOccurrencesSetIAMPolicy
+projectsOccurrencesSetIAMPolicy pPosipPayload_ pPosipResource_ =
+    ProjectsOccurrencesSetIAMPolicy'
+    { _posipXgafv = Nothing
+    , _posipUploadProtocol = Nothing
+    , _posipAccessToken = Nothing
+    , _posipUploadType = Nothing
+    , _posipPayload = pPosipPayload_
+    , _posipResource = pPosipResource_
+    , _posipCallback = Nothing
+    }
+
+-- | V1 error format.
+posipXgafv :: Lens' ProjectsOccurrencesSetIAMPolicy (Maybe Xgafv)
+posipXgafv
+  = lens _posipXgafv (\ s a -> s{_posipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+posipUploadProtocol :: Lens' ProjectsOccurrencesSetIAMPolicy (Maybe Text)
+posipUploadProtocol
+  = lens _posipUploadProtocol
+      (\ s a -> s{_posipUploadProtocol = a})
+
+-- | OAuth access token.
+posipAccessToken :: Lens' ProjectsOccurrencesSetIAMPolicy (Maybe Text)
+posipAccessToken
+  = lens _posipAccessToken
+      (\ s a -> s{_posipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+posipUploadType :: Lens' ProjectsOccurrencesSetIAMPolicy (Maybe Text)
+posipUploadType
+  = lens _posipUploadType
+      (\ s a -> s{_posipUploadType = a})
+
+-- | Multipart request metadata.
+posipPayload :: Lens' ProjectsOccurrencesSetIAMPolicy SetIAMPolicyRequest
+posipPayload
+  = lens _posipPayload (\ s a -> s{_posipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+posipResource :: Lens' ProjectsOccurrencesSetIAMPolicy Text
+posipResource
+  = lens _posipResource
+      (\ s a -> s{_posipResource = a})
+
+-- | JSONP
+posipCallback :: Lens' ProjectsOccurrencesSetIAMPolicy (Maybe Text)
+posipCallback
+  = lens _posipCallback
+      (\ s a -> s{_posipCallback = a})
+
+instance GoogleRequest
+         ProjectsOccurrencesSetIAMPolicy where
+        type Rs ProjectsOccurrencesSetIAMPolicy = Policy
+        type Scopes ProjectsOccurrencesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsOccurrencesSetIAMPolicy'{..}
+          = go _posipResource _posipXgafv _posipUploadProtocol
+              _posipAccessToken
+              _posipUploadType
+              _posipCallback
+              (Just AltJSON)
+              _posipPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsOccurrencesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/TestIAMPermissions.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/Occurrences/TestIAMPermissions.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.TestIAMPermissions
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the permissions that a caller has on the specified note or
+-- occurrence. Requires list permission on the project (for example,
+-- \`containeranalysis.notes.list\`). The resource takes the format
+-- \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.occurrences.testIamPermissions@.
+module Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsOccurrencesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsOccurrencesTestIAMPermissions
+    , ProjectsOccurrencesTestIAMPermissions
+
+    -- * Request Lenses
+    , potipXgafv
+    , potipUploadProtocol
+    , potipAccessToken
+    , potipUploadType
+    , potipPayload
+    , potipResource
+    , potipCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.occurrences.testIamPermissions@ method which the
+-- 'ProjectsOccurrencesTestIAMPermissions' request conforms to.
+type ProjectsOccurrencesTestIAMPermissionsResource =
+     "v1beta1" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns the permissions that a caller has on the specified note or
+-- occurrence. Requires list permission on the project (for example,
+-- \`containeranalysis.notes.list\`). The resource takes the format
+-- \`projects\/[PROJECT_ID]\/notes\/[NOTE_ID]\` for notes and
+-- \`projects\/[PROJECT_ID]\/occurrences\/[OCCURRENCE_ID]\` for
+-- occurrences.
+--
+-- /See:/ 'projectsOccurrencesTestIAMPermissions' smart constructor.
+data ProjectsOccurrencesTestIAMPermissions = ProjectsOccurrencesTestIAMPermissions'
+    { _potipXgafv          :: !(Maybe Xgafv)
+    , _potipUploadProtocol :: !(Maybe Text)
+    , _potipAccessToken    :: !(Maybe Text)
+    , _potipUploadType     :: !(Maybe Text)
+    , _potipPayload        :: !TestIAMPermissionsRequest
+    , _potipResource       :: !Text
+    , _potipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOccurrencesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'potipXgafv'
+--
+-- * 'potipUploadProtocol'
+--
+-- * 'potipAccessToken'
+--
+-- * 'potipUploadType'
+--
+-- * 'potipPayload'
+--
+-- * 'potipResource'
+--
+-- * 'potipCallback'
+projectsOccurrencesTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'potipPayload'
+    -> Text -- ^ 'potipResource'
+    -> ProjectsOccurrencesTestIAMPermissions
+projectsOccurrencesTestIAMPermissions pPotipPayload_ pPotipResource_ =
+    ProjectsOccurrencesTestIAMPermissions'
+    { _potipXgafv = Nothing
+    , _potipUploadProtocol = Nothing
+    , _potipAccessToken = Nothing
+    , _potipUploadType = Nothing
+    , _potipPayload = pPotipPayload_
+    , _potipResource = pPotipResource_
+    , _potipCallback = Nothing
+    }
+
+-- | V1 error format.
+potipXgafv :: Lens' ProjectsOccurrencesTestIAMPermissions (Maybe Xgafv)
+potipXgafv
+  = lens _potipXgafv (\ s a -> s{_potipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+potipUploadProtocol :: Lens' ProjectsOccurrencesTestIAMPermissions (Maybe Text)
+potipUploadProtocol
+  = lens _potipUploadProtocol
+      (\ s a -> s{_potipUploadProtocol = a})
+
+-- | OAuth access token.
+potipAccessToken :: Lens' ProjectsOccurrencesTestIAMPermissions (Maybe Text)
+potipAccessToken
+  = lens _potipAccessToken
+      (\ s a -> s{_potipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+potipUploadType :: Lens' ProjectsOccurrencesTestIAMPermissions (Maybe Text)
+potipUploadType
+  = lens _potipUploadType
+      (\ s a -> s{_potipUploadType = a})
+
+-- | Multipart request metadata.
+potipPayload :: Lens' ProjectsOccurrencesTestIAMPermissions TestIAMPermissionsRequest
+potipPayload
+  = lens _potipPayload (\ s a -> s{_potipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+potipResource :: Lens' ProjectsOccurrencesTestIAMPermissions Text
+potipResource
+  = lens _potipResource
+      (\ s a -> s{_potipResource = a})
+
+-- | JSONP
+potipCallback :: Lens' ProjectsOccurrencesTestIAMPermissions (Maybe Text)
+potipCallback
+  = lens _potipCallback
+      (\ s a -> s{_potipCallback = a})
+
+instance GoogleRequest
+         ProjectsOccurrencesTestIAMPermissions where
+        type Rs ProjectsOccurrencesTestIAMPermissions =
+             TestIAMPermissionsResponse
+        type Scopes ProjectsOccurrencesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsOccurrencesTestIAMPermissions'{..}
+          = go _potipResource _potipXgafv _potipUploadProtocol
+              _potipAccessToken
+              _potipUploadType
+              _potipCallback
+              (Just AltJSON)
+              _potipPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsOccurrencesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/Get.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/Get.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the specified scan configuration.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.scanConfigs.get@.
+module Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Get
+    (
+    -- * REST Resource
+      ProjectsScanConfigsGetResource
+
+    -- * Creating a Request
+    , projectsScanConfigsGet
+    , ProjectsScanConfigsGet
+
+    -- * Request Lenses
+    , pscgXgafv
+    , pscgUploadProtocol
+    , pscgAccessToken
+    , pscgUploadType
+    , pscgName
+    , pscgCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.scanConfigs.get@ method which the
+-- 'ProjectsScanConfigsGet' request conforms to.
+type ProjectsScanConfigsGetResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] ScanConfig
+
+-- | Gets the specified scan configuration.
+--
+-- /See:/ 'projectsScanConfigsGet' smart constructor.
+data ProjectsScanConfigsGet = ProjectsScanConfigsGet'
+    { _pscgXgafv          :: !(Maybe Xgafv)
+    , _pscgUploadProtocol :: !(Maybe Text)
+    , _pscgAccessToken    :: !(Maybe Text)
+    , _pscgUploadType     :: !(Maybe Text)
+    , _pscgName           :: !Text
+    , _pscgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsScanConfigsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pscgXgafv'
+--
+-- * 'pscgUploadProtocol'
+--
+-- * 'pscgAccessToken'
+--
+-- * 'pscgUploadType'
+--
+-- * 'pscgName'
+--
+-- * 'pscgCallback'
+projectsScanConfigsGet
+    :: Text -- ^ 'pscgName'
+    -> ProjectsScanConfigsGet
+projectsScanConfigsGet pPscgName_ =
+    ProjectsScanConfigsGet'
+    { _pscgXgafv = Nothing
+    , _pscgUploadProtocol = Nothing
+    , _pscgAccessToken = Nothing
+    , _pscgUploadType = Nothing
+    , _pscgName = pPscgName_
+    , _pscgCallback = Nothing
+    }
+
+-- | V1 error format.
+pscgXgafv :: Lens' ProjectsScanConfigsGet (Maybe Xgafv)
+pscgXgafv
+  = lens _pscgXgafv (\ s a -> s{_pscgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pscgUploadProtocol :: Lens' ProjectsScanConfigsGet (Maybe Text)
+pscgUploadProtocol
+  = lens _pscgUploadProtocol
+      (\ s a -> s{_pscgUploadProtocol = a})
+
+-- | OAuth access token.
+pscgAccessToken :: Lens' ProjectsScanConfigsGet (Maybe Text)
+pscgAccessToken
+  = lens _pscgAccessToken
+      (\ s a -> s{_pscgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pscgUploadType :: Lens' ProjectsScanConfigsGet (Maybe Text)
+pscgUploadType
+  = lens _pscgUploadType
+      (\ s a -> s{_pscgUploadType = a})
+
+-- | The name of the scan configuration in the form of
+-- \`projects\/[PROJECT_ID]\/scanConfigs\/[SCAN_CONFIG_ID]\`.
+pscgName :: Lens' ProjectsScanConfigsGet Text
+pscgName = lens _pscgName (\ s a -> s{_pscgName = a})
+
+-- | JSONP
+pscgCallback :: Lens' ProjectsScanConfigsGet (Maybe Text)
+pscgCallback
+  = lens _pscgCallback (\ s a -> s{_pscgCallback = a})
+
+instance GoogleRequest ProjectsScanConfigsGet where
+        type Rs ProjectsScanConfigsGet = ScanConfig
+        type Scopes ProjectsScanConfigsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsScanConfigsGet'{..}
+          = go _pscgName _pscgXgafv _pscgUploadProtocol
+              _pscgAccessToken
+              _pscgUploadType
+              _pscgCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsScanConfigsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/List.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/List.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists scan configurations for the specified project.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.scanConfigs.list@.
+module Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.List
+    (
+    -- * REST Resource
+      ProjectsScanConfigsListResource
+
+    -- * Creating a Request
+    , projectsScanConfigsList
+    , ProjectsScanConfigsList
+
+    -- * Request Lenses
+    , psclParent
+    , psclXgafv
+    , psclUploadProtocol
+    , psclAccessToken
+    , psclUploadType
+    , psclFilter
+    , psclPageToken
+    , psclPageSize
+    , psclCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.scanConfigs.list@ method which the
+-- 'ProjectsScanConfigsList' request conforms to.
+type ProjectsScanConfigsListResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "scanConfigs" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListScanConfigsResponse
+
+-- | Lists scan configurations for the specified project.
+--
+-- /See:/ 'projectsScanConfigsList' smart constructor.
+data ProjectsScanConfigsList = ProjectsScanConfigsList'
+    { _psclParent         :: !Text
+    , _psclXgafv          :: !(Maybe Xgafv)
+    , _psclUploadProtocol :: !(Maybe Text)
+    , _psclAccessToken    :: !(Maybe Text)
+    , _psclUploadType     :: !(Maybe Text)
+    , _psclFilter         :: !(Maybe Text)
+    , _psclPageToken      :: !(Maybe Text)
+    , _psclPageSize       :: !(Maybe (Textual Int32))
+    , _psclCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsScanConfigsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psclParent'
+--
+-- * 'psclXgafv'
+--
+-- * 'psclUploadProtocol'
+--
+-- * 'psclAccessToken'
+--
+-- * 'psclUploadType'
+--
+-- * 'psclFilter'
+--
+-- * 'psclPageToken'
+--
+-- * 'psclPageSize'
+--
+-- * 'psclCallback'
+projectsScanConfigsList
+    :: Text -- ^ 'psclParent'
+    -> ProjectsScanConfigsList
+projectsScanConfigsList pPsclParent_ =
+    ProjectsScanConfigsList'
+    { _psclParent = pPsclParent_
+    , _psclXgafv = Nothing
+    , _psclUploadProtocol = Nothing
+    , _psclAccessToken = Nothing
+    , _psclUploadType = Nothing
+    , _psclFilter = Nothing
+    , _psclPageToken = Nothing
+    , _psclPageSize = Nothing
+    , _psclCallback = Nothing
+    }
+
+-- | The name of the project to list scan configurations for in the form of
+-- \`projects\/[PROJECT_ID]\`.
+psclParent :: Lens' ProjectsScanConfigsList Text
+psclParent
+  = lens _psclParent (\ s a -> s{_psclParent = a})
+
+-- | V1 error format.
+psclXgafv :: Lens' ProjectsScanConfigsList (Maybe Xgafv)
+psclXgafv
+  = lens _psclXgafv (\ s a -> s{_psclXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+psclUploadProtocol :: Lens' ProjectsScanConfigsList (Maybe Text)
+psclUploadProtocol
+  = lens _psclUploadProtocol
+      (\ s a -> s{_psclUploadProtocol = a})
+
+-- | OAuth access token.
+psclAccessToken :: Lens' ProjectsScanConfigsList (Maybe Text)
+psclAccessToken
+  = lens _psclAccessToken
+      (\ s a -> s{_psclAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+psclUploadType :: Lens' ProjectsScanConfigsList (Maybe Text)
+psclUploadType
+  = lens _psclUploadType
+      (\ s a -> s{_psclUploadType = a})
+
+-- | The filter expression.
+psclFilter :: Lens' ProjectsScanConfigsList (Maybe Text)
+psclFilter
+  = lens _psclFilter (\ s a -> s{_psclFilter = a})
+
+-- | Token to provide to skip to a particular spot in the list.
+psclPageToken :: Lens' ProjectsScanConfigsList (Maybe Text)
+psclPageToken
+  = lens _psclPageToken
+      (\ s a -> s{_psclPageToken = a})
+
+-- | The number of scan configs to return in the list.
+psclPageSize :: Lens' ProjectsScanConfigsList (Maybe Int32)
+psclPageSize
+  = lens _psclPageSize (\ s a -> s{_psclPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+psclCallback :: Lens' ProjectsScanConfigsList (Maybe Text)
+psclCallback
+  = lens _psclCallback (\ s a -> s{_psclCallback = a})
+
+instance GoogleRequest ProjectsScanConfigsList where
+        type Rs ProjectsScanConfigsList =
+             ListScanConfigsResponse
+        type Scopes ProjectsScanConfigsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsScanConfigsList'{..}
+          = go _psclParent _psclXgafv _psclUploadProtocol
+              _psclAccessToken
+              _psclUploadType
+              _psclFilter
+              _psclPageToken
+              _psclPageSize
+              _psclCallback
+              (Just AltJSON)
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsScanConfigsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/Update.hs b/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/ContainerAnalysis/Projects/ScanConfigs/Update.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified scan configuration.
+--
+-- /See:/ <https://cloud.google.com/container-analysis/api/reference/rest/ Container Analysis API Reference> for @containeranalysis.projects.scanConfigs.update@.
+module Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Update
+    (
+    -- * REST Resource
+      ProjectsScanConfigsUpdateResource
+
+    -- * Creating a Request
+    , projectsScanConfigsUpdate
+    , ProjectsScanConfigsUpdate
+
+    -- * Request Lenses
+    , pscuXgafv
+    , pscuUploadProtocol
+    , pscuAccessToken
+    , pscuUploadType
+    , pscuPayload
+    , pscuName
+    , pscuCallback
+    ) where
+
+import           Network.Google.ContainerAnalysis.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @containeranalysis.projects.scanConfigs.update@ method which the
+-- 'ProjectsScanConfigsUpdate' request conforms to.
+type ProjectsScanConfigsUpdateResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ScanConfig :> Put '[JSON] ScanConfig
+
+-- | Updates the specified scan configuration.
+--
+-- /See:/ 'projectsScanConfigsUpdate' smart constructor.
+data ProjectsScanConfigsUpdate = ProjectsScanConfigsUpdate'
+    { _pscuXgafv          :: !(Maybe Xgafv)
+    , _pscuUploadProtocol :: !(Maybe Text)
+    , _pscuAccessToken    :: !(Maybe Text)
+    , _pscuUploadType     :: !(Maybe Text)
+    , _pscuPayload        :: !ScanConfig
+    , _pscuName           :: !Text
+    , _pscuCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsScanConfigsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pscuXgafv'
+--
+-- * 'pscuUploadProtocol'
+--
+-- * 'pscuAccessToken'
+--
+-- * 'pscuUploadType'
+--
+-- * 'pscuPayload'
+--
+-- * 'pscuName'
+--
+-- * 'pscuCallback'
+projectsScanConfigsUpdate
+    :: ScanConfig -- ^ 'pscuPayload'
+    -> Text -- ^ 'pscuName'
+    -> ProjectsScanConfigsUpdate
+projectsScanConfigsUpdate pPscuPayload_ pPscuName_ =
+    ProjectsScanConfigsUpdate'
+    { _pscuXgafv = Nothing
+    , _pscuUploadProtocol = Nothing
+    , _pscuAccessToken = Nothing
+    , _pscuUploadType = Nothing
+    , _pscuPayload = pPscuPayload_
+    , _pscuName = pPscuName_
+    , _pscuCallback = Nothing
+    }
+
+-- | V1 error format.
+pscuXgafv :: Lens' ProjectsScanConfigsUpdate (Maybe Xgafv)
+pscuXgafv
+  = lens _pscuXgafv (\ s a -> s{_pscuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pscuUploadProtocol :: Lens' ProjectsScanConfigsUpdate (Maybe Text)
+pscuUploadProtocol
+  = lens _pscuUploadProtocol
+      (\ s a -> s{_pscuUploadProtocol = a})
+
+-- | OAuth access token.
+pscuAccessToken :: Lens' ProjectsScanConfigsUpdate (Maybe Text)
+pscuAccessToken
+  = lens _pscuAccessToken
+      (\ s a -> s{_pscuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pscuUploadType :: Lens' ProjectsScanConfigsUpdate (Maybe Text)
+pscuUploadType
+  = lens _pscuUploadType
+      (\ s a -> s{_pscuUploadType = a})
+
+-- | Multipart request metadata.
+pscuPayload :: Lens' ProjectsScanConfigsUpdate ScanConfig
+pscuPayload
+  = lens _pscuPayload (\ s a -> s{_pscuPayload = a})
+
+-- | The name of the scan configuration in the form of
+-- \`projects\/[PROJECT_ID]\/scanConfigs\/[SCAN_CONFIG_ID]\`.
+pscuName :: Lens' ProjectsScanConfigsUpdate Text
+pscuName = lens _pscuName (\ s a -> s{_pscuName = a})
+
+-- | JSONP
+pscuCallback :: Lens' ProjectsScanConfigsUpdate (Maybe Text)
+pscuCallback
+  = lens _pscuCallback (\ s a -> s{_pscuCallback = a})
+
+instance GoogleRequest ProjectsScanConfigsUpdate
+         where
+        type Rs ProjectsScanConfigsUpdate = ScanConfig
+        type Scopes ProjectsScanConfigsUpdate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsScanConfigsUpdate'{..}
+          = go _pscuName _pscuXgafv _pscuUploadProtocol
+              _pscuAccessToken
+              _pscuUploadType
+              _pscuCallback
+              (Just AltJSON)
+              _pscuPayload
+              containerAnalysisService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsScanConfigsUpdateResource)
+                      mempty
diff --git a/gogol-containeranalysis.cabal b/gogol-containeranalysis.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-containeranalysis.cabal
@@ -0,0 +1,70 @@
+name:                  gogol-containeranalysis
+version:               0.4.0
+synopsis:              Google Container Analysis SDK.
+homepage:              https://github.com/brendanhay/gogol
+bug-reports:           https://github.com/brendanhay/gogol/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2015-2016 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md src/.gitkeep
+
+description:
+    An implementation of the Grafeas API, which stores, and enables querying
+    and retrieval of critical metadata about all of your software artifacts.
+    .
+    /Warning:/ This is an experimental prototype/preview release which is still
+    under exploratory development and not intended for public use, caveat emptor!
+    .
+    This library is compatible with version @v1beta1@
+    of the API.
+
+source-repository head
+    type:     git
+    location: git://github.com/brendanhay/gogol.git
+
+library
+    default-language:  Haskell2010
+    hs-source-dirs:    src gen
+
+    ghc-options:       -Wall
+
+    exposed-modules:
+          Network.Google.ContainerAnalysis
+        , Network.Google.ContainerAnalysis.Types
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.BatchCreate
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.Create
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.Delete
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.Get
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.GetIAMPolicy
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.List
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.Occurrences.List
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.Patch
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.SetIAMPolicy
+        , Network.Google.Resource.ContainerAnalysis.Projects.Notes.TestIAMPermissions
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.BatchCreate
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Create
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Delete
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Get
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetIAMPolicy
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetNotes
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.GetVulnerabilitySummary
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.List
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.Patch
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.SetIAMPolicy
+        , Network.Google.Resource.ContainerAnalysis.Projects.Occurrences.TestIAMPermissions
+        , Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Get
+        , Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.List
+        , Network.Google.Resource.ContainerAnalysis.Projects.ScanConfigs.Update
+
+    other-modules:
+          Network.Google.ContainerAnalysis.Types.Product
+        , Network.Google.ContainerAnalysis.Types.Sum
+
+    build-depends:
+          gogol-core == 0.4.0.*
+        , base       >= 4.7 && < 5
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
