{-# 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.GetTraceSummaries
-- 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 IDs and annotations for traces available for a specified time
-- frame using an optional filter. To get the full traces, pass the trace
-- IDs to @BatchGetTraces@.
--
-- A filter expression can target traced requests that hit specific service
-- nodes or edges, have errors, or come from a known user. For example, the
-- following filter expression targets traces that pass through
-- @api.example.com@:
--
-- @service(\"api.example.com\")@
--
-- This filter expression finds traces that have an annotation named
-- @account@ with the value @12345@:
--
-- @annotation.account = \"12345\"@
--
-- For a full list of indexed fields and keywords that you can use in
-- filter expressions, see
-- <https://docs.aws.amazon.com/xray/latest/devguide/xray-console-filters.html Using Filter Expressions>
-- in the /Amazon Web Services X-Ray Developer Guide/.
--
-- This operation returns paginated results.
module Amazonka.XRay.GetTraceSummaries
  ( -- * Creating a Request
    GetTraceSummaries (..),
    newGetTraceSummaries,

    -- * Request Lenses
    getTraceSummaries_filterExpression,
    getTraceSummaries_nextToken,
    getTraceSummaries_sampling,
    getTraceSummaries_samplingStrategy,
    getTraceSummaries_timeRangeType,
    getTraceSummaries_startTime,
    getTraceSummaries_endTime,

    -- * Destructuring the Response
    GetTraceSummariesResponse (..),
    newGetTraceSummariesResponse,

    -- * Response Lenses
    getTraceSummariesResponse_approximateTime,
    getTraceSummariesResponse_nextToken,
    getTraceSummariesResponse_traceSummaries,
    getTraceSummariesResponse_tracesProcessedCount,
    getTraceSummariesResponse_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:/ 'newGetTraceSummaries' smart constructor.
data GetTraceSummaries = GetTraceSummaries'
  { -- | Specify a filter expression to retrieve trace summaries for services or
    -- requests that meet certain requirements.
    GetTraceSummaries -> Maybe Text
filterExpression :: Prelude.Maybe Prelude.Text,
    -- | Specify the pagination token returned by a previous request to retrieve
    -- the next page of results.
    GetTraceSummaries -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Set to @true@ to get summaries for only a subset of available traces.
    GetTraceSummaries -> Maybe Bool
sampling :: Prelude.Maybe Prelude.Bool,
    -- | A parameter to indicate whether to enable sampling on trace summaries.
    -- Input parameters are Name and Value.
    GetTraceSummaries -> Maybe SamplingStrategy
samplingStrategy :: Prelude.Maybe SamplingStrategy,
    -- | A parameter to indicate whether to query trace summaries by TraceId or
    -- Event time.
    GetTraceSummaries -> Maybe TimeRangeType
timeRangeType :: Prelude.Maybe TimeRangeType,
    -- | The start of the time frame for which to retrieve traces.
    GetTraceSummaries -> POSIX
startTime :: Data.POSIX,
    -- | The end of the time frame for which to retrieve traces.
    GetTraceSummaries -> POSIX
endTime :: Data.POSIX
  }
  deriving (GetTraceSummaries -> GetTraceSummaries -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetTraceSummaries -> GetTraceSummaries -> Bool
$c/= :: GetTraceSummaries -> GetTraceSummaries -> Bool
== :: GetTraceSummaries -> GetTraceSummaries -> Bool
$c== :: GetTraceSummaries -> GetTraceSummaries -> Bool
Prelude.Eq, ReadPrec [GetTraceSummaries]
ReadPrec GetTraceSummaries
Int -> ReadS GetTraceSummaries
ReadS [GetTraceSummaries]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetTraceSummaries]
$creadListPrec :: ReadPrec [GetTraceSummaries]
readPrec :: ReadPrec GetTraceSummaries
$creadPrec :: ReadPrec GetTraceSummaries
readList :: ReadS [GetTraceSummaries]
$creadList :: ReadS [GetTraceSummaries]
readsPrec :: Int -> ReadS GetTraceSummaries
$creadsPrec :: Int -> ReadS GetTraceSummaries
Prelude.Read, Int -> GetTraceSummaries -> ShowS
[GetTraceSummaries] -> ShowS
GetTraceSummaries -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetTraceSummaries] -> ShowS
$cshowList :: [GetTraceSummaries] -> ShowS
show :: GetTraceSummaries -> String
$cshow :: GetTraceSummaries -> String
showsPrec :: Int -> GetTraceSummaries -> ShowS
$cshowsPrec :: Int -> GetTraceSummaries -> ShowS
Prelude.Show, forall x. Rep GetTraceSummaries x -> GetTraceSummaries
forall x. GetTraceSummaries -> Rep GetTraceSummaries x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetTraceSummaries x -> GetTraceSummaries
$cfrom :: forall x. GetTraceSummaries -> Rep GetTraceSummaries x
Prelude.Generic)

-- |
-- Create a value of 'GetTraceSummaries' 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:
--
-- 'filterExpression', 'getTraceSummaries_filterExpression' - Specify a filter expression to retrieve trace summaries for services or
-- requests that meet certain requirements.
--
-- 'nextToken', 'getTraceSummaries_nextToken' - Specify the pagination token returned by a previous request to retrieve
-- the next page of results.
--
-- 'sampling', 'getTraceSummaries_sampling' - Set to @true@ to get summaries for only a subset of available traces.
--
-- 'samplingStrategy', 'getTraceSummaries_samplingStrategy' - A parameter to indicate whether to enable sampling on trace summaries.
-- Input parameters are Name and Value.
--
-- 'timeRangeType', 'getTraceSummaries_timeRangeType' - A parameter to indicate whether to query trace summaries by TraceId or
-- Event time.
--
-- 'startTime', 'getTraceSummaries_startTime' - The start of the time frame for which to retrieve traces.
--
-- 'endTime', 'getTraceSummaries_endTime' - The end of the time frame for which to retrieve traces.
newGetTraceSummaries ::
  -- | 'startTime'
  Prelude.UTCTime ->
  -- | 'endTime'
  Prelude.UTCTime ->
  GetTraceSummaries
newGetTraceSummaries :: UTCTime -> UTCTime -> GetTraceSummaries
newGetTraceSummaries UTCTime
pStartTime_ UTCTime
pEndTime_ =
  GetTraceSummaries'
    { $sel:filterExpression:GetTraceSummaries' :: Maybe Text
filterExpression =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:GetTraceSummaries' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:sampling:GetTraceSummaries' :: Maybe Bool
sampling = forall a. Maybe a
Prelude.Nothing,
      $sel:samplingStrategy:GetTraceSummaries' :: Maybe SamplingStrategy
samplingStrategy = forall a. Maybe a
Prelude.Nothing,
      $sel:timeRangeType:GetTraceSummaries' :: Maybe TimeRangeType
timeRangeType = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:GetTraceSummaries' :: POSIX
startTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pStartTime_,
      $sel:endTime:GetTraceSummaries' :: POSIX
endTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pEndTime_
    }

-- | Specify a filter expression to retrieve trace summaries for services or
-- requests that meet certain requirements.
getTraceSummaries_filterExpression :: Lens.Lens' GetTraceSummaries (Prelude.Maybe Prelude.Text)
getTraceSummaries_filterExpression :: Lens' GetTraceSummaries (Maybe Text)
getTraceSummaries_filterExpression = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummaries' {Maybe Text
filterExpression :: Maybe Text
$sel:filterExpression:GetTraceSummaries' :: GetTraceSummaries -> Maybe Text
filterExpression} -> Maybe Text
filterExpression) (\s :: GetTraceSummaries
s@GetTraceSummaries' {} Maybe Text
a -> GetTraceSummaries
s {$sel:filterExpression:GetTraceSummaries' :: Maybe Text
filterExpression = Maybe Text
a} :: GetTraceSummaries)

