{-# 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.SESV2.Types.DomainDeliverabilityCampaign
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SESV2.Types.DomainDeliverabilityCampaign where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | An object that contains the deliverability data for a specific campaign.
-- This data is available for a campaign only if the campaign sent email by
-- using a domain that the Deliverability dashboard is enabled for
-- (@PutDeliverabilityDashboardOption@ operation).
--
-- /See:/ 'newDomainDeliverabilityCampaign' smart constructor.
data DomainDeliverabilityCampaign = DomainDeliverabilityCampaign'
  { -- | The number of email messages that were delivered to recipients\' spam or
    -- junk mail folders.
    DomainDeliverabilityCampaign -> Maybe Integer
spamCount :: Prelude.Maybe Prelude.Integer,
    -- | The subject line, or title, of the email message.
    DomainDeliverabilityCampaign -> Maybe Text
subject :: Prelude.Maybe Prelude.Text,
    -- | The major email providers who handled the email message.
    DomainDeliverabilityCampaign -> Maybe [Text]
esps :: Prelude.Maybe [Prelude.Text],
    -- | The verified email address that the email message was sent from.
    DomainDeliverabilityCampaign -> Maybe Text
fromAddress :: Prelude.Maybe Prelude.Text,
    -- | The percentage of email messages that were deleted by recipients,
    -- without being opened first. Due to technical limitations, this value
    -- only includes recipients who opened the message by using an email client
    -- that supports images.
    DomainDeliverabilityCampaign -> Maybe Double
deleteRate :: Prelude.Maybe Prelude.Double,
    -- | The unique identifier for the campaign. The Deliverability dashboard
    -- automatically generates and assigns this identifier to a campaign.
    DomainDeliverabilityCampaign -> Maybe Text
campaignId :: Prelude.Maybe Prelude.Text,
    -- | The IP addresses that were used to send the email message.
    DomainDeliverabilityCampaign -> Maybe [Text]
sendingIps :: Prelude.Maybe [Prelude.Text],
    -- | The first time, in Unix time format, when the email message was
    -- delivered to any recipient\'s inbox. This value can help you determine
    -- how long it took for a campaign to deliver an email message.
    DomainDeliverabilityCampaign -> Maybe POSIX
firstSeenDateTime :: Prelude.Maybe Core.POSIX,
    -- | The number of email messages that were delivered to recipients’ inboxes.
    DomainDeliverabilityCampaign -> Maybe Integer
inboxCount :: Prelude.Maybe Prelude.Integer,
    -- | The percentage of email messages that were opened and then deleted by
    -- recipients. Due to technical limitations, this value only includes
    -- recipients who opened the message by using an email client that supports
    -- images.
    DomainDeliverabilityCampaign -> Maybe Double
readDeleteRate :: Prelude.Maybe Prelude.Double,
    -- | The projected number of recipients that the email message was sent to.
    DomainDeliverabilityCampaign -> Maybe Integer
projectedVolume :: Prelude.Maybe Prelude.Integer,
    -- | The URL of an image that contains a snapshot of the email message that
    -- was sent.
    DomainDeliverabilityCampaign -> Maybe Text
imageUrl :: Prelude.Maybe Prelude.Text,
    -- | The percentage of email messages that were opened by recipients. Due to
    -- technical limitations, this value only includes recipients who opened
    -- the message by using an email client that supports images.
    DomainDeliverabilityCampaign -> Maybe Double
readRate :: Prelude.Maybe Prelude.Double,
    -- | The last time, in Unix time format, when the email message was delivered
    -- to any recipient\'s inbox. This value can help you determine how long it
    -- took for a campaign to deliver an email message.
    DomainDeliverabilityCampaign -> Maybe POSIX
lastSeenDateTime :: Prelude.Maybe Core.POSIX
  }
  deriving (DomainDeliverabilityCampaign
-> DomainDeliverabilityCampaign -> Bool
(DomainDeliverabilityCampaign
 -> DomainDeliverabilityCampaign -> Bool)
-> (DomainDeliverabilityCampaign
    -> DomainDeliverabilityCampaign -> Bool)
-> Eq DomainDeliverabilityCampaign
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DomainDeliverabilityCampaign
-> DomainDeliverabilityCampaign -> Bool
$c/= :: DomainDeliverabilityCampaign
-> DomainDeliverabilityCampaign -> Bool
== :: DomainDeliverabilityCampaign
-> DomainDeliverabilityCampaign -> Bool
$c== :: DomainDeliverabilityCampaign
-> DomainDeliverabilityCampaign -> Bool
Prelude.Eq, ReadPrec [DomainDeliverabilityCampaign]
ReadPrec DomainDeliverabilityCampaign
Int -> ReadS DomainDeliverabilityCampaign
ReadS [DomainDeliverabilityCampaign]
(Int -> ReadS DomainDeliverabilityCampaign)
-> ReadS [DomainDeliverabilityCampaign]
-> ReadPrec DomainDeliverabilityCampaign
-> ReadPrec [DomainDeliverabilityCampaign]
-> Read DomainDeliverabilityCampaign
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DomainDeliverabilityCampaign]
$creadListPrec :: ReadPrec [DomainDeliverabilityCampaign]
readPrec :: ReadPrec DomainDeliverabilityCampaign
$creadPrec :: ReadPrec DomainDeliverabilityCampaign
readList :: ReadS [DomainDeliverabilityCampaign]
$creadList :: ReadS [DomainDeliverabilityCampaign]
readsPrec :: Int -> ReadS DomainDeliverabilityCampaign
$creadsPrec :: Int -> ReadS DomainDeliverabilityCampaign
Prelude.Read, Int -> DomainDeliverabilityCampaign -> ShowS
[DomainDeliverabilityCampaign] -> ShowS
DomainDeliverabilityCampaign -> String
(Int -> DomainDeliverabilityCampaign -> ShowS)
-> (DomainDeliverabilityCampaign -> String)
-> ([DomainDeliverabilityCampaign] -> ShowS)
-> Show DomainDeliverabilityCampaign
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DomainDeliverabilityCampaign] -> ShowS
$cshowList :: [DomainDeliverabilityCampaign] -> ShowS
show :: DomainDeliverabilityCampaign -> String
$cshow :: DomainDeliverabilityCampaign -> String
showsPrec :: Int -> DomainDeliverabilityCampaign -> ShowS
$cshowsPrec :: Int -> DomainDeliverabilityCampaign -> ShowS
Prelude.Show, (forall x.
 DomainDeliverabilityCampaign -> Rep DomainDeliverabilityCampaign x)
