{-# 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.CertificateManager.Types.RenewalSummary
-- 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.CertificateManager.Types.RenewalSummary where

import Amazonka.CertificateManager.Types.DomainValidation
import Amazonka.CertificateManager.Types.FailureReason
import Amazonka.CertificateManager.Types.RenewalStatus
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Contains information about the status of ACM\'s
-- <https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html managed renewal>
-- for the certificate. This structure exists only when the certificate
-- type is @AMAZON_ISSUED@.
--
-- /See:/ 'newRenewalSummary' smart constructor.
data RenewalSummary = RenewalSummary'
  { -- | The reason that a renewal request was unsuccessful.
    RenewalSummary -> Maybe FailureReason
renewalStatusReason :: Prelude.Maybe FailureReason,
    -- | The status of ACM\'s
    -- <https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html managed renewal>
    -- of the certificate.
    RenewalSummary -> RenewalStatus
renewalStatus :: RenewalStatus,
    -- | Contains information about the validation of each domain name in the
    -- certificate, as it pertains to ACM\'s
    -- <https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html managed renewal>.
    -- This is different from the initial validation that occurs as a result of
    -- the RequestCertificate request. This field exists only when the
    -- certificate type is @AMAZON_ISSUED@.
    RenewalSummary -> NonEmpty DomainValidation
domainValidationOptions :: Prelude.NonEmpty DomainValidation,
    -- | The time at which the renewal summary was last updated.
    RenewalSummary -> POSIX
updatedAt :: Data.POSIX
  }
  deriving (RenewalSummary -> RenewalSummary -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RenewalSummary -> RenewalSummary -> Bool
$c/= :: RenewalSummary -> RenewalSummary -> Bool
== :: RenewalSummary -> RenewalSummary -> Bool
$c== :: RenewalSummary -> RenewalSummary -> Bool
Prelude.Eq, ReadPrec [RenewalSummary]
ReadPrec RenewalSummary
Int -> ReadS RenewalSummary
ReadS [RenewalSummary]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RenewalSummary]
$creadListPrec :: ReadPrec [RenewalSummary]
readPrec :: ReadPrec RenewalSummary
$creadPrec :: ReadPrec RenewalSummary
readList :: ReadS [RenewalSummary]
$creadList :: ReadS [RenewalSummary]
readsPrec :: Int -> ReadS RenewalSummary
$creadsPrec :: Int -> ReadS RenewalSummary
Prelude.Read, Int -> RenewalSummary -> ShowS
[RenewalSummary] -> ShowS
RenewalSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RenewalSummary] -> ShowS
$cshowList :: [RenewalSummary] -> ShowS
show :: RenewalSummary -> String
$cshow :: RenewalSummary -> String
showsPrec :: Int -> RenewalSummary -> ShowS
$cshowsPrec :: Int -> RenewalSummary -> ShowS
Prelude.Show, forall x. Rep RenewalSummary x -> RenewalSummary
forall x. RenewalSummary -> Rep RenewalSummary x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RenewalSummary x -> RenewalSummary
$cfrom :: forall x. RenewalSummary -> Rep RenewalSummary x
Prelude.Generic)

-- |
-- Create a value of 'RenewalSummary' 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:
--
-- 'renewalStatusReason', 'renewalSummary_renewalStatusReason' - The reason that a renewal request was unsuccessful.
--
-- 'renewalStatus', 'renewalSummary_renewalStatus' - The status of ACM\'s
-- <https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html managed renewal>
-- of the certificate.
--
-- 'domainValidationOptions', 'renewalSummary_domainValidationOptions' - Contains information about the validation of each domain name in the
-- certificate, as it pertains to ACM\'s
-- <https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html managed renewal>.
-- This is different from the initial validation that occurs as a result of
-- the RequestCertificate request. This field exists only when the
-- certificate type is @AMAZON_ISSUED@.
--
-- 'updatedAt', 'renewalSummary_updatedAt' - The time at which the renewal summary was last updated.
newRenewalSummary ::
  -- | 'renewalStatus'
  RenewalStatus ->
  -- | 'domainValidationOptions'
  Prelude.NonEmpty DomainValidation ->
  -- | 'updatedAt'
  Prelude.UTCTime ->
  RenewalSummary
newRenewalSummary :: RenewalStatus
-> NonEmpty DomainValidation -> UTCTime -> RenewalSummary
newRenewalSummary
  RenewalStatus
pRenewalStatus_
  NonEmpty DomainValidation
pDomainValidationOptions_
  UTCTime
pUpdatedAt_ =
    RenewalSummary'
      { $sel:renewalStatusReason:RenewalSummary' :: Maybe FailureReason
renewalStatusReason =
          forall a. Maybe a
Prelude.Nothing,
        $sel:renewalStatus:RenewalSummary' :: RenewalStatus
renewalStatus = RenewalStatus
pRenewalStatus_,
        $sel:domainValidationOptions:RenewalSummary' :: NonEmpty DomainValidation
domainValidationOptions =
          forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty DomainValidation
pDomainValidationOptions_,
        $sel:updatedAt:RenewalSummary' :: POSIX
updatedAt = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pUpdatedAt_
      }

-- | The reason that a renewal request was unsuccessful.
renewalSummary_renewalStatusReason :: Lens.Lens' RenewalSummary (Prelude.Maybe FailureReason)
renewalSummary_renewalStatusReason :: Lens' RenewalSummary (Maybe FailureReason)
renewalSummary_renewalStatusReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RenewalSummary' {Maybe FailureReason
renewalStatusReason :: Maybe FailureReason
$sel:renewalStatusReason:RenewalSummary' :: RenewalSummary -> Maybe FailureReason
renewalStatusReason} -> Maybe FailureReason
renewalStatusReason) (\s :: RenewalSummary
s@RenewalSummary' {} Maybe FailureReason
a -> RenewalSummary
s {$sel:renewalStatusReason:RenewalSummary' :: Maybe FailureReason
renewalStatusReason = Maybe FailureReason
a} :: RenewalSummary)

-- | The status of ACM\'s
-- <https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html managed renewal>
-- of the certificate.
renewalSummary_renewalStatus :: Lens.Lens' RenewalSummary RenewalStatus
renewalSummary_renewalStatus :: Lens' RenewalSummary RenewalStatus
renewalSummary_renewalStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RenewalSummary' {RenewalStatus
renewalStatus :: RenewalStatus
$sel:renewalStatus:RenewalSummary' :: RenewalSummary -> RenewalStatus
renewalStatus} -> RenewalStatus
renewalStatus) (\s :: RenewalSummary
s@RenewalSummary' {} RenewalStatus
a -> RenewalSummary
s {$sel:renewalStatus:RenewalSummary' :: RenewalStatus
renewalStatus = RenewalStatus
a} :: RenewalSummary)

-- | Contains information about the validation of each domain name in the
-- certificate, as it pertains to ACM\'s
-- <https://docs.aws.amazon.com/acm/latest/userguide/acm-renewal.html managed renewal>.
-- This is different from the initial validation that occurs as a result of
-- the RequestCertificate request. This field exists only when the
-- certificate type is @AMAZON_ISSUED@.
renewalSummary_domainValidationOptions :: Lens.Lens' RenewalSummary (Prelude.NonEmpty DomainValidation)
renewalSummary_domainValidationOptions :: Lens' RenewalSummary (NonEmpty DomainValidation)
renewalSummary_domainValidationOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RenewalSummary' {NonEmpty DomainValidation
domainValidationOptions :: NonEmpty DomainValidation
$sel:domainValidationOptions:RenewalSummary' :: RenewalSummary -> NonEmpty DomainValidation
domainValidationOptions} -> NonEmpty DomainValidation
domainValidationOptions) (\s :: RenewalSummary
s@RenewalSummary' {} NonEmpty DomainValidation
a -> RenewalSummary
s {$sel:domainValidationOptions:RenewalSummary' :: NonEmpty DomainValidation
domainValidationOptions = NonEmpty DomainValidation
a} :: RenewalSummary) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The time at which the renewal summary was last updated.
renewalSummary_updatedAt :: Lens.Lens' RenewalSummary Prelude.UTCTime
renewalSummary_updatedAt :: Lens' RenewalSummary UTCTime
renewalSummary_updatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RenewalSummary' {POSIX
updatedAt :: POSIX
$sel:updatedAt:RenewalSummary' :: RenewalSummary -> POSIX
updatedAt} -> POSIX
updatedAt) (\s :: RenewalSummary
s@RenewalSummary' {} POSIX
a -> RenewalSummary
s {$sel:updatedAt:RenewalSummary' :: POSIX
updatedAt = POSIX
a} :: RenewalSummary) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Data.FromJSON RenewalSummary where
  parseJSON :: Value -> Parser RenewalSummary
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"RenewalSummary"
      ( \Object
x ->
          Maybe FailureReason
-> RenewalStatus
-> NonEmpty DomainValidation
-> POSIX
-> RenewalSummary
RenewalSummary'
            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
"RenewalStatusReason")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"RenewalStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"DomainValidationOptions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"UpdatedAt")
      )

instance Prelude.Hashable RenewalSummary where
  hashWithSalt :: Int -> RenewalSummary -> Int
hashWithSalt Int
_salt RenewalSummary' {Maybe FailureReason
NonEmpty DomainValidation
POSIX
RenewalStatus
updatedAt :: POSIX
domainValidationOptions :: NonEmpty DomainValidation
renewalStatus :: RenewalStatus
renewalStatusReason :: Maybe FailureReason
$sel:updatedAt:RenewalSummary' :: RenewalSummary -> POSIX
$sel:domainValidationOptions:RenewalSummary' :: RenewalSummary -> NonEmpty DomainValidation
$sel:renewalStatus:RenewalSummary' :: RenewalSummary -> RenewalStatus
$sel:renewalStatusReason:RenewalSummary' :: RenewalSummary -> Maybe FailureReason
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FailureReason
renewalStatusReason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` RenewalStatus
renewalStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty DomainValidation
domainValidationOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
updatedAt

instance Prelude.NFData RenewalSummary where
  rnf :: RenewalSummary -> ()
rnf RenewalSummary' {Maybe FailureReason
NonEmpty DomainValidation
POSIX
RenewalStatus
updatedAt :: POSIX
domainValidationOptions :: NonEmpty DomainValidation
renewalStatus :: RenewalStatus
renewalStatusReason :: Maybe FailureReason
$sel:updatedAt:RenewalSummary' :: RenewalSummary -> POSIX
$sel:domainValidationOptions:RenewalSummary' :: RenewalSummary -> NonEmpty DomainValidation
$sel:renewalStatus:RenewalSummary' :: RenewalSummary -> RenewalStatus
$sel:renewalStatusReason:RenewalSummary' :: RenewalSummary -> Maybe FailureReason
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe FailureReason
renewalStatusReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf RenewalStatus
renewalStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty DomainValidation
domainValidationOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
updatedAt