-- | Specify the pagination token returned by a previous request to retrieve
-- the next page of results.
getTraceSummaries_nextToken :: Lens.Lens' GetTraceSummaries (Prelude.Maybe Prelude.Text)
getTraceSummaries_nextToken :: Lens' GetTraceSummaries (Maybe Text)
getTraceSummaries_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummaries' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetTraceSummaries' :: GetTraceSummaries -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetTraceSummaries
s@GetTraceSummaries' {} Maybe Text
a -> GetTraceSummaries
s {$sel:nextToken:GetTraceSummaries' :: Maybe Text
nextToken = Maybe Text
a} :: GetTraceSummaries)

-- | Set to @true@ to get summaries for only a subset of available traces.
getTraceSummaries_sampling :: Lens.Lens' GetTraceSummaries (Prelude.Maybe Prelude.Bool)
getTraceSummaries_sampling :: Lens' GetTraceSummaries (Maybe Bool)
getTraceSummaries_sampling = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummaries' {Maybe Bool
sampling :: Maybe Bool
$sel:sampling:GetTraceSummaries' :: GetTraceSummaries -> Maybe Bool
sampling} -> Maybe Bool
sampling) (\s :: GetTraceSummaries
s@GetTraceSummaries' {} Maybe Bool
a -> GetTraceSummaries
s {$sel:sampling:GetTraceSummaries' :: Maybe Bool
sampling = Maybe Bool
a} :: GetTraceSummaries)

