{-# 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 or 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