amazonka-ecr-2.0: gen/Amazonka/ECR/Types/PackageVulnerabilityDetails.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.ECR.Types.PackageVulnerabilityDetails
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.ECR.Types.PackageVulnerabilityDetails where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ECR.Types.CvssScore
import Amazonka.ECR.Types.VulnerablePackage
import qualified Amazonka.Prelude as Prelude
-- | Information about a package vulnerability finding.
--
-- /See:/ 'newPackageVulnerabilityDetails' smart constructor.
data PackageVulnerabilityDetails = PackageVulnerabilityDetails'
{ -- | An object that contains details about the CVSS score of a finding.
cvss :: Prelude.Maybe [CvssScore],
-- | One or more URLs that contain details about this vulnerability type.
referenceUrls :: Prelude.Maybe [Prelude.Text],
-- | One or more vulnerabilities related to the one identified in this
-- finding.
relatedVulnerabilities :: Prelude.Maybe [Prelude.Text],
-- | The source of the vulnerability information.
source :: Prelude.Maybe Prelude.Text,
-- | A URL to the source of the vulnerability information.
sourceUrl :: Prelude.Maybe Prelude.Text,
-- | The date and time that this vulnerability was first added to the
-- vendor\'s database.
vendorCreatedAt :: Prelude.Maybe Data.POSIX,
-- | The severity the vendor has given to this vulnerability type.
vendorSeverity :: Prelude.Maybe Prelude.Text,
-- | The date and time the vendor last updated this vulnerability in their
-- database.
vendorUpdatedAt :: Prelude.Maybe Data.POSIX,
-- | The ID given to this vulnerability.
vulnerabilityId :: Prelude.Maybe Prelude.Text,
-- | The packages impacted by this vulnerability.
vulnerablePackages :: Prelude.Maybe [VulnerablePackage]
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'PackageVulnerabilityDetails' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'cvss', 'packageVulnerabilityDetails_cvss' - An object that contains details about the CVSS score of a finding.
--
-- 'referenceUrls', 'packageVulnerabilityDetails_referenceUrls' - One or more URLs that contain details about this vulnerability type.
--
-- 'relatedVulnerabilities', 'packageVulnerabilityDetails_relatedVulnerabilities' - One or more vulnerabilities related to the one identified in this
-- finding.
--
-- 'source', 'packageVulnerabilityDetails_source' - The source of the vulnerability information.
--
-- 'sourceUrl', 'packageVulnerabilityDetails_sourceUrl' - A URL to the source of the vulnerability information.
--
-- 'vendorCreatedAt', 'packageVulnerabilityDetails_vendorCreatedAt' - The date and time that this vulnerability was first added to the
-- vendor\'s database.
--
-- 'vendorSeverity', 'packageVulnerabilityDetails_vendorSeverity' - The severity the vendor has given to this vulnerability type.
--
-- 'vendorUpdatedAt', 'packageVulnerabilityDetails_vendorUpdatedAt' - The date and time the vendor last updated this vulnerability in their
-- database.
--
-- 'vulnerabilityId', 'packageVulnerabilityDetails_vulnerabilityId' - The ID given to this vulnerability.
--
-- 'vulnerablePackages', 'packageVulnerabilityDetails_vulnerablePackages' - The packages impacted by this vulnerability.
newPackageVulnerabilityDetails ::
PackageVulnerabilityDetails
newPackageVulnerabilityDetails =
PackageVulnerabilityDetails'
{ cvss =
Prelude.Nothing,
referenceUrls = Prelude.Nothing,
relatedVulnerabilities = Prelude.Nothing,
source = Prelude.Nothing,
sourceUrl = Prelude.Nothing,
vendorCreatedAt = Prelude.Nothing,
vendorSeverity = Prelude.Nothing,
vendorUpdatedAt = Prelude.Nothing,
vulnerabilityId = Prelude.Nothing,
vulnerablePackages = Prelude.Nothing
}
-- | An object that contains details about the CVSS score of a finding.
packageVulnerabilityDetails_cvss :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe [CvssScore])
packageVulnerabilityDetails_cvss = Lens.lens (\PackageVulnerabilityDetails' {cvss} -> cvss) (\s@PackageVulnerabilityDetails' {} a -> s {cvss = a} :: PackageVulnerabilityDetails) Prelude.. Lens.mapping Lens.coerced
-- | One or more URLs that contain details about this vulnerability type.
packageVulnerabilityDetails_referenceUrls :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe [Prelude.Text])
packageVulnerabilityDetails_referenceUrls = Lens.lens (\PackageVulnerabilityDetails' {referenceUrls} -> referenceUrls) (\s@PackageVulnerabilityDetails' {} a -> s {referenceUrls = a} :: PackageVulnerabilityDetails) Prelude.. Lens.mapping Lens.coerced
-- | One or more vulnerabilities related to the one identified in this
-- finding.
packageVulnerabilityDetails_relatedVulnerabilities :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe [Prelude.Text])
packageVulnerabilityDetails_relatedVulnerabilities = Lens.lens (\PackageVulnerabilityDetails' {relatedVulnerabilities} -> relatedVulnerabilities) (\s@PackageVulnerabilityDetails' {} a -> s {relatedVulnerabilities = a} :: PackageVulnerabilityDetails) Prelude.. Lens.mapping Lens.coerced
-- | The source of the vulnerability information.
packageVulnerabilityDetails_source :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe Prelude.Text)
packageVulnerabilityDetails_source = Lens.lens (\PackageVulnerabilityDetails' {source} -> source) (\s@PackageVulnerabilityDetails' {} a -> s {source = a} :: PackageVulnerabilityDetails)
-- | A URL to the source of the vulnerability information.
packageVulnerabilityDetails_sourceUrl :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe Prelude.Text)
packageVulnerabilityDetails_sourceUrl = Lens.lens (\PackageVulnerabilityDetails' {sourceUrl} -> sourceUrl) (\s@PackageVulnerabilityDetails' {} a -> s {sourceUrl = a} :: PackageVulnerabilityDetails)
-- | The date and time that this vulnerability was first added to the
-- vendor\'s database.
packageVulnerabilityDetails_vendorCreatedAt :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe Prelude.UTCTime)
packageVulnerabilityDetails_vendorCreatedAt = Lens.lens (\PackageVulnerabilityDetails' {vendorCreatedAt} -> vendorCreatedAt) (\s@PackageVulnerabilityDetails' {} a -> s {vendorCreatedAt = a} :: PackageVulnerabilityDetails) Prelude.. Lens.mapping Data._Time
-- | The severity the vendor has given to this vulnerability type.
packageVulnerabilityDetails_vendorSeverity :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe Prelude.Text)
packageVulnerabilityDetails_vendorSeverity = Lens.lens (\PackageVulnerabilityDetails' {vendorSeverity} -> vendorSeverity) (\s@PackageVulnerabilityDetails' {} a -> s {vendorSeverity = a} :: PackageVulnerabilityDetails)
-- | The date and time the vendor last updated this vulnerability in their
-- database.
packageVulnerabilityDetails_vendorUpdatedAt :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe Prelude.UTCTime)
packageVulnerabilityDetails_vendorUpdatedAt = Lens.lens (\PackageVulnerabilityDetails' {vendorUpdatedAt} -> vendorUpdatedAt) (\s@PackageVulnerabilityDetails' {} a -> s {vendorUpdatedAt = a} :: PackageVulnerabilityDetails) Prelude.. Lens.mapping Data._Time
-- | The ID given to this vulnerability.
packageVulnerabilityDetails_vulnerabilityId :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe Prelude.Text)
packageVulnerabilityDetails_vulnerabilityId = Lens.lens (\PackageVulnerabilityDetails' {vulnerabilityId} -> vulnerabilityId) (\s@PackageVulnerabilityDetails' {} a -> s {vulnerabilityId = a} :: PackageVulnerabilityDetails)
-- | The packages impacted by this vulnerability.
packageVulnerabilityDetails_vulnerablePackages :: Lens.Lens' PackageVulnerabilityDetails (Prelude.Maybe [VulnerablePackage])
packageVulnerabilityDetails_vulnerablePackages = Lens.lens (\PackageVulnerabilityDetails' {vulnerablePackages} -> vulnerablePackages) (\s@PackageVulnerabilityDetails' {} a -> s {vulnerablePackages = a} :: PackageVulnerabilityDetails) Prelude.. Lens.mapping Lens.coerced
instance Data.FromJSON PackageVulnerabilityDetails where
parseJSON =
Data.withObject
"PackageVulnerabilityDetails"
( \x ->
PackageVulnerabilityDetails'
Prelude.<$> (x Data..:? "cvss" Data..!= Prelude.mempty)
Prelude.<*> (x Data..:? "referenceUrls" Data..!= Prelude.mempty)
Prelude.<*> ( x
Data..:? "relatedVulnerabilities"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "source")
Prelude.<*> (x Data..:? "sourceUrl")
Prelude.<*> (x Data..:? "vendorCreatedAt")
Prelude.<*> (x Data..:? "vendorSeverity")
Prelude.<*> (x Data..:? "vendorUpdatedAt")
Prelude.<*> (x Data..:? "vulnerabilityId")
Prelude.<*> ( x
Data..:? "vulnerablePackages"
Data..!= Prelude.mempty
)
)
instance Prelude.Hashable PackageVulnerabilityDetails where
hashWithSalt _salt PackageVulnerabilityDetails' {..} =
_salt
`Prelude.hashWithSalt` cvss
`Prelude.hashWithSalt` referenceUrls
`Prelude.hashWithSalt` relatedVulnerabilities
`Prelude.hashWithSalt` source
`Prelude.hashWithSalt` sourceUrl
`Prelude.hashWithSalt` vendorCreatedAt
`Prelude.hashWithSalt` vendorSeverity
`Prelude.hashWithSalt` vendorUpdatedAt
`Prelude.hashWithSalt` vulnerabilityId
`Prelude.hashWithSalt` vulnerablePackages
instance Prelude.NFData PackageVulnerabilityDetails where
rnf PackageVulnerabilityDetails' {..} =
Prelude.rnf cvss
`Prelude.seq` Prelude.rnf referenceUrls
`Prelude.seq` Prelude.rnf relatedVulnerabilities
`Prelude.seq` Prelude.rnf source
`Prelude.seq` Prelude.rnf sourceUrl
`Prelude.seq` Prelude.rnf vendorCreatedAt
`Prelude.seq` Prelude.rnf vendorSeverity
`Prelude.seq` Prelude.rnf vendorUpdatedAt
`Prelude.seq` Prelude.rnf vulnerabilityId
`Prelude.seq` Prelude.rnf vulnerablePackages