-- | A parameter to indicate whether to enable sampling on trace summaries.
-- Input parameters are Name and Value.
getTraceSummaries_samplingStrategy :: Lens.Lens' GetTraceSummaries (Prelude.Maybe SamplingStrategy)
getTraceSummaries_samplingStrategy :: Lens' GetTraceSummaries (Maybe SamplingStrategy)
getTraceSummaries_samplingStrategy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummaries' {Maybe SamplingStrategy
samplingStrategy :: Maybe SamplingStrategy
$sel:samplingStrategy:GetTraceSummaries' :: GetTraceSummaries -> Maybe SamplingStrategy
samplingStrategy} -> Maybe SamplingStrategy
samplingStrategy) (\s :: GetTraceSummaries
s@GetTraceSummaries' {} Maybe SamplingStrategy
a -> GetTraceSummaries
s {$sel:samplingStrategy:GetTraceSummaries' :: Maybe SamplingStrategy
samplingStrategy = Maybe SamplingStrategy
a} :: GetTraceSummaries)

-- | A parameter to indicate whether to query trace summaries by TraceId or
-- Event time.
getTraceSummaries_timeRangeType :: Lens.Lens' GetTraceSummaries (Prelude.Maybe TimeRangeType)
getTraceSummaries_timeRangeType :: Lens' GetTraceSummaries (Maybe TimeRangeType)
getTraceSummaries_timeRangeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummaries' {Maybe TimeRangeType
timeRangeType :: Maybe TimeRangeType
$sel:timeRangeType:GetTraceSummaries' :: GetTraceSummaries -> Maybe TimeRangeType
timeRangeType} -> Maybe TimeRangeType
timeRangeType) (\s :: GetTraceSummaries
s@GetTraceSummaries' {} Maybe TimeRangeType
a -> GetTraceSummaries
s {$sel:timeRangeType:GetTraceSummaries' :: Maybe TimeRangeType
timeRangeType = Maybe TimeRangeType
a} :: GetTraceSummaries)

