{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# 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.ListDomainDeliverabilityCampaigns
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieve deliverability data for all the campaigns that used a specific
-- domain to send email during a specified time range. This data is
-- available for a domain only if you enabled the Deliverability dashboard
-- (@PutDeliverabilityDashboardOption@ operation) for the domain.
module Amazonka.PinpointEmail.ListDomainDeliverabilityCampaigns
  ( -- * Creating a Request
    ListDomainDeliverabilityCampaigns (..),
    newListDomainDeliverabilityCampaigns,

    -- * Request Lenses
    listDomainDeliverabilityCampaigns_nextToken,
    listDomainDeliverabilityCampaigns_pageSize,
    listDomainDeliverabilityCampaigns_startDate,
    listDomainDeliverabilityCampaigns_endDate,
    listDomainDeliverabilityCampaigns_subscribedDomain,

    -- * Destructuring the Response
    ListDomainDeliverabilityCampaignsResponse (..),
    newListDomainDeliverabilityCampaignsResponse,

    -- * Response Lenses
    listDomainDeliverabilityCampaignsResponse_nextToken,
    listDomainDeliverabilityCampaignsResponse_httpStatus,
    listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.PinpointEmail.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Retrieve deliverability data for all the campaigns that used a specific
-- domain to send email during a specified time range. This data is
-- available for a domain only if you enabled the Deliverability dashboard
-- (@PutDeliverabilityDashboardOption@ operation) for the domain.
--
-- /See:/ 'newListDomainDeliverabilityCampaigns' smart constructor.
data ListDomainDeliverabilityCampaigns = ListDomainDeliverabilityCampaigns'
  { -- | A token that’s returned from a previous call to the
    -- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the
    -- position of a campaign in the list of campaigns.
    ListDomainDeliverabilityCampaigns -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of results to include in response to a single call to
    -- the @ListDomainDeliverabilityCampaigns@ operation. If the number of
    -- results is larger than the number that you specify in this parameter,
    -- the response includes a @NextToken@ element, which you can use to obtain
    -- additional results.
    ListDomainDeliverabilityCampaigns -> Maybe Int
pageSize :: Prelude.Maybe Prelude.Int,
    -- | The first day, in Unix time format, that you want to obtain
    -- deliverability data for.
    ListDomainDeliverabilityCampaigns -> POSIX
startDate :: Data.POSIX,
    -- | The last day, in Unix time format, that you want to obtain
    -- deliverability data for. This value has to be less than or equal to 30
    -- days after the value of the @StartDate@ parameter.
    ListDomainDeliverabilityCampaigns -> POSIX
endDate :: Data.POSIX,
    -- | The domain to obtain deliverability data for.
    ListDomainDeliverabilityCampaigns -> Text
subscribedDomain :: Prelude.Text
  }
  deriving (ListDomainDeliverabilityCampaigns
-> ListDomainDeliverabilityCampaigns -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListDomainDeliverabilityCampaigns
-> ListDomainDeliverabilityCampaigns -> Bool
$c/= :: ListDomainDeliverabilityCampaigns
-> ListDomainDeliverabilityCampaigns -> Bool
== :: ListDomainDeliverabilityCampaigns
-> ListDomainDeliverabilityCampaigns -> Bool
$c== :: ListDomainDeliverabilityCampaigns
-> ListDomainDeliverabilityCampaigns -> Bool
Prelude.Eq, ReadPrec [ListDomainDeliverabilityCampaigns]
ReadPrec ListDomainDeliverabilityCampaigns
Int -> ReadS ListDomainDeliverabilityCampaigns
ReadS [ListDomainDeliverabilityCampaigns]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListDomainDeliverabilityCampaigns]
$creadListPrec :: ReadPrec [ListDomainDeliverabilityCampaigns]
readPrec :: ReadPrec ListDomainDeliverabilityCampaigns
$creadPrec :: ReadPrec ListDomainDeliverabilityCampaigns
readList :: ReadS [ListDomainDeliverabilityCampaigns]
$creadList :: ReadS [ListDomainDeliverabilityCampaigns]
readsPrec :: Int -> ReadS ListDomainDeliverabilityCampaigns
$creadsPrec :: Int -> ReadS ListDomainDeliverabilityCampaigns
Prelude.Read, Int -> ListDomainDeliverabilityCampaigns -> ShowS
[ListDomainDeliverabilityCampaigns] -> ShowS
ListDomainDeliverabilityCampaigns -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListDomainDeliverabilityCampaigns] -> ShowS
$cshowList :: [ListDomainDeliverabilityCampaigns] -> ShowS
show :: ListDomainDeliverabilityCampaigns -> String
$cshow :: ListDomainDeliverabilityCampaigns -> String
showsPrec :: Int -> ListDomainDeliverabilityCampaigns -> ShowS
$cshowsPrec :: Int -> ListDomainDeliverabilityCampaigns -> ShowS
Prelude.Show, forall x.
Rep ListDomainDeliverabilityCampaigns x
-> ListDomainDeliverabilityCampaigns
forall x.
ListDomainDeliverabilityCampaigns
-> Rep ListDomainDeliverabilityCampaigns x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListDomainDeliverabilityCampaigns x
-> ListDomainDeliverabilityCampaigns
$cfrom :: forall x.
ListDomainDeliverabilityCampaigns
-> Rep ListDomainDeliverabilityCampaigns x
Prelude.Generic)