-> (forall x.
    Rep DomainDeliverabilityCampaign x -> DomainDeliverabilityCampaign)
-> Generic DomainDeliverabilityCampaign
forall x.
Rep DomainDeliverabilityCampaign x -> DomainDeliverabilityCampaign
forall x.
DomainDeliverabilityCampaign -> Rep DomainDeliverabilityCampaign x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DomainDeliverabilityCampaign x -> DomainDeliverabilityCampaign
$cfrom :: forall x.
DomainDeliverabilityCampaign -> Rep DomainDeliverabilityCampaign x
Prelude.Generic)

-- |
-- Create a value of 'DomainDeliverabilityCampaign' 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:
--
-- 'spamCount', 'domainDeliverabilityCampaign_spamCount' - The number of email messages that were delivered to recipients\' spam or
-- junk mail folders.
--
-- 'subject', 'domainDeliverabilityCampaign_subject' - The subject line, or title, of the email message.
--
-- 'esps', 'domainDeliverabilityCampaign_esps' - The major email providers who handled the email message.
--
-- 'fromAddress', 'domainDeliverabilityCampaign_fromAddress' - The verified email address that the email message was sent from.
--
-- 'deleteRate', 'domainDeliverabilityCampaign_deleteRate' - The percentage of email messages that were deleted by recipients,
-- without being opened first. Due to technical limitations, this value
-- only includes recipients who opened the message by using an email client
-- that supports images.
--
-- 'campaignId', 'domainDeliverabilityCampaign_campaignId' - The unique identifier for the campaign. The Deliverability dashboard
-- automatically generates and assigns this identifier to a campaign.
--
-- 'sendingIps', 'domainDeliverabilityCampaign_sendingIps' - The IP addresses that were used to send the email message.
--
-- 'firstSeenDateTime', 'domainDeliverabilityCampaign_firstSeenDateTime' - The first time, in Unix time format, when the email message was
-- delivered to any recipient\'s inbox. This value can help you determine
-- how long it took for a campaign to deliver an email message.
--
-- 'inboxCount', 'domainDeliverabilityCampaign_inboxCount' - The number of email messages that were delivered to recipients’ inboxes.
--
-- 'readDeleteRate', 'domainDeliverabilityCampaign_readDeleteRate' - The percentage of email messages that were opened and then deleted by
-- recipients. Due to technical limitations, this value only includes
-- recipients who opened the message by using an email client that supports
-- images.
--
-- 'projectedVolume', 'domainDeliverabilityCampaign_projectedVolume' - The projected number of recipients that the email message was sent to.
--
-- 'imageUrl', 'domainDeliverabilityCampaign_imageUrl' - The URL of an image that contains a snapshot of the email message that
-- was sent.
--
-- 'readRate', 'domainDeliverabilityCampaign_readRate' - The percentage of email messages that were opened by recipients. Due to
-- technical limitations, this value only includes recipients who opened
-- the message by using an email client that supports images.
--
-- 'lastSeenDateTime', 'domainDeliverabilityCampaign_lastSeenDateTime' - The last time, in Unix time format, when the email message was delivered
-- to any recipient\'s inbox. This value can help you determine how long it
-- took for a campaign to deliver an email message.
newDomainDeliverabilityCampaign ::
  DomainDeliverabilityCampaign
