{-# 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.IoT.Types.CertificateDescription -- 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.IoT.Types.CertificateDescription where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.IoT.Types.CertificateMode import Amazonka.IoT.Types.CertificateStatus import Amazonka.IoT.Types.CertificateValidity import Amazonka.IoT.Types.TransferData import qualified Amazonka.Prelude as Prelude -- | Describes a certificate. -- -- /See:/ 'newCertificateDescription' smart constructor. data CertificateDescription = CertificateDescription' { -- | The certificate ID of the CA certificate used to sign this certificate. caCertificateId :: Prelude.Maybe Prelude.Text, -- | The ARN of the certificate. certificateArn :: Prelude.Maybe Prelude.Text, -- | The ID of the certificate. certificateId :: Prelude.Maybe Prelude.Text, -- | The mode of the certificate. -- -- @DEFAULT@: A certificate in @DEFAULT@ mode is either generated by Amazon -- Web Services IoT Core or registered with an issuer certificate authority -- (CA) in @DEFAULT@ mode. Devices with certificates in @DEFAULT@ mode -- aren\'t required to send the Server Name Indication (SNI) extension when -- connecting to Amazon Web Services IoT Core. However, to use features -- such as custom domains and VPC endpoints, we recommend that you use the -- SNI extension when connecting to Amazon Web Services IoT Core. -- -- @SNI_ONLY@: A certificate in @SNI_ONLY@ mode is registered without an -- issuer CA. Devices with certificates in @SNI_ONLY@ mode must send the -- SNI extension when connecting to Amazon Web Services IoT Core. -- -- For more information about the value for SNI extension, see -- . certificateMode :: Prelude.Maybe CertificateMode, -- | The certificate data, in PEM format. certificatePem :: Prelude.Maybe Prelude.Text, -- | The date and time the certificate was created. creationDate :: Prelude.Maybe Data.POSIX, -- | The customer version of the certificate. customerVersion :: Prelude.Maybe Prelude.Natural, -- | The generation ID of the certificate. generationId :: Prelude.Maybe Prelude.Text, -- | The date and time the certificate was last modified. lastModifiedDate :: Prelude.Maybe Data.POSIX, -- | The ID of the Amazon Web Services account that owns the certificate. ownedBy :: Prelude.Maybe Prelude.Text, -- | The ID of the Amazon Web Services account of the previous owner of the -- certificate. previousOwnedBy :: Prelude.Maybe Prelude.Text, -- | The status of the certificate. status :: Prelude.Maybe CertificateStatus, -- | The transfer data. transferData :: Prelude.Maybe TransferData, -- | When the certificate is valid. validity :: Prelude.Maybe CertificateValidity } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CertificateDescription' 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: -- -- 'caCertificateId', 'certificateDescription_caCertificateId' - The certificate ID of the CA certificate used to sign this certificate. -- -- 'certificateArn', 'certificateDescription_certificateArn' - The ARN of the certificate. -- -- 'certificateId', 'certificateDescription_certificateId' - The ID of the certificate. -- -- 'certificateMode', 'certificateDescription_certificateMode' - The mode of the certificate. -- -- @DEFAULT@: A certificate in @DEFAULT@ mode is either generated by Amazon -- Web Services IoT Core or registered with an issuer certificate authority -- (CA) in @DEFAULT@ mode. Devices with certificates in @DEFAULT@ mode -- aren\'t required to send the Server Name Indication (SNI) extension when -- connecting to Amazon Web Services IoT Core. However, to use features -- such as custom domains and VPC endpoints, we recommend that you use the -- SNI extension when connecting to Amazon Web Services IoT Core. -- -- @SNI_ONLY@: A certificate in @SNI_ONLY@ mode is registered without an -- issuer CA. Devices with certificates in @SNI_ONLY@ mode must send the -- SNI extension when connecting to Amazon Web Services IoT Core. -- -- For more information about the value for SNI extension, see -- . -- -- 'certificatePem', 'certificateDescription_certificatePem' - The certificate data, in PEM format. -- -- 'creationDate', 'certificateDescription_creationDate' - The date and time the certificate was created. -- -- 'customerVersion', 'certificateDescription_customerVersion' - The customer version of the certificate. -- -- 'generationId', 'certificateDescription_generationId' - The generation ID of the certificate. -- -- 'lastModifiedDate', 'certificateDescription_lastModifiedDate' - The date and time the certificate was last modified. -- -- 'ownedBy', 'certificateDescription_ownedBy' - The ID of the Amazon Web Services account that owns the certificate. -- -- 'previousOwnedBy', 'certificateDescription_previousOwnedBy' - The ID of the Amazon Web Services account of the previous owner of the -- certificate. -- -- 'status', 'certificateDescription_status' - The status of the certificate. -- -- 'transferData', 'certificateDescription_transferData' - The transfer data. -- -- 'validity', 'certificateDescription_validity' - When the certificate is valid. newCertificateDescription :: CertificateDescription newCertificateDescription = CertificateDescription' { caCertificateId = Prelude.Nothing, certificateArn = Prelude.Nothing, certificateId = Prelude.Nothing, certificateMode = Prelude.Nothing, certificatePem = Prelude.Nothing, creationDate = Prelude.Nothing, customerVersion = Prelude.Nothing, generationId = Prelude.Nothing, lastModifiedDate = Prelude.Nothing, ownedBy = Prelude.Nothing, previousOwnedBy = Prelude.Nothing, status = Prelude.Nothing, transferData = Prelude.Nothing, validity = Prelude.Nothing } -- | The certificate ID of the CA certificate used to sign this certificate. certificateDescription_caCertificateId :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.Text) certificateDescription_caCertificateId = Lens.lens (\CertificateDescription' {caCertificateId} -> caCertificateId) (\s@CertificateDescription' {} a -> s {caCertificateId = a} :: CertificateDescription) -- | The ARN of the certificate. certificateDescription_certificateArn :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.Text) certificateDescription_certificateArn = Lens.lens (\CertificateDescription' {certificateArn} -> certificateArn) (\s@CertificateDescription' {} a -> s {certificateArn = a} :: CertificateDescription) -- | The ID of the certificate. certificateDescription_certificateId :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.Text) certificateDescription_certificateId = Lens.lens (\CertificateDescription' {certificateId} -> certificateId) (\s@CertificateDescription' {} a -> s {certificateId = a} :: CertificateDescription) -- | The mode of the certificate. -- -- @DEFAULT@: A certificate in @DEFAULT@ mode is either generated by Amazon -- Web Services IoT Core or registered with an issuer certificate authority -- (CA) in @DEFAULT@ mode. Devices with certificates in @DEFAULT@ mode -- aren\'t required to send the Server Name Indication (SNI) extension when -- connecting to Amazon Web Services IoT Core. However, to use features -- such as custom domains and VPC endpoints, we recommend that you use the -- SNI extension when connecting to Amazon Web Services IoT Core. -- -- @SNI_ONLY@: A certificate in @SNI_ONLY@ mode is registered without an -- issuer CA. Devices with certificates in @SNI_ONLY@ mode must send the -- SNI extension when connecting to Amazon Web Services IoT Core. -- -- For more information about the value for SNI extension, see -- . certificateDescription_certificateMode :: Lens.Lens' CertificateDescription (Prelude.Maybe CertificateMode) certificateDescription_certificateMode = Lens.lens (\CertificateDescription' {certificateMode} -> certificateMode) (\s@CertificateDescription' {} a -> s {certificateMode = a} :: CertificateDescription) -- | The certificate data, in PEM format. certificateDescription_certificatePem :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.Text) certificateDescription_certificatePem = Lens.lens (\CertificateDescription' {certificatePem} -> certificatePem) (\s@CertificateDescription' {} a -> s {certificatePem = a} :: CertificateDescription) -- | The date and time the certificate was created. certificateDescription_creationDate :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.UTCTime) certificateDescription_creationDate = Lens.lens (\CertificateDescription' {creationDate} -> creationDate) (\s@CertificateDescription' {} a -> s {creationDate = a} :: CertificateDescription) Prelude.. Lens.mapping Data._Time -- | The customer version of the certificate. certificateDescription_customerVersion :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.Natural) certificateDescription_customerVersion = Lens.lens (\CertificateDescription' {customerVersion} -> customerVersion) (\s@CertificateDescription' {} a -> s {customerVersion = a} :: CertificateDescription) -- | The generation ID of the certificate. certificateDescription_generationId :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.Text) certificateDescription_generationId = Lens.lens (\CertificateDescription' {generationId} -> generationId) (\s@CertificateDescription' {} a -> s {generationId = a} :: CertificateDescription) -- | The date and time the certificate was last modified. certificateDescription_lastModifiedDate :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.UTCTime) certificateDescription_lastModifiedDate = Lens.lens (\CertificateDescription' {lastModifiedDate} -> lastModifiedDate) (\s@CertificateDescription' {} a -> s {lastModifiedDate = a} :: CertificateDescription) Prelude.. Lens.mapping Data._Time -- | The ID of the Amazon Web Services account that owns the certificate. certificateDescription_ownedBy :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.Text) certificateDescription_ownedBy = Lens.lens (\CertificateDescription' {ownedBy} -> ownedBy) (\s@CertificateDescription' {} a -> s {ownedBy = a} :: CertificateDescription) -- | The ID of the Amazon Web Services account of the previous owner of the -- certificate. certificateDescription_previousOwnedBy :: Lens.Lens' CertificateDescription (Prelude.Maybe Prelude.Text) certificateDescription_previousOwnedBy = Lens.lens (\CertificateDescription' {previousOwnedBy} -> previousOwnedBy) (\s@CertificateDescription' {} a -> s {previousOwnedBy = a} :: CertificateDescription) -- | The status of the certificate. certificateDescription_status :: Lens.Lens' CertificateDescription (Prelude.Maybe CertificateStatus) certificateDescription_status = Lens.lens (\CertificateDescription' {status} -> status) (\s@CertificateDescription' {} a -> s {status = a} :: CertificateDescription) -- | The transfer data. certificateDescription_transferData :: Lens.Lens' CertificateDescription (Prelude.Maybe TransferData) certificateDescription_transferData = Lens.lens (\CertificateDescription' {transferData} -> transferData) (\s@CertificateDescription' {} a -> s {transferData = a} :: CertificateDescription) -- | When the certificate is valid. certificateDescription_validity :: Lens.Lens' CertificateDescription (Prelude.Maybe CertificateValidity) certificateDescription_validity = Lens.lens (\CertificateDescription' {validity} -> validity) (\s@CertificateDescription' {} a -> s {validity = a} :: CertificateDescription) instance Data.FromJSON CertificateDescription where parseJSON = Data.withObject "CertificateDescription" ( \x -> CertificateDescription' Prelude.<$> (x Data..:? "caCertificateId") Prelude.<*> (x Data..:? "certificateArn") Prelude.<*> (x Data..:? "certificateId") Prelude.<*> (x Data..:? "certificateMode") Prelude.<*> (x Data..:? "certificatePem") Prelude.<*> (x Data..:? "creationDate") Prelude.<*> (x Data..:? "customerVersion") Prelude.<*> (x Data..:? "generationId") Prelude.<*> (x Data..:? "lastModifiedDate") Prelude.<*> (x Data..:? "ownedBy") Prelude.<*> (x Data..:? "previousOwnedBy") Prelude.<*> (x Data..:? "status") Prelude.<*> (x Data..:? "transferData") Prelude.<*> (x Data..:? "validity") ) instance Prelude.Hashable CertificateDescription where hashWithSalt _salt CertificateDescription' {..} = _salt `Prelude.hashWithSalt` caCertificateId `Prelude.hashWithSalt` certificateArn `Prelude.hashWithSalt` certificateId `Prelude.hashWithSalt` certificateMode `Prelude.hashWithSalt` certificatePem `Prelude.hashWithSalt` creationDate `Prelude.hashWithSalt` customerVersion `Prelude.hashWithSalt` generationId `Prelude.hashWithSalt` lastModifiedDate `Prelude.hashWithSalt` ownedBy `Prelude.hashWithSalt` previousOwnedBy `Prelude.hashWithSalt` status `Prelude.hashWithSalt` transferData `Prelude.hashWithSalt` validity instance Prelude.NFData CertificateDescription where rnf CertificateDescription' {..} = Prelude.rnf caCertificateId `Prelude.seq` Prelude.rnf certificateArn `Prelude.seq` Prelude.rnf certificateId `Prelude.seq` Prelude.rnf certificateMode `Prelude.seq` Prelude.rnf certificatePem `Prelude.seq` Prelude.rnf creationDate `Prelude.seq` Prelude.rnf customerVersion `Prelude.seq` Prelude.rnf generationId `Prelude.seq` Prelude.rnf lastModifiedDate `Prelude.seq` Prelude.rnf ownedBy `Prelude.seq` Prelude.rnf previousOwnedBy `Prelude.seq` Prelude.rnf status `Prelude.seq` Prelude.rnf transferData `Prelude.seq` Prelude.rnf validity