-- | The start of the time frame for which to retrieve traces.
getTraceSummaries_startTime :: Lens.Lens' GetTraceSummaries Prelude.UTCTime
getTraceSummaries_startTime :: Lens' GetTraceSummaries UTCTime
getTraceSummaries_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummaries' {POSIX
startTime :: POSIX
$sel:startTime:GetTraceSummaries' :: GetTraceSummaries -> POSIX
startTime} -> POSIX
startTime) (\s :: GetTraceSummaries
s@GetTraceSummaries' {} POSIX
a -> GetTraceSummaries
s {$sel:startTime:GetTraceSummaries' :: POSIX
startTime = POSIX
a} :: GetTraceSummaries) 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 retrieve traces.
getTraceSummaries_endTime :: Lens.Lens' GetTraceSummaries Prelude.UTCTime
getTraceSummaries_endTime :: Lens' GetTraceSummaries UTCTime
getTraceSummaries_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummaries' {POSIX
endTime :: POSIX
$sel:endTime:GetTraceSummaries' :: GetTraceSummaries -> POSIX
endTime} -> POSIX
endTime) (\s :: GetTraceSummaries
s@GetTraceSummaries' {} POSIX
a -> GetTraceSummaries
s {$sel:endTime:GetTraceSummaries' :: POSIX
endTime = POSIX
a} :: GetTraceSummaries) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Core.AWSPager GetTraceSummaries where
  page :: GetTraceSummaries
-> AWSResponse GetTraceSummaries -> Maybe GetTraceSummaries
page GetTraceSummaries
rq AWSResponse GetTraceSummaries
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetTraceSummaries
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetTraceSummariesResponse (Maybe Text)
getTraceSummariesResponse_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 GetTraceSummaries
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetTraceSummariesResponse (Maybe [TraceSummary])
getTraceSummariesResponse_traceSummaries
            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.$ GetTraceSummaries
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' GetTraceSummaries (Maybe Text)
getTraceSummaries_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse GetTraceSummaries
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetTraceSummariesResponse (Maybe Text)
getTraceSummariesResponse_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 GetTraceSummaries where
  type
    AWSResponse GetTraceSummaries =
      GetTraceSummariesResponse
  request :: (Service -> Service)
-> GetTraceSummaries -> Request GetTraceSummaries
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 GetTraceSummaries
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetTraceSummaries)))
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 POSIX
-> Maybe Text
-> Maybe [TraceSummary]
-> Maybe Integer
-> Int
-> GetTraceSummariesResponse
GetTraceSummariesResponse'
            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
"ApproximateTime")
            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
"TraceSummaries" 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.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"TracesProcessedCount")
            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 GetTraceSummaries where
  hashWithSalt :: Int -> GetTraceSummaries -> Int
hashWithSalt Int
_salt GetTraceSummaries' {Maybe Bool
Maybe Text
Maybe SamplingStrategy
Maybe TimeRangeType
POSIX
endTime :: POSIX
startTime :: POSIX
timeRangeType :: Maybe TimeRangeType
samplingStrategy :: Maybe SamplingStrategy
sampling :: Maybe Bool
nextToken :: Maybe Text
filterExpression :: Maybe Text
$sel:endTime:GetTraceSummaries' :: GetTraceSummaries -> POSIX
$sel:startTime:GetTraceSummaries' :: GetTraceSummaries -> POSIX
$sel:timeRangeType:GetTraceSummaries' :: GetTraceSummaries -> Maybe TimeRangeType
$sel:samplingStrategy:GetTraceSummaries' :: GetTraceSummaries -> Maybe SamplingStrategy
$sel:sampling:GetTraceSummaries' :: GetTraceSummaries -> Maybe Bool
$sel:nextToken:GetTraceSummaries' :: GetTraceSummaries -> Maybe Text
$sel:filterExpression:GetTraceSummaries' :: GetTraceSummaries -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
filterExpression
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
sampling
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SamplingStrategy
samplingStrategy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimeRangeType
timeRangeType
      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 GetTraceSummaries where
  rnf :: GetTraceSummaries -> ()
