{-# 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.CACertificateDescription
-- 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.CACertificateDescription 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.AutoRegistrationStatus
import Amazonka.IoT.Types.CACertificateStatus
import Amazonka.IoT.Types.CertificateMode
import Amazonka.IoT.Types.CertificateValidity
import qualified Amazonka.Prelude as Prelude

-- | Describes a CA certificate.
--
-- /See:/ 'newCACertificateDescription' smart constructor.
data CACertificateDescription = CACertificateDescription'
  { -- | Whether the CA certificate configured for auto registration of device
    -- certificates. Valid values are \"ENABLE\" and \"DISABLE\"
    CACertificateDescription -> Maybe AutoRegistrationStatus
autoRegistrationStatus :: Prelude.Maybe AutoRegistrationStatus,
    -- | The CA certificate ARN.
    CACertificateDescription -> Maybe Text
certificateArn :: Prelude.Maybe Prelude.Text,
    -- | The CA certificate ID.
    CACertificateDescription -> Maybe Text
certificateId :: Prelude.Maybe Prelude.Text,
    -- | The mode of the CA.
    --
    -- All the device certificates that are registered using this CA will be
    -- registered in the same mode as the CA. For more information about
    -- certificate mode for device certificates, see
    -- <https://docs.aws.amazon.com/iot/latest/apireference/API_CertificateDescription.html#iot-Type-CertificateDescription-certificateMode certificate mode>.
    CACertificateDescription -> Maybe CertificateMode
certificateMode :: Prelude.Maybe CertificateMode,
    -- | The CA certificate data, in PEM format.
    CACertificateDescription -> Maybe Text
certificatePem :: Prelude.Maybe Prelude.Text,
    -- | The date the CA certificate was created.
    CACertificateDescription -> Maybe POSIX
creationDate :: Prelude.Maybe Data.POSIX,
    -- | The customer version of the CA certificate.
    CACertificateDescription -> Maybe Natural
customerVersion :: Prelude.Maybe Prelude.Natural,
    -- | The generation ID of the CA certificate.
    CACertificateDescription -> Maybe Text
generationId :: Prelude.Maybe Prelude.Text,
    -- | The date the CA certificate was last modified.
    CACertificateDescription -> Maybe POSIX
lastModifiedDate :: Prelude.Maybe Data.POSIX,
    -- | The owner of the CA certificate.
    CACertificateDescription -> Maybe Text
ownedBy :: Prelude.Maybe Prelude.Text,
    -- | The status of a CA certificate.
    CACertificateDescription -> Maybe CACertificateStatus
status :: Prelude.Maybe CACertificateStatus,
    -- | When the CA certificate is valid.
    CACertificateDescription -> Maybe CertificateValidity
validity :: Prelude.Maybe CertificateValidity
  }
  deriving (CACertificateDescription -> CACertificateDescription -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CACertificateDescription -> CACertificateDescription -> Bool
$c/= :: CACertificateDescription -> CACertificateDescription -> Bool
== :: CACertificateDescription -> CACertificateDescription -> Bool
$c== :: CACertificateDescription -> CACertificateDescription -> Bool
Prelude.Eq, ReadPrec [CACertificateDescription]
ReadPrec CACertificateDescription
Int -> ReadS CACertificateDescription
ReadS [CACertificateDescription]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CACertificateDescription]
$creadListPrec :: ReadPrec [CACertificateDescription]
readPrec :: ReadPrec CACertificateDescription
$creadPrec :: ReadPrec CACertificateDescription
readList :: ReadS [CACertificateDescription]
$creadList :: ReadS [CACertificateDescription]
readsPrec :: Int -> ReadS CACertificateDescription
$creadsPrec :: Int -> ReadS CACertificateDescription
Prelude.Read, Int -> CACertificateDescription -> ShowS
[CACertificateDescription] -> ShowS
CACertificateDescription -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CACertificateDescription] -> ShowS
$cshowList :: [CACertificateDescription] -> ShowS
show :: CACertificateDescription -> String
$cshow :: CACertificateDescription -> String
showsPrec :: Int -> CACertificateDescription -> ShowS
$cshowsPrec :: Int -> CACertificateDescription -> ShowS
Prelude.Show, forall x.
Rep CACertificateDescription x -> CACertificateDescription
forall x.
CACertificateDescription -> Rep CACertificateDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CACertificateDescription x -> CACertificateDescription
$cfrom :: forall x.
CACertificateDescription -> Rep CACertificateDescription x
Prelude.Generic)