newDomainDeliverabilityCampaign :: DomainDeliverabilityCampaign
newDomainDeliverabilityCampaign =
  DomainDeliverabilityCampaign' :: Maybe Integer
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Double
-> Maybe Text
-> Maybe [Text]
-> Maybe POSIX
-> Maybe Integer
-> Maybe Double
-> Maybe Integer
-> Maybe Text
-> Maybe Double
-> Maybe POSIX
-> DomainDeliverabilityCampaign
DomainDeliverabilityCampaign'
    { $sel:spamCount:DomainDeliverabilityCampaign' :: Maybe Integer
spamCount =
        Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:subject:DomainDeliverabilityCampaign' :: Maybe Text
subject = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:esps:DomainDeliverabilityCampaign' :: Maybe [Text]
esps = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:fromAddress:DomainDeliverabilityCampaign' :: Maybe Text
fromAddress = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:deleteRate:DomainDeliverabilityCampaign' :: Maybe Double
deleteRate = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:campaignId:DomainDeliverabilityCampaign' :: Maybe Text
campaignId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sendingIps:DomainDeliverabilityCampaign' :: Maybe [Text]
sendingIps = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:firstSeenDateTime:DomainDeliverabilityCampaign' :: Maybe POSIX
firstSeenDateTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:inboxCount:DomainDeliverabilityCampaign' :: Maybe Integer
inboxCount = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:readDeleteRate:DomainDeliverabilityCampaign' :: Maybe Double
readDeleteRate = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:projectedVolume:DomainDeliverabilityCampaign' :: Maybe Integer
projectedVolume = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:imageUrl:DomainDeliverabilityCampaign' :: Maybe Text
imageUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:readRate:DomainDeliverabilityCampaign' :: Maybe Double
readRate = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:lastSeenDateTime:DomainDeliverabilityCampaign' :: Maybe POSIX
lastSeenDateTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing
    }

