{-# 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.XRay.GetTimeSeriesServiceStatistics
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Get an aggregation of service statistics defined by a specific time
-- range.
--
-- This operation returns paginated results.
module Amazonka.XRay.GetTimeSeriesServiceStatistics
  ( -- * Creating a Request
    GetTimeSeriesServiceStatistics (..),
    newGetTimeSeriesServiceStatistics,

    -- * Request Lenses
    getTimeSeriesServiceStatistics_entitySelectorExpression,
    getTimeSeriesServiceStatistics_forecastStatistics,
    getTimeSeriesServiceStatistics_groupARN,
    getTimeSeriesServiceStatistics_groupName,
    getTimeSeriesServiceStatistics_nextToken,
    getTimeSeriesServiceStatistics_period,
    getTimeSeriesServiceStatistics_startTime,
    getTimeSeriesServiceStatistics_endTime,

    -- * Destructuring the Response
    GetTimeSeriesServiceStatisticsResponse (..),
    newGetTimeSeriesServiceStatisticsResponse,

    -- * Response Lenses
    getTimeSeriesServiceStatisticsResponse_containsOldGroupVersions,
    getTimeSeriesServiceStatisticsResponse_nextToken,
    getTimeSeriesServiceStatisticsResponse_timeSeriesServiceStatistics,
    getTimeSeriesServiceStatisticsResponse_httpStatus,
  )
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
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.XRay.Types

-- | /See:/ 'newGetTimeSeriesServiceStatistics' smart constructor.
data GetTimeSeriesServiceStatistics = GetTimeSeriesServiceStatistics'
  { -- | A filter expression defining entities that will be aggregated for
    -- statistics. Supports ID, service, and edge functions. If no selector
    -- expression is specified, edge statistics are returned.
    GetTimeSeriesServiceStatistics -> Maybe Text
entitySelectorExpression :: Prelude.Maybe Prelude.Text,
    -- | The forecasted high and low fault count values. Forecast enabled
    -- requests require the EntitySelectorExpression ID be provided.
    GetTimeSeriesServiceStatistics -> Maybe Bool
forecastStatistics :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Name (ARN) of the group for which to pull statistics
    -- from.
    GetTimeSeriesServiceStatistics -> Maybe Text
groupARN :: Prelude.Maybe Prelude.Text,
    -- | The case-sensitive name of the group for which to pull statistics from.
    GetTimeSeriesServiceStatistics -> Maybe Text
groupName :: Prelude.Maybe Prelude.Text,
    -- | Pagination token.
    GetTimeSeriesServiceStatistics -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Aggregation period in seconds.
    GetTimeSeriesServiceStatistics -> Maybe Int
period :: Prelude.Maybe Prelude.Int,
    -- | The start of the time frame for which to aggregate statistics.
    GetTimeSeriesServiceStatistics -> POSIX
startTime :: Data.POSIX,
    -- | The end of the time frame for which to aggregate statistics.
    GetTimeSeriesServiceStatistics -> POSIX
endTime :: Data.POSIX
  }
  deriving (GetTimeSeriesServiceStatistics
-> GetTimeSeriesServiceStatistics -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetTimeSeriesServiceStatistics
-> GetTimeSeriesServiceStatistics -> Bool
$c/= :: GetTimeSeriesServiceStatistics
-> GetTimeSeriesServiceStatistics -> Bool
== :: GetTimeSeriesServiceStatistics
-> GetTimeSeriesServiceStatistics -> Bool
$c== :: GetTimeSeriesServiceStatistics
-> GetTimeSeriesServiceStatistics -> Bool
Prelude.Eq, ReadPrec [GetTimeSeriesServiceStatistics]
ReadPrec GetTimeSeriesServiceStatistics
Int -> ReadS GetTimeSeriesServiceStatistics
ReadS [GetTimeSeriesServiceStatistics]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetTimeSeriesServiceStatistics]
$creadListPrec :: ReadPrec [GetTimeSeriesServiceStatistics]
readPrec :: ReadPrec GetTimeSeriesServiceStatistics
$creadPrec :: ReadPrec GetTimeSeriesServiceStatistics
readList :: ReadS [GetTimeSeriesServiceStatistics]
$creadList :: ReadS [GetTimeSeriesServiceStatistics]
readsPrec :: Int -> ReadS GetTimeSeriesServiceStatistics
$creadsPrec :: Int -> ReadS GetTimeSeriesServiceStatistics
Prelude.Read, Int -> GetTimeSeriesServiceStatistics -> ShowS
[GetTimeSeriesServiceStatistics] -> ShowS
GetTimeSeriesServiceStatistics -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetTimeSeriesServiceStatistics] -> ShowS
$cshowList :: [GetTimeSeriesServiceStatistics] -> ShowS
show :: GetTimeSeriesServiceStatistics -> String
$cshow :: GetTimeSeriesServiceStatistics -> String
showsPrec :: Int -> GetTimeSeriesServiceStatistics -> ShowS
$cshowsPrec :: Int -> GetTimeSeriesServiceStatistics -> ShowS
Prelude.Show, forall x.
Rep GetTimeSeriesServiceStatistics x
-> GetTimeSeriesServiceStatistics
forall x.
GetTimeSeriesServiceStatistics
-> Rep GetTimeSeriesServiceStatistics x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetTimeSeriesServiceStatistics x
-> GetTimeSeriesServiceStatistics
$cfrom :: forall x.
GetTimeSeriesServiceStatistics
-> Rep GetTimeSeriesServiceStatistics x
Prelude.Generic)

-- |
-- Create a value of 'GetTimeSeriesServiceStatistics' 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:
--
-- 'entitySelectorExpression', 'getTimeSeriesServiceStatistics_entitySelectorExpression' - A filter expression defining entities that will be aggregated for
-- statistics. Supports ID, service, and edge functions. If no selector
-- expression is specified, edge statistics are returned.
--
-- 'forecastStatistics', 'getTimeSeriesServiceStatistics_forecastStatistics' - The forecasted high and low fault count values. Forecast enabled
-- requests require the EntitySelectorExpression ID be provided.
--
-- 'groupARN', 'getTimeSeriesServiceStatistics_groupARN' - The Amazon Resource Name (ARN) of the group for which to pull statistics
-- from.
--
-- 'groupName', 'getTimeSeriesServiceStatistics_groupName' - The case-sensitive name of the group for which to pull statistics from.
--
-- 'nextToken', 'getTimeSeriesServiceStatistics_nextToken' - Pagination token.
--
-- 'period', 'getTimeSeriesServiceStatistics_period' - Aggregation period in seconds.
--
-- 'startTime', 'getTimeSeriesServiceStatistics_startTime' - The start of the time frame for which to aggregate statistics.
--
-- 'endTime', 'getTimeSeriesServiceStatistics_endTime' - The end of the time frame for which to aggregate statistics.
newGetTimeSeriesServiceStatistics ::
  -- | 'startTime'
  Prelude.UTCTime ->
  -- | 'endTime'
  Prelude.UTCTime ->
  GetTimeSeriesServiceStatistics
newGetTimeSeriesServiceStatistics :: UTCTime -> UTCTime -> GetTimeSeriesServiceStatistics
newGetTimeSeriesServiceStatistics
  UTCTime
pStartTime_
  UTCTime
pEndTime_ =
    GetTimeSeriesServiceStatistics'
      { $sel:entitySelectorExpression:GetTimeSeriesServiceStatistics' :: Maybe Text
entitySelectorExpression =
          forall a. Maybe a
Prelude.Nothing,
        $sel:forecastStatistics:GetTimeSeriesServiceStatistics' :: Maybe Bool
forecastStatistics = forall a. Maybe a
Prelude.Nothing,
        $sel:groupARN:GetTimeSeriesServiceStatistics' :: Maybe Text
groupARN = forall a. Maybe a
Prelude.Nothing,
        $sel:groupName:GetTimeSeriesServiceStatistics' :: Maybe Text
groupName = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:GetTimeSeriesServiceStatistics' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:period:GetTimeSeriesServiceStatistics' :: Maybe Int
period = forall a. Maybe a
Prelude.Nothing,
        $sel:startTime:GetTimeSeriesServiceStatistics' :: POSIX
startTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pStartTime_,
        $sel:endTime:GetTimeSeriesServiceStatistics' :: POSIX
endTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pEndTime_
      }

-- | A filter expression defining entities that will be aggregated for
-- statistics. Supports ID, service, and edge functions. If no selector
-- expression is specified, edge statistics are returned.
getTimeSeriesServiceStatistics_entitySelectorExpression :: Lens.Lens' GetTimeSeriesServiceStatistics (Prelude.Maybe Prelude.Text)
getTimeSeriesServiceStatistics_entitySelectorExpression :: Lens' GetTimeSeriesServiceStatistics (Maybe Text)
getTimeSeriesServiceStatistics_entitySelectorExpression = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatistics' {Maybe Text
entitySelectorExpression :: Maybe Text
$sel:entitySelectorExpression:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
entitySelectorExpression} -> Maybe Text
entitySelectorExpression) (\s :: GetTimeSeriesServiceStatistics
s@GetTimeSeriesServiceStatistics' {} Maybe Text
a -> GetTimeSeriesServiceStatistics
s {$sel:entitySelectorExpression:GetTimeSeriesServiceStatistics' :: Maybe Text
entitySelectorExpression = Maybe Text
a} :: GetTimeSeriesServiceStatistics)

-- | The forecasted high and low fault count values. Forecast enabled
-- requests require the EntitySelectorExpression ID be provided.
getTimeSeriesServiceStatistics_forecastStatistics :: Lens.Lens' GetTimeSeriesServiceStatistics (Prelude.Maybe Prelude.Bool)
getTimeSeriesServiceStatistics_forecastStatistics :: Lens' GetTimeSeriesServiceStatistics (Maybe Bool)
getTimeSeriesServiceStatistics_forecastStatistics = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatistics' {Maybe Bool
forecastStatistics :: Maybe Bool
$sel:forecastStatistics:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Bool
forecastStatistics} -> Maybe Bool
forecastStatistics) (\s :: GetTimeSeriesServiceStatistics
s@GetTimeSeriesServiceStatistics' {} Maybe Bool
a -> GetTimeSeriesServiceStatistics
s {$sel:forecastStatistics:GetTimeSeriesServiceStatistics' :: Maybe Bool
forecastStatistics = Maybe Bool
a} :: GetTimeSeriesServiceStatistics)

-- | The Amazon Resource Name (ARN) of the group for which to pull statistics
-- from.
getTimeSeriesServiceStatistics_groupARN :: Lens.Lens' GetTimeSeriesServiceStatistics (Prelude.Maybe Prelude.Text)
getTimeSeriesServiceStatistics_groupARN :: Lens' GetTimeSeriesServiceStatistics (Maybe Text)
getTimeSeriesServiceStatistics_groupARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatistics' {Maybe Text
groupARN :: Maybe Text
$sel:groupARN:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
groupARN} -> Maybe Text
groupARN) (\s :: GetTimeSeriesServiceStatistics
s@GetTimeSeriesServiceStatistics' {} Maybe Text
a -> GetTimeSeriesServiceStatistics
s {$sel:groupARN:GetTimeSeriesServiceStatistics' :: Maybe Text
groupARN = Maybe Text
a} :: GetTimeSeriesServiceStatistics)

-- | The case-sensitive name of the group for which to pull statistics from.
getTimeSeriesServiceStatistics_groupName :: Lens.Lens' GetTimeSeriesServiceStatistics (Prelude.Maybe Prelude.Text)
getTimeSeriesServiceStatistics_groupName :: Lens' GetTimeSeriesServiceStatistics (Maybe Text)
getTimeSeriesServiceStatistics_groupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatistics' {Maybe Text
groupName :: Maybe Text
$sel:groupName:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
groupName} -> Maybe Text
groupName) (\s :: GetTimeSeriesServiceStatistics
s@GetTimeSeriesServiceStatistics' {} Maybe Text
a -> GetTimeSeriesServiceStatistics
s {$sel:groupName:GetTimeSeriesServiceStatistics' :: Maybe Text
groupName = Maybe Text
a} :: GetTimeSeriesServiceStatistics)

-- | Pagination token.
getTimeSeriesServiceStatistics_nextToken :: Lens.Lens' GetTimeSeriesServiceStatistics (Prelude.Maybe Prelude.Text)
getTimeSeriesServiceStatistics_nextToken :: Lens' GetTimeSeriesServiceStatistics (Maybe Text)
getTimeSeriesServiceStatistics_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatistics' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetTimeSeriesServiceStatistics
s@GetTimeSeriesServiceStatistics' {} Maybe Text
a -> GetTimeSeriesServiceStatistics
s {$sel:nextToken:GetTimeSeriesServiceStatistics' :: Maybe Text
nextToken = Maybe Text
a} :: GetTimeSeriesServiceStatistics)

-- | Aggregation period in seconds.
getTimeSeriesServiceStatistics_period :: Lens.Lens' GetTimeSeriesServiceStatistics (Prelude.Maybe Prelude.Int)
getTimeSeriesServiceStatistics_period :: Lens' GetTimeSeriesServiceStatistics (Maybe Int)
getTimeSeriesServiceStatistics_period = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatistics' {Maybe Int
period :: Maybe Int
$sel:period:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Int
period} -> Maybe Int
period) (\s :: GetTimeSeriesServiceStatistics
s@GetTimeSeriesServiceStatistics' {} Maybe Int
a -> GetTimeSeriesServiceStatistics
s {$sel:period:GetTimeSeriesServiceStatistics' :: Maybe Int
period = Maybe Int
a} :: GetTimeSeriesServiceStatistics)

-- | The start of the time frame for which to aggregate statistics.
getTimeSeriesServiceStatistics_startTime :: Lens.Lens' GetTimeSeriesServiceStatistics Prelude.UTCTime
getTimeSeriesServiceStatistics_startTime :: Lens' GetTimeSeriesServiceStatistics UTCTime
getTimeSeriesServiceStatistics_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatistics' {POSIX
startTime :: POSIX
$sel:startTime:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> POSIX
startTime} -> POSIX
startTime) (\s :: GetTimeSeriesServiceStatistics
s@GetTimeSeriesServiceStatistics' {} POSIX
a -> GetTimeSeriesServiceStatistics
s {$sel:startTime:GetTimeSeriesServiceStatistics' :: POSIX
startTime = POSIX
a} :: GetTimeSeriesServiceStatistics) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The end of the time frame for which to aggregate statistics.
getTimeSeriesServiceStatistics_endTime :: Lens.Lens' GetTimeSeriesServiceStatistics Prelude.UTCTime
getTimeSeriesServiceStatistics_endTime :: Lens' GetTimeSeriesServiceStatistics UTCTime
getTimeSeriesServiceStatistics_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatistics' {POSIX
endTime :: POSIX
$sel:endTime:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> POSIX
endTime} -> POSIX
endTime) (\s :: GetTimeSeriesServiceStatistics
s@GetTimeSeriesServiceStatistics' {} POSIX
a -> GetTimeSeriesServiceStatistics
s {$sel:endTime:GetTimeSeriesServiceStatistics' :: POSIX
endTime = POSIX
a} :: GetTimeSeriesServiceStatistics) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Core.AWSPager GetTimeSeriesServiceStatistics where
  page :: GetTimeSeriesServiceStatistics
-> AWSResponse GetTimeSeriesServiceStatistics
-> Maybe GetTimeSeriesServiceStatistics
page GetTimeSeriesServiceStatistics
rq AWSResponse GetTimeSeriesServiceStatistics
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetTimeSeriesServiceStatistics
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetTimeSeriesServiceStatisticsResponse (Maybe Text)
getTimeSeriesServiceStatisticsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetTimeSeriesServiceStatistics
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens'
  GetTimeSeriesServiceStatisticsResponse
  (Maybe [TimeSeriesServiceStatistics])