-- |
-- Create a value of 'ListDomainDeliverabilityCampaigns' 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:
--
-- 'nextToken', 'listDomainDeliverabilityCampaigns_nextToken' - A token that’s returned from a previous call to the
-- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the
-- position of a campaign in the list of campaigns.
--
-- 'pageSize', 'listDomainDeliverabilityCampaigns_pageSize' - The maximum number of results to include in response to a single call to
-- the @ListDomainDeliverabilityCampaigns@ operation. If the number of
-- results is larger than the number that you specify in this parameter,
-- the response includes a @NextToken@ element, which you can use to obtain
-- additional results.
--
-- 'startDate', 'listDomainDeliverabilityCampaigns_startDate' - The first day, in Unix time format, that you want to obtain
-- deliverability data for.
--
-- 'endDate', 'listDomainDeliverabilityCampaigns_endDate' - The last day, in Unix time format, that you want to obtain
-- deliverability data for. This value has to be less than or equal to 30
-- days after the value of the @StartDate@ parameter.
--
-- 'subscribedDomain', 'listDomainDeliverabilityCampaigns_subscribedDomain' - The domain to obtain deliverability data for.
newListDomainDeliverabilityCampaigns ::
  -- | 'startDate'
  Prelude.UTCTime ->
  -- | 'endDate'
  Prelude.UTCTime ->
  -- | 'subscribedDomain'
  Prelude.Text ->
  ListDomainDeliverabilityCampaigns
newListDomainDeliverabilityCampaigns :: UTCTime -> UTCTime -> Text -> ListDomainDeliverabilityCampaigns
newListDomainDeliverabilityCampaigns
  UTCTime
pStartDate_
  UTCTime
pEndDate_
  Text
pSubscribedDomain_ =
    ListDomainDeliverabilityCampaigns'
      { $sel:nextToken:ListDomainDeliverabilityCampaigns' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:pageSize:ListDomainDeliverabilityCampaigns' :: Maybe Int
pageSize = forall a. Maybe a
Prelude.Nothing,
        $sel:startDate:ListDomainDeliverabilityCampaigns' :: POSIX
startDate =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pStartDate_,
        $sel:endDate:ListDomainDeliverabilityCampaigns' :: POSIX
endDate = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pEndDate_,
        $sel:subscribedDomain:ListDomainDeliverabilityCampaigns' :: Text
subscribedDomain = Text
pSubscribedDomain_
      }

-- | A token that’s returned from a previous call to the
-- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the
-- position of a campaign in the list of campaigns.
listDomainDeliverabilityCampaigns_nextToken :: Lens.Lens' ListDomainDeliverabilityCampaigns (Prelude.Maybe Prelude.Text)
listDomainDeliverabilityCampaigns_nextToken :: Lens' ListDomainDeliverabilityCampaigns (Maybe Text)
listDomainDeliverabilityCampaigns_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDomainDeliverabilityCampaigns' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListDomainDeliverabilityCampaigns
s@ListDomainDeliverabilityCampaigns' {} Maybe Text
a -> ListDomainDeliverabilityCampaigns
s {$sel:nextToken:ListDomainDeliverabilityCampaigns' :: Maybe Text
nextToken = Maybe Text
a} :: ListDomainDeliverabilityCampaigns)

-- | The maximum number of results to include in response to a single call to
-- the @ListDomainDeliverabilityCampaigns@ operation. If the number of
-- results is larger than the number that you specify in this parameter,
-- the response includes a @NextToken@ element, which you can use to obtain
-- additional results.
listDomainDeliverabilityCampaigns_pageSize :: Lens.Lens' ListDomainDeliverabilityCampaigns (Prelude.Maybe Prelude.Int)
listDomainDeliverabilityCampaigns_pageSize :: Lens' ListDomainDeliverabilityCampaigns (Maybe Int)
listDomainDeliverabilityCampaigns_pageSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDomainDeliverabilityCampaigns' {Maybe Int
pageSize :: Maybe Int
$sel:pageSize:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Int
pageSize} -> Maybe Int
pageSize) (\s :: ListDomainDeliverabilityCampaigns
s@ListDomainDeliverabilityCampaigns' {} Maybe Int
a -> ListDomainDeliverabilityCampaigns
s {$sel:pageSize:ListDomainDeliverabilityCampaigns' :: Maybe Int
pageSize = Maybe Int
a} :: ListDomainDeliverabilityCampaigns)

-- | The first day, in Unix time format, that you want to obtain
-- deliverability data for.
listDomainDeliverabilityCampaigns_startDate :: Lens.Lens' ListDomainDeliverabilityCampaigns Prelude.UTCTime
listDomainDeliverabilityCampaigns_startDate :: Lens' ListDomainDeliverabilityCampaigns UTCTime
listDomainDeliverabilityCampaigns_startDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDomainDeliverabilityCampaigns' {POSIX
startDate :: POSIX
$sel:startDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
startDate} -> POSIX
startDate) (\s :: ListDomainDeliverabilityCampaigns
s@ListDomainDeliverabilityCampaigns' {} POSIX
a -> ListDomainDeliverabilityCampaigns
s {$sel:startDate:ListDomainDeliverabilityCampaigns' :: POSIX
startDate = POSIX
a} :: ListDomainDeliverabilityCampaigns) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The last day, in Unix time format, that you want to obtain
-- deliverability data for. This value has to be less than or equal to 30
-- days after the value of the @StartDate@ parameter.
listDomainDeliverabilityCampaigns_endDate :: Lens.Lens' ListDomainDeliverabilityCampaigns Prelude.UTCTime
listDomainDeliverabilityCampaigns_endDate :: Lens' ListDomainDeliverabilityCampaigns UTCTime
listDomainDeliverabilityCampaigns_endDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDomainDeliverabilityCampaigns' {POSIX
endDate :: POSIX
$sel:endDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
endDate} -> POSIX
endDate) (\s :: ListDomainDeliverabilityCampaigns
s@ListDomainDeliverabilityCampaigns' {} POSIX
a -> ListDomainDeliverabilityCampaigns
s {$sel:endDate:ListDomainDeliverabilityCampaigns' :: POSIX
endDate = POSIX
a} :: ListDomainDeliverabilityCampaigns) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The domain to obtain deliverability data for.
listDomainDeliverabilityCampaigns_subscribedDomain :: Lens.Lens' ListDomainDeliverabilityCampaigns Prelude.Text
listDomainDeliverabilityCampaigns_subscribedDomain :: Lens' ListDomainDeliverabilityCampaigns Text
listDomainDeliverabilityCampaigns_subscribedDomain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDomainDeliverabilityCampaigns' {Text
subscribedDomain :: Text
$sel:subscribedDomain:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Text
subscribedDomain} -> Text
subscribedDomain) (\s :: ListDomainDeliverabilityCampaigns
s@ListDomainDeliverabilityCampaigns' {} Text
a -> ListDomainDeliverabilityCampaigns
s {$sel:subscribedDomain:ListDomainDeliverabilityCampaigns' :: Text
subscribedDomain = Text
a} :: ListDomainDeliverabilityCampaigns)

instance
  Core.AWSRequest
    ListDomainDeliverabilityCampaigns
  where
  type
    AWSResponse ListDomainDeliverabilityCampaigns =
      ListDomainDeliverabilityCampaignsResponse
  request :: (Service -> Service)
-> ListDomainDeliverabilityCampaigns
-> Request ListDomainDeliverabilityCampaigns
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListDomainDeliverabilityCampaigns
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse ListDomainDeliverabilityCampaigns)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Int
-> [DomainDeliverabilityCampaign]
-> ListDomainDeliverabilityCampaignsResponse
ListDomainDeliverabilityCampaignsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"DomainDeliverabilityCampaigns"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance
  Prelude.Hashable
    ListDomainDeliverabilityCampaigns
  where
  hashWithSalt :: Int -> ListDomainDeliverabilityCampaigns -> Int
hashWithSalt
    Int
_salt
    ListDomainDeliverabilityCampaigns' {Maybe Int
Maybe Text
Text
POSIX
subscribedDomain :: Text
endDate :: POSIX
startDate :: POSIX
pageSize :: Maybe Int
nextToken :: Maybe Text
$sel:subscribedDomain:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Text
$sel:endDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
$sel:startDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
$sel:pageSize:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Int
$sel:nextToken:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
pageSize
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
startDate
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
endDate
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
subscribedDomain

instance
  Prelude.NFData
    ListDomainDeliverabilityCampaigns
  where
  rnf :: ListDomainDeliverabilityCampaigns -> ()
rnf ListDomainDeliverabilityCampaigns' {Maybe Int
Maybe Text
Text
POSIX
subscribedDomain :: Text
endDate :: POSIX
startDate :: POSIX
pageSize :: Maybe Int
nextToken :: Maybe Text
$sel:subscribedDomain:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Text
$sel:endDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
$sel:startDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
$sel:pageSize:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Int
$sel:nextToken:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
pageSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
startDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
endDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
subscribedDomain

instance
  Data.ToHeaders
    ListDomainDeliverabilityCampaigns
  where
  toHeaders :: ListDomainDeliverabilityCampaigns -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToPath
    ListDomainDeliverabilityCampaigns
  where
  toPath :: ListDomainDeliverabilityCampaigns -> ByteString
toPath ListDomainDeliverabilityCampaigns' {Maybe Int
Maybe Text
Text
POSIX
subscribedDomain :: Text
endDate :: POSIX
startDate :: POSIX
pageSize :: Maybe Int
nextToken :: Maybe Text
$sel:subscribedDomain:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Text
$sel:endDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
$sel:startDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
$sel:pageSize:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Int
$sel:nextToken:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/v1/email/deliverability-dashboard/domains/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
subscribedDomain,
        ByteString
"/campaigns"
      ]

instance
  Data.ToQuery
    ListDomainDeliverabilityCampaigns
  where
  toQuery :: ListDomainDeliverabilityCampaigns -> QueryString
toQuery ListDomainDeliverabilityCampaigns' {Maybe Int
Maybe Text
Text
POSIX
subscribedDomain :: Text
endDate :: POSIX
startDate :: POSIX
pageSize :: Maybe Int
nextToken :: Maybe Text
$sel:subscribedDomain:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Text
$sel:endDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
$sel:startDate:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> POSIX
$sel:pageSize:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Int
$sel:nextToken:ListDomainDeliverabilityCampaigns' :: ListDomainDeliverabilityCampaigns -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"PageSize" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
pageSize,
        ByteString
"StartDate" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: POSIX
startDate,
        ByteString
"EndDate" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: POSIX
endDate
      ]

-- | An array of objects that provide deliverability data for all the
-- campaigns that used a specific domain to send email during a specified
-- time range. This data is available for a domain only if you enabled the
-- Deliverability dashboard (@PutDeliverabilityDashboardOption@ operation)
-- for the domain.
--
-- /See:/ 'newListDomainDeliverabilityCampaignsResponse' smart constructor.
data ListDomainDeliverabilityCampaignsResponse = ListDomainDeliverabilityCampaignsResponse'
  { -- | A token that’s returned from a previous call to the
    -- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the
    -- position of the campaign in the list of campaigns.
    ListDomainDeliverabilityCampaignsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListDomainDeliverabilityCampaignsResponse -> Int
httpStatus :: Prelude.Int,
    -- | An array of responses, one for each campaign that used the domain to
    -- send email during the specified time range.
    ListDomainDeliverabilityCampaignsResponse
-> [DomainDeliverabilityCampaign]
domainDeliverabilityCampaigns :: [DomainDeliverabilityCampaign]
  }
  deriving (ListDomainDeliverabilityCampaignsResponse
-> ListDomainDeliverabilityCampaignsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListDomainDeliverabilityCampaignsResponse
-> ListDomainDeliverabilityCampaignsResponse -> Bool
$c/= :: ListDomainDeliverabilityCampaignsResponse
-> ListDomainDeliverabilityCampaignsResponse -> Bool
== :: ListDomainDeliverabilityCampaignsResponse
-> ListDomainDeliverabilityCampaignsResponse -> Bool
$c== :: ListDomainDeliverabilityCampaignsResponse
-> ListDomainDeliverabilityCampaignsResponse -> Bool
Prelude.Eq, ReadPrec [ListDomainDeliverabilityCampaignsResponse]
ReadPrec ListDomainDeliverabilityCampaignsResponse
Int -> ReadS ListDomainDeliverabilityCampaignsResponse
ReadS [ListDomainDeliverabilityCampaignsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListDomainDeliverabilityCampaignsResponse]
$creadListPrec :: ReadPrec [ListDomainDeliverabilityCampaignsResponse]
readPrec :: ReadPrec ListDomainDeliverabilityCampaignsResponse
$creadPrec :: ReadPrec ListDomainDeliverabilityCampaignsResponse
readList :: ReadS [ListDomainDeliverabilityCampaignsResponse]
$creadList :: ReadS [ListDomainDeliverabilityCampaignsResponse]
readsPrec :: Int -> ReadS ListDomainDeliverabilityCampaignsResponse
$creadsPrec :: Int -> ReadS ListDomainDeliverabilityCampaignsResponse
Prelude.Read, Int -> ListDomainDeliverabilityCampaignsResponse -> ShowS
[ListDomainDeliverabilityCampaignsResponse] -> ShowS
ListDomainDeliverabilityCampaignsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListDomainDeliverabilityCampaignsResponse] -> ShowS
$cshowList :: [ListDomainDeliverabilityCampaignsResponse] -> ShowS
show :: ListDomainDeliverabilityCampaignsResponse -> String
$cshow :: ListDomainDeliverabilityCampaignsResponse -> String
showsPrec :: Int -> ListDomainDeliverabilityCampaignsResponse -> ShowS
$cshowsPrec :: Int -> ListDomainDeliverabilityCampaignsResponse -> ShowS
Prelude.Show, forall x.
Rep ListDomainDeliverabilityCampaignsResponse x
-> ListDomainDeliverabilityCampaignsResponse
forall x.
ListDomainDeliverabilityCampaignsResponse
-> Rep ListDomainDeliverabilityCampaignsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListDomainDeliverabilityCampaignsResponse x
-> ListDomainDeliverabilityCampaignsResponse
$cfrom :: forall x.
ListDomainDeliverabilityCampaignsResponse
-> Rep ListDomainDeliverabilityCampaignsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListDomainDeliverabilityCampaignsResponse' 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:
--
-- 'nextToken', 'listDomainDeliverabilityCampaignsResponse_nextToken' - A token that’s returned from a previous call to the
-- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the
-- position of the campaign in the list of campaigns.
--
-- 'httpStatus', 'listDomainDeliverabilityCampaignsResponse_httpStatus' - The response's http status code.
--
-- 'domainDeliverabilityCampaigns', 'listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns' - An array of responses, one for each campaign that used the domain to
-- send email during the specified time range.
newListDomainDeliverabilityCampaignsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListDomainDeliverabilityCampaignsResponse
newListDomainDeliverabilityCampaignsResponse :: Int -> ListDomainDeliverabilityCampaignsResponse
newListDomainDeliverabilityCampaignsResponse
  Int
pHttpStatus_ =
    ListDomainDeliverabilityCampaignsResponse'
      { $sel:nextToken:ListDomainDeliverabilityCampaignsResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ListDomainDeliverabilityCampaignsResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:domainDeliverabilityCampaigns:ListDomainDeliverabilityCampaignsResponse' :: [DomainDeliverabilityCampaign]
domainDeliverabilityCampaigns =
          forall a. Monoid a => a
Prelude.mempty
      }

-- | A token that’s returned from a previous call to the
-- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the
-- position of the campaign in the list of campaigns.
listDomainDeliverabilityCampaignsResponse_nextToken :: Lens.Lens' ListDomainDeliverabilityCampaignsResponse (Prelude.Maybe Prelude.Text)
listDomainDeliverabilityCampaignsResponse_nextToken :: Lens' ListDomainDeliverabilityCampaignsResponse (Maybe Text)
listDomainDeliverabilityCampaignsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDomainDeliverabilityCampaignsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListDomainDeliverabilityCampaignsResponse' :: ListDomainDeliverabilityCampaignsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListDomainDeliverabilityCampaignsResponse
s@ListDomainDeliverabilityCampaignsResponse' {} Maybe Text
a -> ListDomainDeliverabilityCampaignsResponse
s {$sel:nextToken:ListDomainDeliverabilityCampaignsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListDomainDeliverabilityCampaignsResponse)

-- | The response's http status code.
listDomainDeliverabilityCampaignsResponse_httpStatus :: Lens.Lens' ListDomainDeliverabilityCampaignsResponse Prelude.Int
listDomainDeliverabilityCampaignsResponse_httpStatus :: Lens' ListDomainDeliverabilityCampaignsResponse Int
listDomainDeliverabilityCampaignsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDomainDeliverabilityCampaignsResponse' {Int
httpStatus :: Int
$sel:httpStatus:ListDomainDeliverabilityCampaignsResponse' :: ListDomainDeliverabilityCampaignsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: ListDomainDeliverabilityCampaignsResponse
s@ListDomainDeliverabilityCampaignsResponse' {} Int
a -> ListDomainDeliverabilityCampaignsResponse
s {$sel:httpStatus:ListDomainDeliverabilityCampaignsResponse' :: Int
httpStatus = Int
a} :: ListDomainDeliverabilityCampaignsResponse)

-- | An array of responses, one for each campaign that used the domain to
-- send email during the specified time range.
listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns :: Lens.Lens' ListDomainDeliverabilityCampaignsResponse [DomainDeliverabilityCampaign]
listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns :: Lens'
  ListDomainDeliverabilityCampaignsResponse
  [DomainDeliverabilityCampaign]
listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListDomainDeliverabilityCampaignsResponse' {[DomainDeliverabilityCampaign]
domainDeliverabilityCampaigns :: [DomainDeliverabilityCampaign]
$sel:domainDeliverabilityCampaigns:ListDomainDeliverabilityCampaignsResponse' :: ListDomainDeliverabilityCampaignsResponse
-> [DomainDeliverabilityCampaign]
domainDeliverabilityCampaigns} -> [DomainDeliverabilityCampaign]
domainDeliverabilityCampaigns) (\s :: ListDomainDeliverabilityCampaignsResponse
s@ListDomainDeliverabilityCampaignsResponse' {} [DomainDeliverabilityCampaign]
a -> ListDomainDeliverabilityCampaignsResponse
s {$sel:domainDeliverabilityCampaigns:ListDomainDeliverabilityCampaignsResponse' :: [DomainDeliverabilityCampaign]
domainDeliverabilityCampaigns = [DomainDeliverabilityCampaign]
a} :: ListDomainDeliverabilityCampaignsResponse) 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

instance
  Prelude.NFData
    ListDomainDeliverabilityCampaignsResponse
  where
  rnf :: ListDomainDeliverabilityCampaignsResponse -> ()
rnf ListDomainDeliverabilityCampaignsResponse' {Int
[DomainDeliverabilityCampaign]
Maybe Text
domainDeliverabilityCampaigns :: [DomainDeliverabilityCampaign]
httpStatus :: Int
nextToken :: Maybe Text
$sel:domainDeliverabilityCampaigns:ListDomainDeliverabilityCampaignsResponse' :: ListDomainDeliverabilityCampaignsResponse
-> [DomainDeliverabilityCampaign]
$sel:httpStatus:ListDomainDeliverabilityCampaignsResponse' :: ListDomainDeliverabilityCampaignsResponse -> Int
$sel:nextToken:ListDomainDeliverabilityCampaignsResponse' :: ListDomainDeliverabilityCampaignsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [DomainDeliverabilityCampaign]
domainDeliverabilityCampaigns