-- | The number of email messages that were delivered to recipients\' spam or
-- junk mail folders.
domainDeliverabilityCampaign_spamCount :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Integer)
domainDeliverabilityCampaign_spamCount :: (Maybe Integer -> f (Maybe Integer))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_spamCount = (DomainDeliverabilityCampaign -> Maybe Integer)
-> (DomainDeliverabilityCampaign
    -> Maybe Integer -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Integer)
     (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Integer
spamCount :: Maybe Integer
$sel:spamCount:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
spamCount} -> Maybe Integer
spamCount) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Integer
a -> DomainDeliverabilityCampaign
s {$sel:spamCount:DomainDeliverabilityCampaign' :: Maybe Integer
spamCount = Maybe Integer
a} :: DomainDeliverabilityCampaign)

-- | The subject line, or title, of the email message.
domainDeliverabilityCampaign_subject :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)
domainDeliverabilityCampaign_subject :: (Maybe Text -> f (Maybe Text))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_subject = (DomainDeliverabilityCampaign -> Maybe Text)
-> (DomainDeliverabilityCampaign
    -> Maybe Text -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Text
subject :: Maybe Text
$sel:subject:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
subject} -> Maybe Text
subject) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Text
a -> DomainDeliverabilityCampaign
s {$sel:subject:DomainDeliverabilityCampaign' :: Maybe Text
subject = Maybe Text
a} :: DomainDeliverabilityCampaign)

-- | The major email providers who handled the email message.
domainDeliverabilityCampaign_esps :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe [Prelude.Text])
domainDeliverabilityCampaign_esps :: (Maybe [Text] -> f (Maybe [Text]))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_esps = (DomainDeliverabilityCampaign -> Maybe [Text])
-> (DomainDeliverabilityCampaign
    -> Maybe [Text] -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe [Text]
esps :: Maybe [Text]
$sel:esps:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe [Text]
esps} -> Maybe [Text]
esps) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe [Text]
a -> DomainDeliverabilityCampaign
s {$sel:esps:DomainDeliverabilityCampaign' :: Maybe [Text]
esps = Maybe [Text]
a} :: DomainDeliverabilityCampaign) ((Maybe [Text] -> f (Maybe [Text]))
 -> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DomainDeliverabilityCampaign
-> f DomainDeliverabilityCampaign
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The verified email address that the email message was sent from.
domainDeliverabilityCampaign_fromAddress :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)
domainDeliverabilityCampaign_fromAddress :: (Maybe Text -> f (Maybe Text))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_fromAddress = (DomainDeliverabilityCampaign -> Maybe Text)
-> (DomainDeliverabilityCampaign
    -> Maybe Text -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Text
fromAddress :: Maybe Text
$sel:fromAddress:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
fromAddress} -> Maybe Text
fromAddress) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Text
a -> DomainDeliverabilityCampaign
s {$sel:fromAddress:DomainDeliverabilityCampaign' :: Maybe Text
fromAddress = Maybe Text
a} :: DomainDeliverabilityCampaign)

-- | The percentage of email messages that were deleted by recipients,
-- without being opened first. Due to technical limitations, this value
-- only includes recipients who opened the message by using an email client
-- that supports images.
domainDeliverabilityCampaign_deleteRate :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Double)
domainDeliverabilityCampaign_deleteRate :: (Maybe Double -> f (Maybe Double))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_deleteRate = (DomainDeliverabilityCampaign -> Maybe Double)
-> (DomainDeliverabilityCampaign
    -> Maybe Double -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Double)
     (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Double
deleteRate :: Maybe Double
$sel:deleteRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
deleteRate} -> Maybe Double
deleteRate) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Double
a -> DomainDeliverabilityCampaign
s {$sel:deleteRate:DomainDeliverabilityCampaign' :: Maybe Double
deleteRate = Maybe Double
a} :: DomainDeliverabilityCampaign)