getTimeSeriesServiceStatisticsResponse_timeSeriesServiceStatistics
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ GetTimeSeriesServiceStatistics
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' GetTimeSeriesServiceStatistics (Maybe Text)
getTimeSeriesServiceStatistics_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse GetTimeSeriesServiceStatistics
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetTimeSeriesServiceStatisticsResponse (Maybe Text)
getTimeSeriesServiceStatisticsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    GetTimeSeriesServiceStatistics
  where
  type
    AWSResponse GetTimeSeriesServiceStatistics =
      GetTimeSeriesServiceStatisticsResponse
  request :: (Service -> Service)
-> GetTimeSeriesServiceStatistics
-> Request GetTimeSeriesServiceStatistics
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetTimeSeriesServiceStatistics
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetTimeSeriesServiceStatistics)))
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 Bool
-> Maybe Text
-> Maybe [TimeSeriesServiceStatistics]
-> Int
-> GetTimeSeriesServiceStatisticsResponse
GetTimeSeriesServiceStatisticsResponse'
            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
"ContainsOldGroupVersions")
            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
"NextToken")
            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
"TimeSeriesServiceStatistics"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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))
      )

instance
  Prelude.Hashable
    GetTimeSeriesServiceStatistics
  where
  hashWithSalt :: Int -> GetTimeSeriesServiceStatistics -> Int
hashWithSalt
    Int
_salt
    GetTimeSeriesServiceStatistics' {Maybe Bool
Maybe Int
Maybe Text
POSIX
endTime :: POSIX
startTime :: POSIX
period :: Maybe Int
nextToken :: Maybe Text
groupName :: Maybe Text
groupARN :: Maybe Text
forecastStatistics :: Maybe Bool
entitySelectorExpression :: Maybe Text
$sel:endTime:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> POSIX
$sel:startTime:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> POSIX
$sel:period:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Int
$sel:nextToken:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:groupName:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:groupARN:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:forecastStatistics:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Bool
$sel:entitySelectorExpression:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
entitySelectorExpression
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
forecastStatistics
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
groupARN
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
groupName
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
period
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
startTime
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
endTime

instance
  Prelude.NFData
    GetTimeSeriesServiceStatistics
  where
  rnf :: GetTimeSeriesServiceStatistics -> ()
rnf GetTimeSeriesServiceStatistics' {Maybe Bool
Maybe Int
Maybe Text
POSIX
endTime :: POSIX
startTime :: POSIX
period :: Maybe Int
nextToken :: Maybe Text
groupName :: Maybe Text
groupARN :: Maybe Text
forecastStatistics :: Maybe Bool
entitySelectorExpression :: Maybe Text
$sel:endTime:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> POSIX
$sel:startTime:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> POSIX
$sel:period:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Int
$sel:nextToken:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:groupName:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:groupARN:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:forecastStatistics:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Bool
$sel:entitySelectorExpression:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
entitySelectorExpression
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
forecastStatistics
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
groupARN
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
groupName
      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 Int
period
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
endTime

instance
  Data.ToHeaders
    GetTimeSeriesServiceStatistics
  where
  toHeaders :: GetTimeSeriesServiceStatistics -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON GetTimeSeriesServiceStatistics where
  toJSON :: GetTimeSeriesServiceStatistics -> Value
toJSON GetTimeSeriesServiceStatistics' {Maybe Bool
Maybe Int
Maybe Text
POSIX
endTime :: POSIX
startTime :: POSIX
period :: Maybe Int
nextToken :: Maybe Text
groupName :: Maybe Text
groupARN :: Maybe Text
forecastStatistics :: Maybe Bool
entitySelectorExpression :: Maybe Text
$sel:endTime:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> POSIX
$sel:startTime:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> POSIX
$sel:period:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Int
$sel:nextToken:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:groupName:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:groupARN:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
$sel:forecastStatistics:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Bool
$sel:entitySelectorExpression:GetTimeSeriesServiceStatistics' :: GetTimeSeriesServiceStatistics -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"EntitySelectorExpression" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
entitySelectorExpression,
            (Key
"ForecastStatistics" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
forecastStatistics,
            (Key
"GroupARN" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
groupARN,
            (Key
"GroupName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
groupName,
            (Key
"NextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            (Key
"Period" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
period,
            forall a. a -> Maybe a
Prelude.Just (Key
"StartTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= POSIX
startTime),
            forall a. a -> Maybe a
Prelude.Just (Key
"EndTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= POSIX
endTime)
          ]
      )

instance Data.ToPath GetTimeSeriesServiceStatistics where
  toPath :: GetTimeSeriesServiceStatistics -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/TimeSeriesServiceStatistics"

instance Data.ToQuery GetTimeSeriesServiceStatistics where
  toQuery :: GetTimeSeriesServiceStatistics -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newGetTimeSeriesServiceStatisticsResponse' smart constructor.
data GetTimeSeriesServiceStatisticsResponse = GetTimeSeriesServiceStatisticsResponse'
  { -- | A flag indicating whether or not a group\'s filter expression has been
    -- consistent, or if a returned aggregation might show statistics from an
    -- older version of the group\'s filter expression.
    GetTimeSeriesServiceStatisticsResponse -> Maybe Bool
containsOldGroupVersions :: Prelude.Maybe Prelude.Bool,
    -- | Pagination token.
    GetTimeSeriesServiceStatisticsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The collection of statistics.
    GetTimeSeriesServiceStatisticsResponse
-> Maybe [TimeSeriesServiceStatistics]
timeSeriesServiceStatistics :: Prelude.Maybe [TimeSeriesServiceStatistics],
    -- | The response's http status code.
    GetTimeSeriesServiceStatisticsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetTimeSeriesServiceStatisticsResponse
-> GetTimeSeriesServiceStatisticsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetTimeSeriesServiceStatisticsResponse
-> GetTimeSeriesServiceStatisticsResponse -> Bool
$c/= :: GetTimeSeriesServiceStatisticsResponse
-> GetTimeSeriesServiceStatisticsResponse -> Bool
== :: GetTimeSeriesServiceStatisticsResponse
-> GetTimeSeriesServiceStatisticsResponse -> Bool
$c== :: GetTimeSeriesServiceStatisticsResponse
-> GetTimeSeriesServiceStatisticsResponse -> Bool
Prelude.Eq, ReadPrec [GetTimeSeriesServiceStatisticsResponse]
ReadPrec GetTimeSeriesServiceStatisticsResponse
Int -> ReadS GetTimeSeriesServiceStatisticsResponse
ReadS [GetTimeSeriesServiceStatisticsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetTimeSeriesServiceStatisticsResponse]
$creadListPrec :: ReadPrec [GetTimeSeriesServiceStatisticsResponse]
readPrec :: ReadPrec GetTimeSeriesServiceStatisticsResponse
$creadPrec :: ReadPrec GetTimeSeriesServiceStatisticsResponse
readList :: ReadS [GetTimeSeriesServiceStatisticsResponse]
$creadList :: ReadS [GetTimeSeriesServiceStatisticsResponse]
readsPrec :: Int -> ReadS GetTimeSeriesServiceStatisticsResponse
$creadsPrec :: Int -> ReadS GetTimeSeriesServiceStatisticsResponse
Prelude.Read, Int -> GetTimeSeriesServiceStatisticsResponse -> ShowS
[GetTimeSeriesServiceStatisticsResponse] -> ShowS
GetTimeSeriesServiceStatisticsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetTimeSeriesServiceStatisticsResponse] -> ShowS
$cshowList :: [GetTimeSeriesServiceStatisticsResponse] -> ShowS
show :: GetTimeSeriesServiceStatisticsResponse -> String
$cshow :: GetTimeSeriesServiceStatisticsResponse -> String
showsPrec :: Int -> GetTimeSeriesServiceStatisticsResponse -> ShowS
$cshowsPrec :: Int -> GetTimeSeriesServiceStatisticsResponse -> ShowS
Prelude.Show, forall x.
Rep GetTimeSeriesServiceStatisticsResponse x
-> GetTimeSeriesServiceStatisticsResponse
forall x.
GetTimeSeriesServiceStatisticsResponse
-> Rep GetTimeSeriesServiceStatisticsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetTimeSeriesServiceStatisticsResponse x
-> GetTimeSeriesServiceStatisticsResponse
$cfrom :: forall x.
GetTimeSeriesServiceStatisticsResponse
-> Rep GetTimeSeriesServiceStatisticsResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetTimeSeriesServiceStatisticsResponse' 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:
--
-- 'containsOldGroupVersions', 'getTimeSeriesServiceStatisticsResponse_containsOldGroupVersions' - A flag indicating whether or not a group\'s filter expression has been
-- consistent, or if a returned aggregation might show statistics from an
-- older version of the group\'s filter expression.
--
-- 'nextToken', 'getTimeSeriesServiceStatisticsResponse_nextToken' - Pagination token.
--
-- 'timeSeriesServiceStatistics', 'getTimeSeriesServiceStatisticsResponse_timeSeriesServiceStatistics' - The collection of statistics.
--
-- 'httpStatus', 'getTimeSeriesServiceStatisticsResponse_httpStatus' - The response's http status code.
newGetTimeSeriesServiceStatisticsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetTimeSeriesServiceStatisticsResponse
newGetTimeSeriesServiceStatisticsResponse :: Int -> GetTimeSeriesServiceStatisticsResponse
newGetTimeSeriesServiceStatisticsResponse
  Int
pHttpStatus_ =
    GetTimeSeriesServiceStatisticsResponse'
      { $sel:containsOldGroupVersions:GetTimeSeriesServiceStatisticsResponse' :: Maybe Bool
containsOldGroupVersions =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:GetTimeSeriesServiceStatisticsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:timeSeriesServiceStatistics:GetTimeSeriesServiceStatisticsResponse' :: Maybe [TimeSeriesServiceStatistics]
timeSeriesServiceStatistics =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetTimeSeriesServiceStatisticsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | A flag indicating whether or not a group\'s filter expression has been
-- consistent, or if a returned aggregation might show statistics from an
-- older version of the group\'s filter expression.
getTimeSeriesServiceStatisticsResponse_containsOldGroupVersions :: Lens.Lens' GetTimeSeriesServiceStatisticsResponse (Prelude.Maybe Prelude.Bool)
getTimeSeriesServiceStatisticsResponse_containsOldGroupVersions :: Lens' GetTimeSeriesServiceStatisticsResponse (Maybe Bool)
getTimeSeriesServiceStatisticsResponse_containsOldGroupVersions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatisticsResponse' {Maybe Bool
containsOldGroupVersions :: Maybe Bool
$sel:containsOldGroupVersions:GetTimeSeriesServiceStatisticsResponse' :: GetTimeSeriesServiceStatisticsResponse -> Maybe Bool
containsOldGroupVersions} -> Maybe Bool
containsOldGroupVersions) (\s :: GetTimeSeriesServiceStatisticsResponse
s@GetTimeSeriesServiceStatisticsResponse' {} Maybe Bool
a -> GetTimeSeriesServiceStatisticsResponse
s {$sel:containsOldGroupVersions:GetTimeSeriesServiceStatisticsResponse' :: Maybe Bool
containsOldGroupVersions = Maybe Bool
a} :: GetTimeSeriesServiceStatisticsResponse)

-- | Pagination token.
getTimeSeriesServiceStatisticsResponse_nextToken :: Lens.Lens' GetTimeSeriesServiceStatisticsResponse (Prelude.Maybe Prelude.Text)
getTimeSeriesServiceStatisticsResponse_nextToken :: Lens' GetTimeSeriesServiceStatisticsResponse (Maybe Text)
getTimeSeriesServiceStatisticsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatisticsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetTimeSeriesServiceStatisticsResponse' :: GetTimeSeriesServiceStatisticsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetTimeSeriesServiceStatisticsResponse
s@GetTimeSeriesServiceStatisticsResponse' {} Maybe Text
a -> GetTimeSeriesServiceStatisticsResponse
s {$sel:nextToken:GetTimeSeriesServiceStatisticsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: GetTimeSeriesServiceStatisticsResponse)

-- | The collection of statistics.
getTimeSeriesServiceStatisticsResponse_timeSeriesServiceStatistics :: Lens.Lens' GetTimeSeriesServiceStatisticsResponse (Prelude.Maybe [TimeSeriesServiceStatistics])
getTimeSeriesServiceStatisticsResponse_timeSeriesServiceStatistics :: Lens'
  GetTimeSeriesServiceStatisticsResponse
  (Maybe [TimeSeriesServiceStatistics])
getTimeSeriesServiceStatisticsResponse_timeSeriesServiceStatistics = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatisticsResponse' {Maybe [TimeSeriesServiceStatistics]
timeSeriesServiceStatistics :: Maybe [TimeSeriesServiceStatistics]
$sel:timeSeriesServiceStatistics:GetTimeSeriesServiceStatisticsResponse' :: GetTimeSeriesServiceStatisticsResponse
-> Maybe [TimeSeriesServiceStatistics]
timeSeriesServiceStatistics} -> Maybe [TimeSeriesServiceStatistics]
timeSeriesServiceStatistics) (\s :: GetTimeSeriesServiceStatisticsResponse
s@GetTimeSeriesServiceStatisticsResponse' {} Maybe [TimeSeriesServiceStatistics]
a -> GetTimeSeriesServiceStatisticsResponse
s {$sel:timeSeriesServiceStatistics:GetTimeSeriesServiceStatisticsResponse' :: Maybe [TimeSeriesServiceStatistics]
timeSeriesServiceStatistics = Maybe [TimeSeriesServiceStatistics]
a} :: GetTimeSeriesServiceStatisticsResponse) 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 response's http status code.
getTimeSeriesServiceStatisticsResponse_httpStatus :: Lens.Lens' GetTimeSeriesServiceStatisticsResponse Prelude.Int
getTimeSeriesServiceStatisticsResponse_httpStatus :: Lens' GetTimeSeriesServiceStatisticsResponse Int
getTimeSeriesServiceStatisticsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTimeSeriesServiceStatisticsResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetTimeSeriesServiceStatisticsResponse' :: GetTimeSeriesServiceStatisticsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetTimeSeriesServiceStatisticsResponse
s@GetTimeSeriesServiceStatisticsResponse' {} Int
a -> GetTimeSeriesServiceStatisticsResponse
s {$sel:httpStatus:GetTimeSeriesServiceStatisticsResponse' :: Int
httpStatus = Int
a} :: GetTimeSeriesServiceStatisticsResponse)

instance
  Prelude.NFData
    GetTimeSeriesServiceStatisticsResponse
  where
  rnf :: GetTimeSeriesServiceStatisticsResponse -> ()
rnf GetTimeSeriesServiceStatisticsResponse' {Int
Maybe Bool
Maybe [TimeSeriesServiceStatistics]
Maybe Text
httpStatus :: Int
timeSeriesServiceStatistics :: Maybe [TimeSeriesServiceStatistics]
nextToken :: Maybe Text
containsOldGroupVersions :: Maybe Bool
$sel:httpStatus:GetTimeSeriesServiceStatisticsResponse' :: GetTimeSeriesServiceStatisticsResponse -> Int
$sel:timeSeriesServiceStatistics:GetTimeSeriesServiceStatisticsResponse' :: GetTimeSeriesServiceStatisticsResponse
-> Maybe [TimeSeriesServiceStatistics]
$sel:nextToken:GetTimeSeriesServiceStatisticsResponse' :: GetTimeSeriesServiceStatisticsResponse -> Maybe Text
$sel:containsOldGroupVersions:GetTimeSeriesServiceStatisticsResponse' :: GetTimeSeriesServiceStatisticsResponse -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
containsOldGroupVersions
      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 [TimeSeriesServiceStatistics]
timeSeriesServiceStatistics
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus