{-# 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.Pinpoint.GetApplicationDateRangeKpi
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves (queries) pre-aggregated data for a standard metric that
-- applies to an application.
module Amazonka.Pinpoint.GetApplicationDateRangeKpi
  ( -- * Creating a Request
    GetApplicationDateRangeKpi (..),
    newGetApplicationDateRangeKpi,

    -- * Request Lenses
    getApplicationDateRangeKpi_endTime,
    getApplicationDateRangeKpi_nextToken,
    getApplicationDateRangeKpi_pageSize,
    getApplicationDateRangeKpi_startTime,
    getApplicationDateRangeKpi_applicationId,
    getApplicationDateRangeKpi_kpiName,

    -- * Destructuring the Response
    GetApplicationDateRangeKpiResponse (..),
    newGetApplicationDateRangeKpiResponse,

    -- * Response Lenses
    getApplicationDateRangeKpiResponse_httpStatus,
    getApplicationDateRangeKpiResponse_applicationDateRangeKpiResponse,
  )
where

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

-- | /See:/ 'newGetApplicationDateRangeKpi' smart constructor.
data GetApplicationDateRangeKpi = GetApplicationDateRangeKpi'
  { -- | The last date and time to retrieve data for, as part of an inclusive
    -- date range that filters the query results. This value should be in
    -- extended ISO 8601 format and use Coordinated Universal Time (UTC), for
    -- example: 2019-07-26T20:00:00Z for 8:00 PM UTC July 26, 2019.
    GetApplicationDateRangeKpi -> Maybe ISO8601
endTime :: Prelude.Maybe Data.ISO8601,
    -- | The string that specifies which page of results to return in a paginated
    -- response. This parameter is not supported for application, campaign, and
    -- journey metrics.
    GetApplicationDateRangeKpi -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of items to include in each page of a paginated
    -- response. This parameter is not supported for application, campaign, and
    -- journey metrics.
    GetApplicationDateRangeKpi -> Maybe Text
pageSize :: Prelude.Maybe Prelude.Text,
    -- | The first date and time to retrieve data for, as part of an inclusive
    -- date range that filters the query results. This value should be in
    -- extended ISO 8601 format and use Coordinated Universal Time (UTC), for
    -- example: 2019-07-19T20:00:00Z for 8:00 PM UTC July 19, 2019. This value
    -- should also be fewer than 90 days from the current day.
    GetApplicationDateRangeKpi -> Maybe ISO8601
startTime :: Prelude.Maybe Data.ISO8601,
    -- | The unique identifier for the application. This identifier is displayed
    -- as the __Project ID__ on the Amazon Pinpoint console.
    GetApplicationDateRangeKpi -> Text
applicationId :: Prelude.Text,
    -- | The name of the metric, also referred to as a /key performance indicator
    -- (KPI)/, to retrieve data for. This value describes the associated metric
    -- and consists of two or more terms, which are comprised of lowercase
    -- alphanumeric characters, separated by a hyphen. Examples are
    -- email-open-rate and successful-delivery-rate. For a list of valid
    -- values, see the
    -- <https://docs.aws.amazon.com/pinpoint/latest/developerguide/analytics-standard-metrics.html Amazon Pinpoint Developer Guide>.
    GetApplicationDateRangeKpi -> Text
kpiName :: Prelude.Text
  }
  deriving (GetApplicationDateRangeKpi -> GetApplicationDateRangeKpi -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetApplicationDateRangeKpi -> GetApplicationDateRangeKpi -> Bool
$c/= :: GetApplicationDateRangeKpi -> GetApplicationDateRangeKpi -> Bool
== :: GetApplicationDateRangeKpi -> GetApplicationDateRangeKpi -> Bool
$c== :: GetApplicationDateRangeKpi -> GetApplicationDateRangeKpi -> Bool
Prelude.Eq, ReadPrec [GetApplicationDateRangeKpi]
ReadPrec GetApplicationDateRangeKpi
Int -> ReadS GetApplicationDateRangeKpi
ReadS [GetApplicationDateRangeKpi]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetApplicationDateRangeKpi]
$creadListPrec :: ReadPrec [GetApplicationDateRangeKpi]
readPrec :: ReadPrec GetApplicationDateRangeKpi
$creadPrec :: ReadPrec GetApplicationDateRangeKpi
readList :: ReadS [GetApplicationDateRangeKpi]
$creadList :: ReadS [GetApplicationDateRangeKpi]
readsPrec :: Int -> ReadS GetApplicationDateRangeKpi
$creadsPrec :: Int -> ReadS GetApplicationDateRangeKpi
Prelude.Read, Int -> GetApplicationDateRangeKpi -> ShowS
[GetApplicationDateRangeKpi] -> ShowS
GetApplicationDateRangeKpi -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetApplicationDateRangeKpi] -> ShowS
$cshowList :: [GetApplicationDateRangeKpi] -> ShowS
show :: GetApplicationDateRangeKpi -> String
$cshow :: GetApplicationDateRangeKpi -> String
showsPrec :: Int -> GetApplicationDateRangeKpi -> ShowS
$cshowsPrec :: Int -> GetApplicationDateRangeKpi -> ShowS
Prelude.Show, forall x.
Rep GetApplicationDateRangeKpi x -> GetApplicationDateRangeKpi
forall x.
GetApplicationDateRangeKpi -> Rep GetApplicationDateRangeKpi x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetApplicationDateRangeKpi x -> GetApplicationDateRangeKpi
$cfrom :: forall x.
GetApplicationDateRangeKpi -> Rep GetApplicationDateRangeKpi x
Prelude.Generic)

-- |
-- Create a value of 'GetApplicationDateRangeKpi' 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:
--
-- 'endTime', 'getApplicationDateRangeKpi_endTime' - The last date and time to retrieve data for, as part of an inclusive
-- date range that filters the query results. This value should be in
-- extended ISO 8601 format and use Coordinated Universal Time (UTC), for
-- example: 2019-07-26T20:00:00Z for 8:00 PM UTC July 26, 2019.
--
-- 'nextToken', 'getApplicationDateRangeKpi_nextToken' - The string that specifies which page of results to return in a paginated
-- response. This parameter is not supported for application, campaign, and
-- journey metrics.
--
-- 'pageSize', 'getApplicationDateRangeKpi_pageSize' - The maximum number of items to include in each page of a paginated
-- response. This parameter is not supported for application, campaign, and
-- journey metrics.
--
-- 'startTime', 'getApplicationDateRangeKpi_startTime' - The first date and time to retrieve data for, as part of an inclusive
-- date range that filters the query results. This value should be in
-- extended ISO 8601 format and use Coordinated Universal Time (UTC), for
-- example: 2019-07-19T20:00:00Z for 8:00 PM UTC July 19, 2019. This value
-- should also be fewer than 90 days from the current day.
--
-- 'applicationId', 'getApplicationDateRangeKpi_applicationId' - The unique identifier for the application. This identifier is displayed
-- as the __Project ID__ on the Amazon Pinpoint console.
--
-- 'kpiName', 'getApplicationDateRangeKpi_kpiName' - The name of the metric, also referred to as a /key performance indicator
-- (KPI)/, to retrieve data for. This value describes the associated metric
-- and consists of two or more terms, which are comprised of lowercase
-- alphanumeric characters, separated by a hyphen. Examples are
-- email-open-rate and successful-delivery-rate. For a list of valid
-- values, see the
-- <https://docs.aws.amazon.com/pinpoint/latest/developerguide/analytics-standard-metrics.html Amazon Pinpoint Developer Guide>.
newGetApplicationDateRangeKpi ::
  -- | 'applicationId'
  Prelude.Text ->
  -- | 'kpiName'
  Prelude.Text ->
  GetApplicationDateRangeKpi
newGetApplicationDateRangeKpi :: Text -> Text -> GetApplicationDateRangeKpi
newGetApplicationDateRangeKpi
  Text
pApplicationId_
  Text
pKpiName_ =
    GetApplicationDateRangeKpi'
      { $sel:endTime:GetApplicationDateRangeKpi' :: Maybe ISO8601
endTime =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:GetApplicationDateRangeKpi' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:pageSize:GetApplicationDateRangeKpi' :: Maybe Text
pageSize = forall a. Maybe a
Prelude.Nothing,
        $sel:startTime:GetApplicationDateRangeKpi' :: Maybe ISO8601
startTime = forall a. Maybe a
Prelude.Nothing,
        $sel:applicationId:GetApplicationDateRangeKpi' :: Text
applicationId = Text
pApplicationId_,
        $sel:kpiName:GetApplicationDateRangeKpi' :: Text
kpiName = Text
pKpiName_
      }

-- | The last date and time to retrieve data for, as part of an inclusive
-- date range that filters the query results. This value should be in
-- extended ISO 8601 format and use Coordinated Universal Time (UTC), for
-- example: 2019-07-26T20:00:00Z for 8:00 PM UTC July 26, 2019.
getApplicationDateRangeKpi_endTime :: Lens.Lens' GetApplicationDateRangeKpi (Prelude.Maybe Prelude.UTCTime)
getApplicationDateRangeKpi_endTime :: Lens' GetApplicationDateRangeKpi (Maybe UTCTime)
getApplicationDateRangeKpi_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetApplicationDateRangeKpi' {Maybe ISO8601
endTime :: Maybe ISO8601
$sel:endTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
endTime} -> Maybe ISO8601
endTime) (\s :: GetApplicationDateRangeKpi
s@GetApplicationDateRangeKpi' {} Maybe ISO8601
a -> GetApplicationDateRangeKpi
s {$sel:endTime:GetApplicationDateRangeKpi' :: Maybe ISO8601
endTime = Maybe ISO8601
a} :: GetApplicationDateRangeKpi) 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 string that specifies which page of results to return in a paginated
-- response. This parameter is not supported for application, campaign, and
-- journey metrics.
getApplicationDateRangeKpi_nextToken :: Lens.Lens' GetApplicationDateRangeKpi (Prelude.Maybe Prelude.Text)
getApplicationDateRangeKpi_nextToken :: Lens' GetApplicationDateRangeKpi (Maybe Text)
getApplicationDateRangeKpi_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetApplicationDateRangeKpi' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetApplicationDateRangeKpi
s@GetApplicationDateRangeKpi' {} Maybe Text
a -> GetApplicationDateRangeKpi
s {$sel:nextToken:GetApplicationDateRangeKpi' :: Maybe Text
nextToken = Maybe Text
a} :: GetApplicationDateRangeKpi)

-- | The maximum number of items to include in each page of a paginated
-- response. This parameter is not supported for application, campaign, and
-- journey metrics.
getApplicationDateRangeKpi_pageSize :: Lens.Lens' GetApplicationDateRangeKpi (Prelude.Maybe Prelude.Text)
getApplicationDateRangeKpi_pageSize :: Lens' GetApplicationDateRangeKpi (Maybe Text)
getApplicationDateRangeKpi_pageSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetApplicationDateRangeKpi' {Maybe Text
pageSize :: Maybe Text
$sel:pageSize:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
pageSize} -> Maybe Text
pageSize) (\s :: GetApplicationDateRangeKpi
s@GetApplicationDateRangeKpi' {} Maybe Text
a -> GetApplicationDateRangeKpi
s {$sel:pageSize:GetApplicationDateRangeKpi' :: Maybe Text
pageSize = Maybe Text
a} :: GetApplicationDateRangeKpi)

-- | The first date and time to retrieve data for, as part of an inclusive
-- date range that filters the query results. This value should be in
-- extended ISO 8601 format and use Coordinated Universal Time (UTC), for
-- example: 2019-07-19T20:00:00Z for 8:00 PM UTC July 19, 2019. This value
-- should also be fewer than 90 days from the current day.
getApplicationDateRangeKpi_startTime :: Lens.Lens' GetApplicationDateRangeKpi (Prelude.Maybe Prelude.UTCTime)
getApplicationDateRangeKpi_startTime :: Lens' GetApplicationDateRangeKpi (Maybe UTCTime)
getApplicationDateRangeKpi_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetApplicationDateRangeKpi' {Maybe ISO8601
startTime :: Maybe ISO8601
$sel:startTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
startTime} -> Maybe ISO8601
startTime) (\s :: GetApplicationDateRangeKpi
s@GetApplicationDateRangeKpi' {} Maybe ISO8601
a -> GetApplicationDateRangeKpi
s {$sel:startTime:GetApplicationDateRangeKpi' :: Maybe ISO8601
startTime = Maybe ISO8601
a} :: GetApplicationDateRangeKpi) 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 unique identifier for the application. This identifier is displayed
-- as the __Project ID__ on the Amazon Pinpoint console.
getApplicationDateRangeKpi_applicationId :: Lens.Lens' GetApplicationDateRangeKpi Prelude.Text
getApplicationDateRangeKpi_applicationId :: Lens' GetApplicationDateRangeKpi Text
getApplicationDateRangeKpi_applicationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetApplicationDateRangeKpi' {Text
applicationId :: Text
$sel:applicationId:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
applicationId} -> Text
applicationId) (\s :: GetApplicationDateRangeKpi
s@GetApplicationDateRangeKpi' {} Text
a -> GetApplicationDateRangeKpi
s {$sel:applicationId:GetApplicationDateRangeKpi' :: Text
applicationId = Text
a} :: GetApplicationDateRangeKpi)

-- | The name of the metric, also referred to as a /key performance indicator
-- (KPI)/, to retrieve data for. This value describes the associated metric
-- and consists of two or more terms, which are comprised of lowercase
-- alphanumeric characters, separated by a hyphen. Examples are
-- email-open-rate and successful-delivery-rate. For a list of valid
-- values, see the
-- <https://docs.aws.amazon.com/pinpoint/latest/developerguide/analytics-standard-metrics.html Amazon Pinpoint Developer Guide>.
getApplicationDateRangeKpi_kpiName :: Lens.Lens' GetApplicationDateRangeKpi Prelude.Text
getApplicationDateRangeKpi_kpiName :: Lens' GetApplicationDateRangeKpi Text
getApplicationDateRangeKpi_kpiName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetApplicationDateRangeKpi' {Text
kpiName :: Text
$sel:kpiName:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
kpiName} -> Text
kpiName) (\s :: GetApplicationDateRangeKpi
s@GetApplicationDateRangeKpi' {} Text
a -> GetApplicationDateRangeKpi
s {$sel:kpiName:GetApplicationDateRangeKpi' :: Text
kpiName = Text
a} :: GetApplicationDateRangeKpi)

instance Core.AWSRequest GetApplicationDateRangeKpi where
  type
    AWSResponse GetApplicationDateRangeKpi =
      GetApplicationDateRangeKpiResponse
  request :: (Service -> Service)
-> GetApplicationDateRangeKpi -> Request GetApplicationDateRangeKpi
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 GetApplicationDateRangeKpi
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetApplicationDateRangeKpi)))
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 ->
          Int
-> ApplicationDateRangeKpiResponse
-> GetApplicationDateRangeKpiResponse
GetApplicationDateRangeKpiResponse'
            forall (f :: * -> *) a b. Functor 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.<*> (forall a. FromJSON a => Object -> Either String a
Data.eitherParseJSON Object
x)
      )

instance Prelude.Hashable GetApplicationDateRangeKpi where
  hashWithSalt :: Int -> GetApplicationDateRangeKpi -> Int
hashWithSalt Int
_salt GetApplicationDateRangeKpi' {Maybe Text
Maybe ISO8601
Text
kpiName :: Text
applicationId :: Text
startTime :: Maybe ISO8601
pageSize :: Maybe Text
nextToken :: Maybe Text
endTime :: Maybe ISO8601
$sel:kpiName:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
$sel:applicationId:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
$sel:startTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
$sel:pageSize:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
$sel:nextToken:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
$sel:endTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
pageSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
applicationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
kpiName

instance Prelude.NFData GetApplicationDateRangeKpi where
  rnf :: GetApplicationDateRangeKpi -> ()
rnf GetApplicationDateRangeKpi' {Maybe Text
Maybe ISO8601
Text
kpiName :: Text
applicationId :: Text
startTime :: Maybe ISO8601
pageSize :: Maybe Text
nextToken :: Maybe Text
endTime :: Maybe ISO8601
$sel:kpiName:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
$sel:applicationId:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
$sel:startTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
$sel:pageSize:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
$sel:nextToken:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
$sel:endTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
pageSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
applicationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
kpiName

instance Data.ToHeaders GetApplicationDateRangeKpi where
  toHeaders :: GetApplicationDateRangeKpi -> 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 GetApplicationDateRangeKpi where
  toPath :: GetApplicationDateRangeKpi -> ByteString
toPath GetApplicationDateRangeKpi' {Maybe Text
Maybe ISO8601
Text
kpiName :: Text
applicationId :: Text
startTime :: Maybe ISO8601
pageSize :: Maybe Text
nextToken :: Maybe Text
endTime :: Maybe ISO8601
$sel:kpiName:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
$sel:applicationId:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
$sel:startTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
$sel:pageSize:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
$sel:nextToken:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
$sel:endTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/v1/apps/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
applicationId,
        ByteString
"/kpis/daterange/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
kpiName
      ]

instance Data.ToQuery GetApplicationDateRangeKpi where
  toQuery :: GetApplicationDateRangeKpi -> QueryString
toQuery GetApplicationDateRangeKpi' {Maybe Text
Maybe ISO8601
Text
kpiName :: Text
applicationId :: Text
startTime :: Maybe ISO8601
pageSize :: Maybe Text
nextToken :: Maybe Text
endTime :: Maybe ISO8601
$sel:kpiName:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
$sel:applicationId:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Text
$sel:startTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
$sel:pageSize:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
$sel:nextToken:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe Text
$sel:endTime:GetApplicationDateRangeKpi' :: GetApplicationDateRangeKpi -> Maybe ISO8601
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"end-time" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ISO8601
endTime,
        ByteString
"next-token" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"page-size" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
pageSize,
        ByteString
"start-time" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ISO8601
startTime
      ]

-- | /See:/ 'newGetApplicationDateRangeKpiResponse' smart constructor.
data GetApplicationDateRangeKpiResponse = GetApplicationDateRangeKpiResponse'
  { -- | The response's http status code.
    GetApplicationDateRangeKpiResponse -> Int
httpStatus :: Prelude.Int,
    GetApplicationDateRangeKpiResponse
-> ApplicationDateRangeKpiResponse
applicationDateRangeKpiResponse :: ApplicationDateRangeKpiResponse
  }
  deriving (GetApplicationDateRangeKpiResponse
-> GetApplicationDateRangeKpiResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetApplicationDateRangeKpiResponse
-> GetApplicationDateRangeKpiResponse -> Bool
$c/= :: GetApplicationDateRangeKpiResponse
-> GetApplicationDateRangeKpiResponse -> Bool
== :: GetApplicationDateRangeKpiResponse
-> GetApplicationDateRangeKpiResponse -> Bool
$c== :: GetApplicationDateRangeKpiResponse
-> GetApplicationDateRangeKpiResponse -> Bool
Prelude.Eq, ReadPrec [GetApplicationDateRangeKpiResponse]
ReadPrec GetApplicationDateRangeKpiResponse
Int -> ReadS GetApplicationDateRangeKpiResponse
ReadS [GetApplicationDateRangeKpiResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetApplicationDateRangeKpiResponse]
$creadListPrec :: ReadPrec [GetApplicationDateRangeKpiResponse]
readPrec :: ReadPrec GetApplicationDateRangeKpiResponse
$creadPrec :: ReadPrec GetApplicationDateRangeKpiResponse
readList :: ReadS [GetApplicationDateRangeKpiResponse]
$creadList :: ReadS [GetApplicationDateRangeKpiResponse]
readsPrec :: Int -> ReadS GetApplicationDateRangeKpiResponse
$creadsPrec :: Int -> ReadS GetApplicationDateRangeKpiResponse
Prelude.Read, Int -> GetApplicationDateRangeKpiResponse -> ShowS
[GetApplicationDateRangeKpiResponse] -> ShowS
GetApplicationDateRangeKpiResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetApplicationDateRangeKpiResponse] -> ShowS
$cshowList :: [GetApplicationDateRangeKpiResponse] -> ShowS
show :: GetApplicationDateRangeKpiResponse -> String
$cshow :: GetApplicationDateRangeKpiResponse -> String
showsPrec :: Int -> GetApplicationDateRangeKpiResponse -> ShowS
$cshowsPrec :: Int -> GetApplicationDateRangeKpiResponse -> ShowS
Prelude.Show, forall x.
Rep GetApplicationDateRangeKpiResponse x
-> GetApplicationDateRangeKpiResponse
forall x.
GetApplicationDateRangeKpiResponse
-> Rep GetApplicationDateRangeKpiResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetApplicationDateRangeKpiResponse x
-> GetApplicationDateRangeKpiResponse
$cfrom :: forall x.
GetApplicationDateRangeKpiResponse
-> Rep GetApplicationDateRangeKpiResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetApplicationDateRangeKpiResponse' 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:
--
-- 'httpStatus', 'getApplicationDateRangeKpiResponse_httpStatus' - The response's http status code.
--
-- 'applicationDateRangeKpiResponse', 'getApplicationDateRangeKpiResponse_applicationDateRangeKpiResponse' - Undocumented member.
newGetApplicationDateRangeKpiResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'applicationDateRangeKpiResponse'
  ApplicationDateRangeKpiResponse ->
  GetApplicationDateRangeKpiResponse
newGetApplicationDateRangeKpiResponse :: Int
-> ApplicationDateRangeKpiResponse
-> GetApplicationDateRangeKpiResponse
newGetApplicationDateRangeKpiResponse
  Int
pHttpStatus_
  ApplicationDateRangeKpiResponse
pApplicationDateRangeKpiResponse_ =
    GetApplicationDateRangeKpiResponse'
      { $sel:httpStatus:GetApplicationDateRangeKpiResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:applicationDateRangeKpiResponse:GetApplicationDateRangeKpiResponse' :: ApplicationDateRangeKpiResponse
applicationDateRangeKpiResponse =
          ApplicationDateRangeKpiResponse
pApplicationDateRangeKpiResponse_
      }

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

-- | Undocumented member.
getApplicationDateRangeKpiResponse_applicationDateRangeKpiResponse :: Lens.Lens' GetApplicationDateRangeKpiResponse ApplicationDateRangeKpiResponse
getApplicationDateRangeKpiResponse_applicationDateRangeKpiResponse :: Lens'
  GetApplicationDateRangeKpiResponse ApplicationDateRangeKpiResponse
getApplicationDateRangeKpiResponse_applicationDateRangeKpiResponse = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetApplicationDateRangeKpiResponse' {ApplicationDateRangeKpiResponse
applicationDateRangeKpiResponse :: ApplicationDateRangeKpiResponse
$sel:applicationDateRangeKpiResponse:GetApplicationDateRangeKpiResponse' :: GetApplicationDateRangeKpiResponse
-> ApplicationDateRangeKpiResponse
applicationDateRangeKpiResponse} -> ApplicationDateRangeKpiResponse
applicationDateRangeKpiResponse) (\s :: GetApplicationDateRangeKpiResponse
s@GetApplicationDateRangeKpiResponse' {} ApplicationDateRangeKpiResponse
a -> GetApplicationDateRangeKpiResponse
s {$sel:applicationDateRangeKpiResponse:GetApplicationDateRangeKpiResponse' :: ApplicationDateRangeKpiResponse
applicationDateRangeKpiResponse = ApplicationDateRangeKpiResponse
a} :: GetApplicationDateRangeKpiResponse)

instance
  Prelude.NFData
    GetApplicationDateRangeKpiResponse
  where
  rnf :: GetApplicationDateRangeKpiResponse -> ()
rnf GetApplicationDateRangeKpiResponse' {Int
ApplicationDateRangeKpiResponse
applicationDateRangeKpiResponse :: ApplicationDateRangeKpiResponse
httpStatus :: Int
$sel:applicationDateRangeKpiResponse:GetApplicationDateRangeKpiResponse' :: GetApplicationDateRangeKpiResponse
-> ApplicationDateRangeKpiResponse
$sel:httpStatus:GetApplicationDateRangeKpiResponse' :: GetApplicationDateRangeKpiResponse -> Int
..} =
    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 ApplicationDateRangeKpiResponse
applicationDateRangeKpiResponse