-- | The unique identifier for the campaign. The Deliverability dashboard
-- automatically generates and assigns this identifier to a campaign.
domainDeliverabilityCampaign_campaignId :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)
domainDeliverabilityCampaign_campaignId :: (Maybe Text -> f (Maybe Text))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_campaignId = (DomainDeliverabilityCampaign -> Maybe Text)
-> (DomainDeliverabilityCampaign
    -> Maybe Text -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Text
campaignId :: Maybe Text
$sel:campaignId:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
campaignId} -> Maybe Text
campaignId) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Text
a -> DomainDeliverabilityCampaign
s {$sel:campaignId:DomainDeliverabilityCampaign' :: Maybe Text
campaignId = Maybe Text
a} :: DomainDeliverabilityCampaign)

-- | The IP addresses that were used to send the email message.
domainDeliverabilityCampaign_sendingIps :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe [Prelude.Text])
domainDeliverabilityCampaign_sendingIps :: (Maybe [Text] -> f (Maybe [Text]))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_sendingIps = (DomainDeliverabilityCampaign -> Maybe [Text])
-> (DomainDeliverabilityCampaign
    -> Maybe [Text] -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe [Text]
sendingIps :: Maybe [Text]
$sel:sendingIps:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe [Text]
sendingIps} -> Maybe [Text]
sendingIps) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe [Text]
a -> DomainDeliverabilityCampaign
s {$sel:sendingIps:DomainDeliverabilityCampaign' :: Maybe [Text]
sendingIps = Maybe [Text]
a} :: DomainDeliverabilityCampaign) ((Maybe [Text] -> f (Maybe [Text]))
 -> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> DomainDeliverabilityCampaign
-> f DomainDeliverabilityCampaign
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The first time, in Unix time format, when the email message was
-- delivered to any recipient\'s inbox. This value can help you determine
-- how long it took for a campaign to deliver an email message.
domainDeliverabilityCampaign_firstSeenDateTime :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.UTCTime)
domainDeliverabilityCampaign_firstSeenDateTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_firstSeenDateTime = (DomainDeliverabilityCampaign -> Maybe POSIX)
-> (DomainDeliverabilityCampaign
    -> Maybe POSIX -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe POSIX
firstSeenDateTime :: Maybe POSIX
$sel:firstSeenDateTime:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe POSIX
firstSeenDateTime} -> Maybe POSIX
firstSeenDateTime) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe POSIX
a -> DomainDeliverabilityCampaign
s {$sel:firstSeenDateTime:DomainDeliverabilityCampaign' :: Maybe POSIX
firstSeenDateTime = Maybe POSIX
a} :: DomainDeliverabilityCampaign) ((Maybe POSIX -> f (Maybe POSIX))
 -> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DomainDeliverabilityCampaign
-> f DomainDeliverabilityCampaign
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The number of email messages that were delivered to recipients’ inboxes.
domainDeliverabilityCampaign_inboxCount :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Integer)
domainDeliverabilityCampaign_inboxCount :: (Maybe Integer -> f (Maybe Integer))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_inboxCount = (DomainDeliverabilityCampaign -> Maybe Integer)
-> (DomainDeliverabilityCampaign
    -> Maybe Integer -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Integer)
     (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Integer
inboxCount :: Maybe Integer
$sel:inboxCount:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
inboxCount} -> Maybe Integer
inboxCount) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Integer
a -> DomainDeliverabilityCampaign
s {$sel:inboxCount:DomainDeliverabilityCampaign' :: Maybe Integer
inboxCount = Maybe Integer
a} :: DomainDeliverabilityCampaign)

-- | The percentage of email messages that were opened and then deleted by
-- recipients. Due to technical limitations, this value only includes
-- recipients who opened the message by using an email client that supports
-- images.
domainDeliverabilityCampaign_readDeleteRate :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Double)
domainDeliverabilityCampaign_readDeleteRate :: (Maybe Double -> f (Maybe Double))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_readDeleteRate = (DomainDeliverabilityCampaign -> Maybe Double)
-> (DomainDeliverabilityCampaign
    -> Maybe Double -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Double)
     (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Double
readDeleteRate :: Maybe Double
$sel:readDeleteRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
readDeleteRate} -> Maybe Double
readDeleteRate) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Double
a -> DomainDeliverabilityCampaign
s {$sel:readDeleteRate:DomainDeliverabilityCampaign' :: Maybe Double
readDeleteRate = Maybe Double
a} :: DomainDeliverabilityCampaign)

-- | The projected number of recipients that the email message was sent to.
domainDeliverabilityCampaign_projectedVolume :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Integer)
domainDeliverabilityCampaign_projectedVolume :: (Maybe Integer -> f (Maybe Integer))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_projectedVolume = (DomainDeliverabilityCampaign -> Maybe Integer)
-> (DomainDeliverabilityCampaign
    -> Maybe Integer -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Integer)
     (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Integer
projectedVolume :: Maybe Integer
$sel:projectedVolume:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
projectedVolume} -> Maybe Integer
projectedVolume) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Integer
a -> DomainDeliverabilityCampaign
s {$sel:projectedVolume:DomainDeliverabilityCampaign' :: Maybe Integer
projectedVolume = Maybe Integer
a} :: DomainDeliverabilityCampaign)

-- | The URL of an image that contains a snapshot of the email message that
-- was sent.
domainDeliverabilityCampaign_imageUrl :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)
domainDeliverabilityCampaign_imageUrl :: (Maybe Text -> f (Maybe Text))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_imageUrl = (DomainDeliverabilityCampaign -> Maybe Text)
-> (DomainDeliverabilityCampaign
    -> Maybe Text -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Text
imageUrl :: Maybe Text
$sel:imageUrl:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
imageUrl} -> Maybe Text
imageUrl) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Text
a -> DomainDeliverabilityCampaign
s {$sel:imageUrl:DomainDeliverabilityCampaign' :: Maybe Text
imageUrl = Maybe Text
a} :: DomainDeliverabilityCampaign)

-- | The percentage of email messages that were opened by recipients. Due to
-- technical limitations, this value only includes recipients who opened
-- the message by using an email client that supports images.
domainDeliverabilityCampaign_readRate :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Double)
domainDeliverabilityCampaign_readRate :: (Maybe Double -> f (Maybe Double))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_readRate = (DomainDeliverabilityCampaign -> Maybe Double)
-> (DomainDeliverabilityCampaign
    -> Maybe Double -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe Double)
     (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe Double
readRate :: Maybe Double
$sel:readRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
readRate} -> Maybe Double
readRate) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe Double
a -> DomainDeliverabilityCampaign
s {$sel:readRate:DomainDeliverabilityCampaign' :: Maybe Double
readRate = Maybe Double
a} :: DomainDeliverabilityCampaign)

-- | The last time, in Unix time format, when the email message was delivered
-- to any recipient\'s inbox. This value can help you determine how long it
-- took for a campaign to deliver an email message.
domainDeliverabilityCampaign_lastSeenDateTime :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.UTCTime)
domainDeliverabilityCampaign_lastSeenDateTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign
domainDeliverabilityCampaign_lastSeenDateTime = (DomainDeliverabilityCampaign -> Maybe POSIX)
-> (DomainDeliverabilityCampaign
    -> Maybe POSIX -> DomainDeliverabilityCampaign)
-> Lens
     DomainDeliverabilityCampaign
     DomainDeliverabilityCampaign
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DomainDeliverabilityCampaign' {Maybe POSIX
lastSeenDateTime :: Maybe POSIX
$sel:lastSeenDateTime:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe POSIX
lastSeenDateTime} -> Maybe POSIX
lastSeenDateTime) (\s :: DomainDeliverabilityCampaign
s@DomainDeliverabilityCampaign' {} Maybe POSIX
a -> DomainDeliverabilityCampaign
s {$sel:lastSeenDateTime:DomainDeliverabilityCampaign' :: Maybe POSIX
lastSeenDateTime = Maybe POSIX
a} :: DomainDeliverabilityCampaign) ((Maybe POSIX -> f (Maybe POSIX))
 -> DomainDeliverabilityCampaign -> f DomainDeliverabilityCampaign)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DomainDeliverabilityCampaign
-> f DomainDeliverabilityCampaign
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

instance Core.FromJSON DomainDeliverabilityCampaign where
  parseJSON :: Value -> Parser DomainDeliverabilityCampaign
parseJSON =
    String
-> (Object -> Parser DomainDeliverabilityCampaign)
-> Value
-> Parser DomainDeliverabilityCampaign
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DomainDeliverabilityCampaign"
      ( \Object
x ->
          Maybe Integer
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Double
-> Maybe Text
-> Maybe [Text]
-> Maybe POSIX
-> Maybe Integer
-> Maybe Double
-> Maybe Integer
-> Maybe Text
-> Maybe Double
-> Maybe POSIX
-> DomainDeliverabilityCampaign
DomainDeliverabilityCampaign'
            (Maybe Integer
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe Double
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe POSIX
 -> Maybe Integer
 -> Maybe Double
 -> Maybe Integer
 -> Maybe Text
 -> Maybe Double
 -> Maybe POSIX
 -> DomainDeliverabilityCampaign)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe Integer
      -> Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SpamCount")
            Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe Integer
   -> Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe Integer
      -> Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Subject")
            Parser
  (Maybe [Text]
   -> Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe Integer
   -> Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Text
      -> Maybe Double
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe Integer
      -> Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Esps" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe Double
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe Integer
   -> Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe Text)
-> Parser
     (Maybe Double
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe Integer
      -> Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FromAddress")
            Parser
  (Maybe Double
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe Integer
   -> Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe Double)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe POSIX
      -> Maybe Integer
      -> Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DeleteRate")
            Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe POSIX
   -> Maybe Integer
   -> Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe POSIX
      -> Maybe Integer
      -> Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CampaignId")
            Parser
  (Maybe [Text]
   -> Maybe POSIX
   -> Maybe Integer
   -> Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe [Text])
-> Parser
     (Maybe POSIX
      -> Maybe Integer
      -> Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SendingIps" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe POSIX
   -> Maybe Integer
   -> Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Integer
      -> Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FirstSeenDateTime")
            Parser
  (Maybe Integer
   -> Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Double
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InboxCount")
            Parser
  (Maybe Double
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe Double)
-> Parser
     (Maybe Integer
      -> Maybe Text
      -> Maybe Double
      -> Maybe POSIX
      -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReadDeleteRate")
            Parser
  (Maybe Integer
   -> Maybe Text
   -> Maybe Double
   -> Maybe POSIX
   -> DomainDeliverabilityCampaign)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Text
      -> Maybe Double -> Maybe POSIX -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProjectedVolume")
            Parser
  (Maybe Text
   -> Maybe Double -> Maybe POSIX -> DomainDeliverabilityCampaign)
-> Parser (Maybe Text)
-> Parser
     (Maybe Double -> Maybe POSIX -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ImageUrl")
            Parser
  (Maybe Double -> Maybe POSIX -> DomainDeliverabilityCampaign)
-> Parser (Maybe Double)
-> Parser (Maybe POSIX -> DomainDeliverabilityCampaign)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReadRate")
            Parser (Maybe POSIX -> DomainDeliverabilityCampaign)
-> Parser (Maybe POSIX) -> Parser DomainDeliverabilityCampaign
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LastSeenDateTime")
      )

instance
  Prelude.Hashable
    DomainDeliverabilityCampaign

instance Prelude.NFData DomainDeliverabilityCampaign