rnf GetTraceSummaries' {Maybe Bool
Maybe Text
Maybe SamplingStrategy
Maybe TimeRangeType
POSIX
endTime :: POSIX
startTime :: POSIX
timeRangeType :: Maybe TimeRangeType
samplingStrategy :: Maybe SamplingStrategy
sampling :: Maybe Bool
nextToken :: Maybe Text
filterExpression :: Maybe Text
$sel:endTime:GetTraceSummaries' :: GetTraceSummaries -> POSIX
$sel:startTime:GetTraceSummaries' :: GetTraceSummaries -> POSIX
$sel:timeRangeType:GetTraceSummaries' :: GetTraceSummaries -> Maybe TimeRangeType
$sel:samplingStrategy:GetTraceSummaries' :: GetTraceSummaries -> Maybe SamplingStrategy
$sel:sampling:GetTraceSummaries' :: GetTraceSummaries -> Maybe Bool
$sel:nextToken:GetTraceSummaries' :: GetTraceSummaries -> Maybe Text
$sel:filterExpression:GetTraceSummaries' :: GetTraceSummaries -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
filterExpression
      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 Bool
sampling
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SamplingStrategy
samplingStrategy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimeRangeType
timeRangeType
      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 GetTraceSummaries where
  toHeaders :: GetTraceSummaries -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON GetTraceSummaries where
  toJSON :: GetTraceSummaries -> Value
toJSON GetTraceSummaries' {Maybe Bool
Maybe Text
Maybe SamplingStrategy
Maybe TimeRangeType
POSIX
endTime :: POSIX
startTime :: POSIX
timeRangeType :: Maybe TimeRangeType
samplingStrategy :: Maybe SamplingStrategy
sampling :: Maybe Bool
nextToken :: Maybe Text
filterExpression :: Maybe Text
$sel:endTime:GetTraceSummaries' :: GetTraceSummaries -> POSIX
$sel:startTime:GetTraceSummaries' :: GetTraceSummaries -> POSIX
$sel:timeRangeType:GetTraceSummaries' :: GetTraceSummaries -> Maybe TimeRangeType
$sel:samplingStrategy:GetTraceSummaries' :: GetTraceSummaries -> Maybe SamplingStrategy
$sel:sampling:GetTraceSummaries' :: GetTraceSummaries -> Maybe Bool
$sel:nextToken:GetTraceSummaries' :: GetTraceSummaries -> Maybe Text
$sel:filterExpression:GetTraceSummaries' :: GetTraceSummaries -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"FilterExpression" 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
filterExpression,
            (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
"Sampling" 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
sampling,
            (Key
"SamplingStrategy" 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 SamplingStrategy
samplingStrategy,
            (Key
"TimeRangeType" 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 TimeRangeType
timeRangeType,
            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 GetTraceSummaries where
  toPath :: GetTraceSummaries -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/TraceSummaries"

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

-- | /See:/ 'newGetTraceSummariesResponse' smart constructor.
data GetTraceSummariesResponse = GetTraceSummariesResponse'
  { -- | The start time of this page of results.
    GetTraceSummariesResponse -> Maybe POSIX
approximateTime :: Prelude.Maybe Data.POSIX,
    -- | If the requested time frame contained more than one page of results, you
    -- can use this token to retrieve the next page. The first page contains
    -- the most recent results, closest to the end of the time frame.
    GetTraceSummariesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | Trace IDs and annotations for traces that were found in the specified
    -- time frame.
    GetTraceSummariesResponse -> Maybe [TraceSummary]
traceSummaries :: Prelude.Maybe [TraceSummary],
    -- | The total number of traces processed, including traces that did not
    -- match the specified filter expression.
    GetTraceSummariesResponse -> Maybe Integer
tracesProcessedCount :: Prelude.Maybe Prelude.Integer,
    -- | The response's http status code.
    GetTraceSummariesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetTraceSummariesResponse -> GetTraceSummariesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetTraceSummariesResponse -> GetTraceSummariesResponse -> Bool
$c/= :: GetTraceSummariesResponse -> GetTraceSummariesResponse -> Bool
== :: GetTraceSummariesResponse -> GetTraceSummariesResponse -> Bool
$c== :: GetTraceSummariesResponse -> GetTraceSummariesResponse -> Bool
Prelude.Eq, ReadPrec [GetTraceSummariesResponse]
ReadPrec GetTraceSummariesResponse
Int -> ReadS GetTraceSummariesResponse
ReadS [GetTraceSummariesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetTraceSummariesResponse]
$creadListPrec :: ReadPrec [GetTraceSummariesResponse]
readPrec :: ReadPrec GetTraceSummariesResponse
$creadPrec :: ReadPrec GetTraceSummariesResponse
readList :: ReadS [GetTraceSummariesResponse]
$creadList :: ReadS [GetTraceSummariesResponse]
readsPrec :: Int -> ReadS GetTraceSummariesResponse
$creadsPrec :: Int -> ReadS GetTraceSummariesResponse
Prelude.Read, Int -> GetTraceSummariesResponse -> ShowS
[GetTraceSummariesResponse] -> ShowS
GetTraceSummariesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetTraceSummariesResponse] -> ShowS
$cshowList :: [GetTraceSummariesResponse] -> ShowS
show :: GetTraceSummariesResponse -> String
$cshow :: GetTraceSummariesResponse -> String
showsPrec :: Int -> GetTraceSummariesResponse -> ShowS
$cshowsPrec :: Int -> GetTraceSummariesResponse -> ShowS
Prelude.Show, forall x.
Rep GetTraceSummariesResponse x -> GetTraceSummariesResponse
forall x.
GetTraceSummariesResponse -> Rep GetTraceSummariesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetTraceSummariesResponse x -> GetTraceSummariesResponse
$cfrom :: forall x.
GetTraceSummariesResponse -> Rep GetTraceSummariesResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetTraceSummariesResponse' 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:
--
-- 'approximateTime', 'getTraceSummariesResponse_approximateTime' - The start time of this page of results.
--
-- 'nextToken', 'getTraceSummariesResponse_nextToken' - If the requested time frame contained more than one page of results, you
-- can use this token to retrieve the next page. The first page contains
-- the most recent results, closest to the end of the time frame.
--
-- 'traceSummaries', 'getTraceSummariesResponse_traceSummaries' - Trace IDs and annotations for traces that were found in the specified
-- time frame.
--
-- 'tracesProcessedCount', 'getTraceSummariesResponse_tracesProcessedCount' - The total number of traces processed, including traces that did not
-- match the specified filter expression.
--
-- 'httpStatus', 'getTraceSummariesResponse_httpStatus' - The response's http status code.
newGetTraceSummariesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetTraceSummariesResponse
newGetTraceSummariesResponse :: Int -> GetTraceSummariesResponse
newGetTraceSummariesResponse Int
pHttpStatus_ =
  GetTraceSummariesResponse'
    { $sel:approximateTime:GetTraceSummariesResponse' :: Maybe POSIX
approximateTime =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:GetTraceSummariesResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:traceSummaries:GetTraceSummariesResponse' :: Maybe [TraceSummary]
traceSummaries = forall a. Maybe a
Prelude.Nothing,
      $sel:tracesProcessedCount:GetTraceSummariesResponse' :: Maybe Integer
tracesProcessedCount = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetTraceSummariesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The start time of this page of results.
getTraceSummariesResponse_approximateTime :: Lens.Lens' GetTraceSummariesResponse (Prelude.Maybe Prelude.UTCTime)
getTraceSummariesResponse_approximateTime :: Lens' GetTraceSummariesResponse (Maybe UTCTime)
getTraceSummariesResponse_approximateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummariesResponse' {Maybe POSIX
approximateTime :: Maybe POSIX
$sel:approximateTime:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Maybe POSIX
approximateTime} -> Maybe POSIX
approximateTime) (\s :: GetTraceSummariesResponse
s@GetTraceSummariesResponse' {} Maybe POSIX
a -> GetTraceSummariesResponse
s {$sel:approximateTime:GetTraceSummariesResponse' :: Maybe POSIX
approximateTime = Maybe POSIX
a} :: GetTraceSummariesResponse) 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

-- | If the requested time frame contained more than one page of results, you
-- can use this token to retrieve the next page. The first page contains
-- the most recent results, closest to the end of the time frame.
getTraceSummariesResponse_nextToken :: Lens.Lens' GetTraceSummariesResponse (Prelude.Maybe Prelude.Text)
getTraceSummariesResponse_nextToken :: Lens' GetTraceSummariesResponse (Maybe Text)
getTraceSummariesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummariesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetTraceSummariesResponse
s@GetTraceSummariesResponse' {} Maybe Text
a -> GetTraceSummariesResponse
s {$sel:nextToken:GetTraceSummariesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: GetTraceSummariesResponse)

-- | Trace IDs and annotations for traces that were found in the specified
-- time frame.
getTraceSummariesResponse_traceSummaries :: Lens.Lens' GetTraceSummariesResponse (Prelude.Maybe [TraceSummary])
getTraceSummariesResponse_traceSummaries :: Lens' GetTraceSummariesResponse (Maybe [TraceSummary])
getTraceSummariesResponse_traceSummaries = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummariesResponse' {Maybe [TraceSummary]
traceSummaries :: Maybe [TraceSummary]
$sel:traceSummaries:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Maybe [TraceSummary]
traceSummaries} -> Maybe [TraceSummary]
traceSummaries) (\s :: GetTraceSummariesResponse
s@GetTraceSummariesResponse' {} Maybe [TraceSummary]
a -> GetTraceSummariesResponse
s {$sel:traceSummaries:GetTraceSummariesResponse' :: Maybe [TraceSummary]
traceSummaries = Maybe [TraceSummary]
a} :: GetTraceSummariesResponse) 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 total number of traces processed, including traces that did not
-- match the specified filter expression.
getTraceSummariesResponse_tracesProcessedCount :: Lens.Lens' GetTraceSummariesResponse (Prelude.Maybe Prelude.Integer)
getTraceSummariesResponse_tracesProcessedCount :: Lens' GetTraceSummariesResponse (Maybe Integer)
getTraceSummariesResponse_tracesProcessedCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTraceSummariesResponse' {Maybe Integer
tracesProcessedCount :: Maybe Integer
$sel:tracesProcessedCount:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Maybe Integer
tracesProcessedCount} -> Maybe Integer
tracesProcessedCount) (\s :: GetTraceSummariesResponse
s@GetTraceSummariesResponse' {} Maybe Integer
a -> GetTraceSummariesResponse
s {$sel:tracesProcessedCount:GetTraceSummariesResponse' :: Maybe Integer
tracesProcessedCount = Maybe Integer
a} :: GetTraceSummariesResponse)

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

instance Prelude.NFData GetTraceSummariesResponse where
  rnf :: GetTraceSummariesResponse -> ()
rnf GetTraceSummariesResponse' {Int
Maybe Integer
Maybe [TraceSummary]
Maybe Text
Maybe POSIX
httpStatus :: Int
tracesProcessedCount :: Maybe Integer
traceSummaries :: Maybe [TraceSummary]
nextToken :: Maybe Text
approximateTime :: Maybe POSIX
$sel:httpStatus:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Int
$sel:tracesProcessedCount:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Maybe Integer
$sel:traceSummaries:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Maybe [TraceSummary]
$sel:nextToken:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Maybe Text
$sel:approximateTime:GetTraceSummariesResponse' :: GetTraceSummariesResponse -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
approximateTime
      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 [TraceSummary]
traceSummaries
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
tracesProcessedCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus