{-# 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.PinpointEmail.Types.DomainDeliverabilityCampaign
-- 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.PinpointEmail.Types.DomainDeliverabilityCampaign where

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

-- | 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 unique identifier for the campaign. Amazon Pinpoint automatically
    -- generates and assigns this identifier to a campaign. This value is not
    -- the same as the campaign identifier that Amazon Pinpoint assigns to
    -- campaigns that you create and manage by using the Amazon Pinpoint API or
    -- the Amazon Pinpoint console.
    DomainDeliverabilityCampaign -> Maybe Text
campaignId :: 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 major email providers who handled the email message.
    DomainDeliverabilityCampaign -> Maybe [Text]
esps :: 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 Data.POSIX,
    -- | The verified email address that the email message was sent from.
    DomainDeliverabilityCampaign -> Maybe Text
fromAddress :: Prelude.Maybe Prelude.Text,
    -- | 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 number of email messages that were delivered to recipients’ inboxes.
    DomainDeliverabilityCampaign -> Maybe Integer
inboxCount :: Prelude.Maybe Prelude.Integer,
    -- | 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 Data.POSIX,
    -- | The projected number of recipients that the email message was sent to.
    DomainDeliverabilityCampaign -> Maybe Integer
projectedVolume :: 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 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 IP addresses that were used to send the email message.
    DomainDeliverabilityCampaign -> Maybe [Text]
sendingIps :: Prelude.Maybe [Prelude.Text],
    -- | 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
  }
  deriving (DomainDeliverabilityCampaign
-> DomainDeliverabilityCampaign -> Bool
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]
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
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.
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:
--
-- 'campaignId', 'domainDeliverabilityCampaign_campaignId' - The unique identifier for the campaign. Amazon Pinpoint automatically
-- generates and assigns this identifier to a campaign. This value is not
-- the same as the campaign identifier that Amazon Pinpoint assigns to
-- campaigns that you create and manage by using the Amazon Pinpoint API or
-- the Amazon Pinpoint console.
--
-- '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.
--
-- 'esps', 'domainDeliverabilityCampaign_esps' - The major email providers who handled 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.
--
-- 'fromAddress', 'domainDeliverabilityCampaign_fromAddress' - The verified email address that the email message was sent from.
--
-- 'imageUrl', 'domainDeliverabilityCampaign_imageUrl' - The URL of an image that contains a snapshot of the email message that
-- was sent.
--
-- 'inboxCount', 'domainDeliverabilityCampaign_inboxCount' - The number of email messages that were delivered to recipients’ inboxes.
--
-- '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.
--
-- 'projectedVolume', 'domainDeliverabilityCampaign_projectedVolume' - The projected number of recipients that the email message was sent to.
--
-- '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.
--
-- '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.
--
-- 'sendingIps', 'domainDeliverabilityCampaign_sendingIps' - The IP addresses that were used to send the email message.
--
-- '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.
newDomainDeliverabilityCampaign ::
  DomainDeliverabilityCampaign
newDomainDeliverabilityCampaign :: DomainDeliverabilityCampaign
newDomainDeliverabilityCampaign =
  DomainDeliverabilityCampaign'
    { $sel:campaignId:DomainDeliverabilityCampaign' :: Maybe Text
campaignId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:deleteRate:DomainDeliverabilityCampaign' :: Maybe Double
deleteRate = forall a. Maybe a
Prelude.Nothing,
      $sel:esps:DomainDeliverabilityCampaign' :: Maybe [Text]
esps = forall a. Maybe a
Prelude.Nothing,
      $sel:firstSeenDateTime:DomainDeliverabilityCampaign' :: Maybe POSIX
firstSeenDateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:fromAddress:DomainDeliverabilityCampaign' :: Maybe Text
fromAddress = forall a. Maybe a
Prelude.Nothing,
      $sel:imageUrl:DomainDeliverabilityCampaign' :: Maybe Text
imageUrl = forall a. Maybe a
Prelude.Nothing,
      $sel:inboxCount:DomainDeliverabilityCampaign' :: Maybe Integer
inboxCount = forall a. Maybe a
Prelude.Nothing,
      $sel:lastSeenDateTime:DomainDeliverabilityCampaign' :: Maybe POSIX
lastSeenDateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:projectedVolume:DomainDeliverabilityCampaign' :: Maybe Integer
projectedVolume = forall a. Maybe a
Prelude.Nothing,
      $sel:readDeleteRate:DomainDeliverabilityCampaign' :: Maybe Double
readDeleteRate = forall a. Maybe a
Prelude.Nothing,
      $sel:readRate:DomainDeliverabilityCampaign' :: Maybe Double
readRate = forall a. Maybe a
Prelude.Nothing,
      $sel:sendingIps:DomainDeliverabilityCampaign' :: Maybe [Text]
sendingIps = forall a. Maybe a
Prelude.Nothing,
      $sel:spamCount:DomainDeliverabilityCampaign' :: Maybe Integer
spamCount = forall a. Maybe a
Prelude.Nothing,
      $sel:subject:DomainDeliverabilityCampaign' :: Maybe Text
subject = forall a. Maybe a
Prelude.Nothing
    }

-- | The unique identifier for the campaign. Amazon Pinpoint automatically
-- generates and assigns this identifier to a campaign. This value is not
-- the same as the campaign identifier that Amazon Pinpoint assigns to
-- campaigns that you create and manage by using the Amazon Pinpoint API or
-- the Amazon Pinpoint console.
domainDeliverabilityCampaign_campaignId :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)
domainDeliverabilityCampaign_campaignId :: Lens' DomainDeliverabilityCampaign (Maybe Text)
domainDeliverabilityCampaign_campaignId = 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 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 :: Lens' DomainDeliverabilityCampaign (Maybe Double)
domainDeliverabilityCampaign_deleteRate = 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 major email providers who handled the email message.
domainDeliverabilityCampaign_esps :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe [Prelude.Text])
domainDeliverabilityCampaign_esps :: Lens' DomainDeliverabilityCampaign (Maybe [Text])
domainDeliverabilityCampaign_esps = 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) 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 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 :: Lens' DomainDeliverabilityCampaign (Maybe UTCTime)
domainDeliverabilityCampaign_firstSeenDateTime = 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) 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 verified email address that the email message was sent from.
domainDeliverabilityCampaign_fromAddress :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)
domainDeliverabilityCampaign_fromAddress :: Lens' DomainDeliverabilityCampaign (Maybe Text)
domainDeliverabilityCampaign_fromAddress = 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 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 :: Lens' DomainDeliverabilityCampaign (Maybe Text)
domainDeliverabilityCampaign_imageUrl = 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 number of email messages that were delivered to recipients’ inboxes.
domainDeliverabilityCampaign_inboxCount :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Integer)
domainDeliverabilityCampaign_inboxCount :: Lens' DomainDeliverabilityCampaign (Maybe Integer)
domainDeliverabilityCampaign_inboxCount = 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 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 :: Lens' DomainDeliverabilityCampaign (Maybe UTCTime)
domainDeliverabilityCampaign_lastSeenDateTime = 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) 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 projected number of recipients that the email message was sent to.
domainDeliverabilityCampaign_projectedVolume :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Integer)
domainDeliverabilityCampaign_projectedVolume :: Lens' DomainDeliverabilityCampaign (Maybe Integer)
domainDeliverabilityCampaign_projectedVolume = 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 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 :: Lens' DomainDeliverabilityCampaign (Maybe Double)
domainDeliverabilityCampaign_readDeleteRate = 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 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 :: Lens' DomainDeliverabilityCampaign (Maybe Double)
domainDeliverabilityCampaign_readRate = 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 IP addresses that were used to send the email message.
domainDeliverabilityCampaign_sendingIps :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe [Prelude.Text])
domainDeliverabilityCampaign_sendingIps :: Lens' DomainDeliverabilityCampaign (Maybe [Text])
domainDeliverabilityCampaign_sendingIps = 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) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | 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 :: Lens' DomainDeliverabilityCampaign (Maybe Integer)
domainDeliverabilityCampaign_spamCount = 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 :: Lens' DomainDeliverabilityCampaign (Maybe Text)
domainDeliverabilityCampaign_subject = 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)

instance Data.FromJSON DomainDeliverabilityCampaign where
  parseJSON :: Value -> Parser DomainDeliverabilityCampaign
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DomainDeliverabilityCampaign"
      ( \Object
x ->
          Maybe Text
-> Maybe Double
-> Maybe [Text]
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Integer
-> Maybe POSIX
-> Maybe Integer
-> Maybe Double
-> Maybe Double
-> Maybe [Text]
-> Maybe Integer
-> Maybe Text
-> DomainDeliverabilityCampaign
DomainDeliverabilityCampaign'
            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
"CampaignId")
            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
"DeleteRate")
            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
"Esps" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"FirstSeenDateTime")
            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
"FromAddress")
            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
"ImageUrl")
            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
"InboxCount")
            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
"LastSeenDateTime")
            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
"ProjectedVolume")
            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
"ReadDeleteRate")
            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
"ReadRate")
            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
"SendingIps" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"SpamCount")
            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
"Subject")
      )

instance
  Prelude.Hashable
    DomainDeliverabilityCampaign
  where
  hashWithSalt :: Int -> DomainDeliverabilityCampaign -> Int
hashWithSalt Int
_salt DomainDeliverabilityCampaign' {Maybe Double
Maybe Integer
Maybe [Text]
Maybe Text
Maybe POSIX
subject :: Maybe Text
spamCount :: Maybe Integer
sendingIps :: Maybe [Text]
readRate :: Maybe Double
readDeleteRate :: Maybe Double
projectedVolume :: Maybe Integer
lastSeenDateTime :: Maybe POSIX
inboxCount :: Maybe Integer
imageUrl :: Maybe Text
fromAddress :: Maybe Text
firstSeenDateTime :: Maybe POSIX
esps :: Maybe [Text]
deleteRate :: Maybe Double
campaignId :: Maybe Text
$sel:subject:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
$sel:spamCount:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
$sel:sendingIps:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe [Text]
$sel:readRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
$sel:readDeleteRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
$sel:projectedVolume:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
$sel:lastSeenDateTime:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe POSIX
$sel:inboxCount:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
$sel:imageUrl:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
$sel:fromAddress:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
$sel:firstSeenDateTime:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe POSIX
$sel:esps:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe [Text]
$sel:deleteRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
$sel:campaignId:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
campaignId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
deleteRate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
esps
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
firstSeenDateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
fromAddress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
imageUrl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
inboxCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastSeenDateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
projectedVolume
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
readDeleteRate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
readRate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
sendingIps
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
spamCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subject

instance Prelude.NFData DomainDeliverabilityCampaign where
  rnf :: DomainDeliverabilityCampaign -> ()
rnf DomainDeliverabilityCampaign' {Maybe Double
Maybe Integer
Maybe [Text]
Maybe Text
Maybe POSIX
subject :: Maybe Text
spamCount :: Maybe Integer
sendingIps :: Maybe [Text]
readRate :: Maybe Double
readDeleteRate :: Maybe Double
projectedVolume :: Maybe Integer
lastSeenDateTime :: Maybe POSIX
inboxCount :: Maybe Integer
imageUrl :: Maybe Text
fromAddress :: Maybe Text
firstSeenDateTime :: Maybe POSIX
esps :: Maybe [Text]
deleteRate :: Maybe Double
campaignId :: Maybe Text
$sel:subject:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
$sel:spamCount:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
$sel:sendingIps:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe [Text]
$sel:readRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
$sel:readDeleteRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
$sel:projectedVolume:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
$sel:lastSeenDateTime:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe POSIX
$sel:inboxCount:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Integer
$sel:imageUrl:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
$sel:fromAddress:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
$sel:firstSeenDateTime:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe POSIX
$sel:esps:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe [Text]
$sel:deleteRate:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Double
$sel:campaignId:DomainDeliverabilityCampaign' :: DomainDeliverabilityCampaign -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
campaignId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
deleteRate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
esps
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
firstSeenDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
fromAddress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
imageUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
inboxCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastSeenDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
projectedVolume
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
readDeleteRate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
readRate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
sendingIps
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
spamCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subject