-- |
-- Create a value of 'CACertificateDescription' 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:
--
-- 'autoRegistrationStatus', 'cACertificateDescription_autoRegistrationStatus' - Whether the CA certificate configured for auto registration of device
-- certificates. Valid values are \"ENABLE\" and \"DISABLE\"
--
-- 'certificateArn', 'cACertificateDescription_certificateArn' - The CA certificate ARN.
--
-- 'certificateId', 'cACertificateDescription_certificateId' - The CA certificate ID.
--
-- 'certificateMode', 'cACertificateDescription_certificateMode' - The mode of the CA.
--
-- All the device certificates that are registered using this CA will be
-- registered in the same mode as the CA. For more information about
-- certificate mode for device certificates, see
-- <https://docs.aws.amazon.com/iot/latest/apireference/API_CertificateDescription.html#iot-Type-CertificateDescription-certificateMode certificate mode>.
--
-- 'certificatePem', 'cACertificateDescription_certificatePem' - The CA certificate data, in PEM format.
--
-- 'creationDate', 'cACertificateDescription_creationDate' - The date the CA certificate was created.
--
-- 'customerVersion', 'cACertificateDescription_customerVersion' - The customer version of the CA certificate.
--
-- 'generationId', 'cACertificateDescription_generationId' - The generation ID of the CA certificate.
--
-- 'lastModifiedDate', 'cACertificateDescription_lastModifiedDate' - The date the CA certificate was last modified.
--
-- 'ownedBy', 'cACertificateDescription_ownedBy' - The owner of the CA certificate.
--
-- 'status', 'cACertificateDescription_status' - The status of a CA certificate.
--
-- 'validity', 'cACertificateDescription_validity' - When the CA certificate is valid.
newCACertificateDescription ::
  CACertificateDescription
newCACertificateDescription :: CACertificateDescription
newCACertificateDescription =
  CACertificateDescription'
    { $sel:autoRegistrationStatus:CACertificateDescription' :: Maybe AutoRegistrationStatus
autoRegistrationStatus =
        forall a. Maybe a
Prelude.Nothing,
      $sel:certificateArn:CACertificateDescription' :: Maybe Text
certificateArn = forall a. Maybe a
Prelude.Nothing,
      $sel:certificateId:CACertificateDescription' :: Maybe Text
certificateId = forall a. Maybe a
Prelude.Nothing,
      $sel:certificateMode:CACertificateDescription' :: Maybe CertificateMode
certificateMode = forall a. Maybe a
Prelude.Nothing,
      $sel:certificatePem:CACertificateDescription' :: Maybe Text
certificatePem = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:CACertificateDescription' :: Maybe POSIX
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:customerVersion:CACertificateDescription' :: Maybe Natural
customerVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:generationId:CACertificateDescription' :: Maybe Text
generationId = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:CACertificateDescription' :: Maybe POSIX
lastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:ownedBy:CACertificateDescription' :: Maybe Text
ownedBy = forall a. Maybe a
Prelude.Nothing,
      $sel:status:CACertificateDescription' :: Maybe CACertificateStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:validity:CACertificateDescription' :: Maybe CertificateValidity
validity = forall a. Maybe a
Prelude.Nothing
    }

-- | Whether the CA certificate configured for auto registration of device
-- certificates. Valid values are \"ENABLE\" and \"DISABLE\"
cACertificateDescription_autoRegistrationStatus :: Lens.Lens' CACertificateDescription (Prelude.Maybe AutoRegistrationStatus)
cACertificateDescription_autoRegistrationStatus :: Lens' CACertificateDescription (Maybe AutoRegistrationStatus)
cACertificateDescription_autoRegistrationStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe AutoRegistrationStatus
autoRegistrationStatus :: Maybe AutoRegistrationStatus
$sel:autoRegistrationStatus:CACertificateDescription' :: CACertificateDescription -> Maybe AutoRegistrationStatus
autoRegistrationStatus} -> Maybe AutoRegistrationStatus
autoRegistrationStatus) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe AutoRegistrationStatus
a -> CACertificateDescription
s {$sel:autoRegistrationStatus:CACertificateDescription' :: Maybe AutoRegistrationStatus
autoRegistrationStatus = Maybe AutoRegistrationStatus
a} :: CACertificateDescription)

-- | The CA certificate ARN.
cACertificateDescription_certificateArn :: Lens.Lens' CACertificateDescription (Prelude.Maybe Prelude.Text)
cACertificateDescription_certificateArn :: Lens' CACertificateDescription (Maybe Text)
cACertificateDescription_certificateArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe Text
certificateArn :: Maybe Text
$sel:certificateArn:CACertificateDescription' :: CACertificateDescription -> Maybe Text
certificateArn} -> Maybe Text
certificateArn) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe Text
a -> CACertificateDescription
s {$sel:certificateArn:CACertificateDescription' :: Maybe Text
certificateArn = Maybe Text
a} :: CACertificateDescription)

-- | The CA certificate ID.
cACertificateDescription_certificateId :: Lens.Lens' CACertificateDescription (Prelude.Maybe Prelude.Text)
cACertificateDescription_certificateId :: Lens' CACertificateDescription (Maybe Text)
cACertificateDescription_certificateId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe Text
certificateId :: Maybe Text
$sel:certificateId:CACertificateDescription' :: CACertificateDescription -> Maybe Text
certificateId} -> Maybe Text
certificateId) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe Text
a -> CACertificateDescription
s {$sel:certificateId:CACertificateDescription' :: Maybe Text
certificateId = Maybe Text
a} :: CACertificateDescription)

-- | The mode of the CA.
--
-- All the device certificates that are registered using this CA will be
-- registered in the same mode as the CA. For more information about
-- certificate mode for device certificates, see
-- <https://docs.aws.amazon.com/iot/latest/apireference/API_CertificateDescription.html#iot-Type-CertificateDescription-certificateMode certificate mode>.
cACertificateDescription_certificateMode :: Lens.Lens' CACertificateDescription (Prelude.Maybe CertificateMode)
cACertificateDescription_certificateMode :: Lens' CACertificateDescription (Maybe CertificateMode)
cACertificateDescription_certificateMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe CertificateMode
certificateMode :: Maybe CertificateMode
$sel:certificateMode:CACertificateDescription' :: CACertificateDescription -> Maybe CertificateMode
certificateMode} -> Maybe CertificateMode
certificateMode) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe CertificateMode
a -> CACertificateDescription
s {$sel:certificateMode:CACertificateDescription' :: Maybe CertificateMode
certificateMode = Maybe CertificateMode
a} :: CACertificateDescription)

-- | The CA certificate data, in PEM format.
cACertificateDescription_certificatePem :: Lens.Lens' CACertificateDescription (Prelude.Maybe Prelude.Text)
cACertificateDescription_certificatePem :: Lens' CACertificateDescription (Maybe Text)
cACertificateDescription_certificatePem = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe Text
certificatePem :: Maybe Text
$sel:certificatePem:CACertificateDescription' :: CACertificateDescription -> Maybe Text
certificatePem} -> Maybe Text
certificatePem) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe Text
a -> CACertificateDescription
s {$sel:certificatePem:CACertificateDescription' :: Maybe Text
certificatePem = Maybe Text
a} :: CACertificateDescription)

-- | The date the CA certificate was created.
cACertificateDescription_creationDate :: Lens.Lens' CACertificateDescription (Prelude.Maybe Prelude.UTCTime)
cACertificateDescription_creationDate :: Lens' CACertificateDescription (Maybe UTCTime)
cACertificateDescription_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:CACertificateDescription' :: CACertificateDescription -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe POSIX
a -> CACertificateDescription
s {$sel:creationDate:CACertificateDescription' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: CACertificateDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The customer version of the CA certificate.
cACertificateDescription_customerVersion :: Lens.Lens' CACertificateDescription (Prelude.Maybe Prelude.Natural)
cACertificateDescription_customerVersion :: Lens' CACertificateDescription (Maybe Natural)
cACertificateDescription_customerVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe Natural
customerVersion :: Maybe Natural
$sel:customerVersion:CACertificateDescription' :: CACertificateDescription -> Maybe Natural
customerVersion} -> Maybe Natural
customerVersion) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe Natural
a -> CACertificateDescription
s {$sel:customerVersion:CACertificateDescription' :: Maybe Natural
customerVersion = Maybe Natural
a} :: CACertificateDescription)

-- | The generation ID of the CA certificate.
cACertificateDescription_generationId :: Lens.Lens' CACertificateDescription (Prelude.Maybe Prelude.Text)
cACertificateDescription_generationId :: Lens' CACertificateDescription (Maybe Text)
cACertificateDescription_generationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe Text
generationId :: Maybe Text
$sel:generationId:CACertificateDescription' :: CACertificateDescription -> Maybe Text
generationId} -> Maybe Text
generationId) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe Text
a -> CACertificateDescription
s {$sel:generationId:CACertificateDescription' :: Maybe Text
generationId = Maybe Text
a} :: CACertificateDescription)

-- | The date the CA certificate was last modified.
cACertificateDescription_lastModifiedDate :: Lens.Lens' CACertificateDescription (Prelude.Maybe Prelude.UTCTime)
cACertificateDescription_lastModifiedDate :: Lens' CACertificateDescription (Maybe UTCTime)
cACertificateDescription_lastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe POSIX
lastModifiedDate :: Maybe POSIX
$sel:lastModifiedDate:CACertificateDescription' :: CACertificateDescription -> Maybe POSIX
lastModifiedDate} -> Maybe POSIX
lastModifiedDate) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe POSIX
a -> CACertificateDescription
s {$sel:lastModifiedDate:CACertificateDescription' :: Maybe POSIX
lastModifiedDate = Maybe POSIX
a} :: CACertificateDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The owner of the CA certificate.
cACertificateDescription_ownedBy :: Lens.Lens' CACertificateDescription (Prelude.Maybe Prelude.Text)
cACertificateDescription_ownedBy :: Lens' CACertificateDescription (Maybe Text)
cACertificateDescription_ownedBy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe Text
ownedBy :: Maybe Text
$sel:ownedBy:CACertificateDescription' :: CACertificateDescription -> Maybe Text
ownedBy} -> Maybe Text
ownedBy) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe Text
a -> CACertificateDescription
s {$sel:ownedBy:CACertificateDescription' :: Maybe Text
ownedBy = Maybe Text
a} :: CACertificateDescription)

-- | The status of a CA certificate.
cACertificateDescription_status :: Lens.Lens' CACertificateDescription (Prelude.Maybe CACertificateStatus)
cACertificateDescription_status :: Lens' CACertificateDescription (Maybe CACertificateStatus)
cACertificateDescription_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe CACertificateStatus
status :: Maybe CACertificateStatus
$sel:status:CACertificateDescription' :: CACertificateDescription -> Maybe CACertificateStatus
status} -> Maybe CACertificateStatus
status) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe CACertificateStatus
a -> CACertificateDescription
s {$sel:status:CACertificateDescription' :: Maybe CACertificateStatus
status = Maybe CACertificateStatus
a} :: CACertificateDescription)

-- | When the CA certificate is valid.
cACertificateDescription_validity :: Lens.Lens' CACertificateDescription (Prelude.Maybe CertificateValidity)
cACertificateDescription_validity :: Lens' CACertificateDescription (Maybe CertificateValidity)
cACertificateDescription_validity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CACertificateDescription' {Maybe CertificateValidity
validity :: Maybe CertificateValidity
$sel:validity:CACertificateDescription' :: CACertificateDescription -> Maybe CertificateValidity
validity} -> Maybe CertificateValidity
validity) (\s :: CACertificateDescription
s@CACertificateDescription' {} Maybe CertificateValidity
a -> CACertificateDescription
s {$sel:validity:CACertificateDescription' :: Maybe CertificateValidity
validity = Maybe CertificateValidity
a} :: CACertificateDescription)

instance Data.FromJSON CACertificateDescription where
  parseJSON :: Value -> Parser CACertificateDescription
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"CACertificateDescription"
      ( \Object
x ->
          Maybe AutoRegistrationStatus
-> Maybe Text
-> Maybe Text
-> Maybe CertificateMode
-> Maybe Text
-> Maybe POSIX
-> Maybe Natural
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe CACertificateStatus
-> Maybe CertificateValidity
-> CACertificateDescription
CACertificateDescription'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"autoRegistrationStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"certificateArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"certificateId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"certificateMode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"certificatePem")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"creationDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"customerVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"generationId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"lastModifiedDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ownedBy")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"validity")
      )

instance Prelude.Hashable CACertificateDescription where
  hashWithSalt :: Int -> CACertificateDescription -> Int
hashWithSalt Int
_salt CACertificateDescription' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe AutoRegistrationStatus
Maybe CACertificateStatus
Maybe CertificateMode
Maybe CertificateValidity
validity :: Maybe CertificateValidity
status :: Maybe CACertificateStatus
ownedBy :: Maybe Text
lastModifiedDate :: Maybe POSIX
generationId :: Maybe Text
customerVersion :: Maybe Natural
creationDate :: Maybe POSIX
certificatePem :: Maybe Text
certificateMode :: Maybe CertificateMode
certificateId :: Maybe Text
certificateArn :: Maybe Text
autoRegistrationStatus :: Maybe AutoRegistrationStatus
$sel:validity:CACertificateDescription' :: CACertificateDescription -> Maybe CertificateValidity
$sel:status:CACertificateDescription' :: CACertificateDescription -> Maybe CACertificateStatus
$sel:ownedBy:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:lastModifiedDate:CACertificateDescription' :: CACertificateDescription -> Maybe POSIX
$sel:generationId:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:customerVersion:CACertificateDescription' :: CACertificateDescription -> Maybe Natural
$sel:creationDate:CACertificateDescription' :: CACertificateDescription -> Maybe POSIX
$sel:certificatePem:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:certificateMode:CACertificateDescription' :: CACertificateDescription -> Maybe CertificateMode
$sel:certificateId:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:certificateArn:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:autoRegistrationStatus:CACertificateDescription' :: CACertificateDescription -> Maybe AutoRegistrationStatus
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AutoRegistrationStatus
autoRegistrationStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
certificateArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
certificateId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CertificateMode
certificateMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
certificatePem
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
customerVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
generationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastModifiedDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ownedBy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CACertificateStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CertificateValidity
validity

instance Prelude.NFData CACertificateDescription where
  rnf :: CACertificateDescription -> ()
rnf CACertificateDescription' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe AutoRegistrationStatus
Maybe CACertificateStatus
Maybe CertificateMode
Maybe CertificateValidity
validity :: Maybe CertificateValidity
status :: Maybe CACertificateStatus
ownedBy :: Maybe Text
lastModifiedDate :: Maybe POSIX
generationId :: Maybe Text
customerVersion :: Maybe Natural
creationDate :: Maybe POSIX
certificatePem :: Maybe Text
certificateMode :: Maybe CertificateMode
certificateId :: Maybe Text
certificateArn :: Maybe Text
autoRegistrationStatus :: Maybe AutoRegistrationStatus
$sel:validity:CACertificateDescription' :: CACertificateDescription -> Maybe CertificateValidity
$sel:status:CACertificateDescription' :: CACertificateDescription -> Maybe CACertificateStatus
$sel:ownedBy:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:lastModifiedDate:CACertificateDescription' :: CACertificateDescription -> Maybe POSIX
$sel:generationId:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:customerVersion:CACertificateDescription' :: CACertificateDescription -> Maybe Natural
$sel:creationDate:CACertificateDescription' :: CACertificateDescription -> Maybe POSIX
$sel:certificatePem:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:certificateMode:CACertificateDescription' :: CACertificateDescription -> Maybe CertificateMode
$sel:certificateId:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:certificateArn:CACertificateDescription' :: CACertificateDescription -> Maybe Text
$sel:autoRegistrationStatus:CACertificateDescription' :: CACertificateDescription -> Maybe AutoRegistrationStatus
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AutoRegistrationStatus
autoRegistrationStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
certificateArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
certificateId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CertificateMode
certificateMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
certificatePem
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
customerVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
generationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastModifiedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ownedBy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CACertificateStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CertificateValidity
validity