{-# 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.CloudWatch.GetMetricStream
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns information about the metric stream that you specify.
module Amazonka.CloudWatch.GetMetricStream
  ( -- * Creating a Request
    GetMetricStream (..),
    newGetMetricStream,

    -- * Request Lenses
    getMetricStream_name,

    -- * Destructuring the Response
    GetMetricStreamResponse (..),
    newGetMetricStreamResponse,

    -- * Response Lenses
    getMetricStreamResponse_arn,
    getMetricStreamResponse_creationDate,
    getMetricStreamResponse_excludeFilters,
    getMetricStreamResponse_firehoseArn,
    getMetricStreamResponse_includeFilters,
    getMetricStreamResponse_lastUpdateDate,
    getMetricStreamResponse_name,
    getMetricStreamResponse_outputFormat,
    getMetricStreamResponse_roleArn,
    getMetricStreamResponse_state,
    getMetricStreamResponse_statisticsConfigurations,
    getMetricStreamResponse_httpStatus,
  )
where

import Amazonka.CloudWatch.Types
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

-- | /See:/ 'newGetMetricStream' smart constructor.
data GetMetricStream = GetMetricStream'
  { -- | The name of the metric stream to retrieve information about.
    GetMetricStream -> Text
name :: Prelude.Text
  }
  deriving (GetMetricStream -> GetMetricStream -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetMetricStream -> GetMetricStream -> Bool
$c/= :: GetMetricStream -> GetMetricStream -> Bool
== :: GetMetricStream -> GetMetricStream -> Bool
$c== :: GetMetricStream -> GetMetricStream -> Bool
Prelude.Eq, ReadPrec [GetMetricStream]
ReadPrec GetMetricStream
Int -> ReadS GetMetricStream
ReadS [GetMetricStream]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetMetricStream]
$creadListPrec :: ReadPrec [GetMetricStream]
readPrec :: ReadPrec GetMetricStream
$creadPrec :: ReadPrec GetMetricStream
readList :: ReadS [GetMetricStream]
$creadList :: ReadS [GetMetricStream]
readsPrec :: Int -> ReadS GetMetricStream
$creadsPrec :: Int -> ReadS GetMetricStream
Prelude.Read, Int -> GetMetricStream -> ShowS
[GetMetricStream] -> ShowS
GetMetricStream -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetMetricStream] -> ShowS
$cshowList :: [GetMetricStream] -> ShowS
show :: GetMetricStream -> String
$cshow :: GetMetricStream -> String
showsPrec :: Int -> GetMetricStream -> ShowS
$cshowsPrec :: Int -> GetMetricStream -> ShowS
Prelude.Show, forall x. Rep GetMetricStream x -> GetMetricStream
forall x. GetMetricStream -> Rep GetMetricStream x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetMetricStream x -> GetMetricStream
$cfrom :: forall x. GetMetricStream -> Rep GetMetricStream x
Prelude.Generic)

-- |
-- Create a value of 'GetMetricStream' 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:
--
-- 'name', 'getMetricStream_name' - The name of the metric stream to retrieve information about.
newGetMetricStream ::
  -- | 'name'
  Prelude.Text ->
  GetMetricStream
newGetMetricStream :: Text -> GetMetricStream
newGetMetricStream Text
pName_ =
  GetMetricStream' {$sel:name:GetMetricStream' :: Text
name = Text
pName_}

-- | The name of the metric stream to retrieve information about.
getMetricStream_name :: Lens.Lens' GetMetricStream Prelude.Text
getMetricStream_name :: Lens' GetMetricStream Text
getMetricStream_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStream' {Text
name :: Text
$sel:name:GetMetricStream' :: GetMetricStream -> Text
name} -> Text
name) (\s :: GetMetricStream
s@GetMetricStream' {} Text
a -> GetMetricStream
s {$sel:name:GetMetricStream' :: Text
name = Text
a} :: GetMetricStream)

instance Core.AWSRequest GetMetricStream where
  type
    AWSResponse GetMetricStream =
      GetMetricStreamResponse
  request :: (Service -> Service) -> GetMetricStream -> Request GetMetricStream
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetMetricStream
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetMetricStream)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"GetMetricStreamResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe ISO8601
-> Maybe [MetricStreamFilter]
-> Maybe Text
-> Maybe [MetricStreamFilter]
-> Maybe ISO8601
-> Maybe Text
-> Maybe MetricStreamOutputFormat
-> Maybe Text
-> Maybe Text
-> Maybe [MetricStreamStatisticsConfiguration]
-> Int
-> GetMetricStreamResponse
GetMetricStreamResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"CreationDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ExcludeFilters"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"FirehoseArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"IncludeFilters"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"LastUpdateDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"OutputFormat")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RoleArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"State")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"StatisticsConfigurations"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                        )
            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 GetMetricStream where
  hashWithSalt :: Int -> GetMetricStream -> Int
hashWithSalt Int
_salt GetMetricStream' {Text
name :: Text
$sel:name:GetMetricStream' :: GetMetricStream -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData GetMetricStream where
  rnf :: GetMetricStream -> ()
rnf GetMetricStream' {Text
name :: Text
$sel:name:GetMetricStream' :: GetMetricStream -> Text
..} = forall a. NFData a => a -> ()
Prelude.rnf Text
name

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

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

instance Data.ToQuery GetMetricStream where
  toQuery :: GetMetricStream -> QueryString
toQuery GetMetricStream' {Text
name :: Text
$sel:name:GetMetricStream' :: GetMetricStream -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"GetMetricStream" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2010-08-01" :: Prelude.ByteString),
        ByteString
"Name" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
name
      ]

-- | /See:/ 'newGetMetricStreamResponse' smart constructor.
data GetMetricStreamResponse = GetMetricStreamResponse'
  { -- | The ARN of the metric stream.
    GetMetricStreamResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The date that the metric stream was created.
    GetMetricStreamResponse -> Maybe ISO8601
creationDate :: Prelude.Maybe Data.ISO8601,
    -- | If this array of metric namespaces is present, then these namespaces are
    -- the only metric namespaces that are not streamed by this metric stream.
    -- In this case, all other metric namespaces in the account are streamed by
    -- this metric stream.
    GetMetricStreamResponse -> Maybe [MetricStreamFilter]
excludeFilters :: Prelude.Maybe [MetricStreamFilter],
    -- | The ARN of the Amazon Kinesis Data Firehose delivery stream that is used
    -- by this metric stream.
    GetMetricStreamResponse -> Maybe Text
firehoseArn :: Prelude.Maybe Prelude.Text,
    -- | If this array of metric namespaces is present, then these namespaces are
    -- the only metric namespaces that are streamed by this metric stream.
    GetMetricStreamResponse -> Maybe [MetricStreamFilter]
includeFilters :: Prelude.Maybe [MetricStreamFilter],
    -- | The date of the most recent update to the metric stream\'s
    -- configuration.
    GetMetricStreamResponse -> Maybe ISO8601
lastUpdateDate :: Prelude.Maybe Data.ISO8601,
    -- | The name of the metric stream.
    GetMetricStreamResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The output format for the stream. Valid values are @json@ and
    -- @opentelemetry0.7@. For more information about metric stream output
    -- formats, see
    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html Metric streams output formats>.
    GetMetricStreamResponse -> Maybe MetricStreamOutputFormat
outputFormat :: Prelude.Maybe MetricStreamOutputFormat,
    -- | The ARN of the IAM role that is used by this metric stream.
    GetMetricStreamResponse -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The state of the metric stream. The possible values are @running@ and
    -- @stopped@.
    GetMetricStreamResponse -> Maybe Text
state :: Prelude.Maybe Prelude.Text,
    -- | Each entry in this array displays information about one or more metrics
    -- that include additional statistics in the metric stream. For more
    -- information about the additional statistics, see
    -- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html CloudWatch statistics definitions>.
    GetMetricStreamResponse
-> Maybe [MetricStreamStatisticsConfiguration]
statisticsConfigurations :: Prelude.Maybe [MetricStreamStatisticsConfiguration],
    -- | The response's http status code.
    GetMetricStreamResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetMetricStreamResponse -> GetMetricStreamResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetMetricStreamResponse -> GetMetricStreamResponse -> Bool
$c/= :: GetMetricStreamResponse -> GetMetricStreamResponse -> Bool
== :: GetMetricStreamResponse -> GetMetricStreamResponse -> Bool
$c== :: GetMetricStreamResponse -> GetMetricStreamResponse -> Bool
Prelude.Eq, ReadPrec [GetMetricStreamResponse]
ReadPrec GetMetricStreamResponse
Int -> ReadS GetMetricStreamResponse
ReadS [GetMetricStreamResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetMetricStreamResponse]
$creadListPrec :: ReadPrec [GetMetricStreamResponse]
readPrec :: ReadPrec GetMetricStreamResponse
$creadPrec :: ReadPrec GetMetricStreamResponse
readList :: ReadS [GetMetricStreamResponse]
$creadList :: ReadS [GetMetricStreamResponse]
readsPrec :: Int -> ReadS GetMetricStreamResponse
$creadsPrec :: Int -> ReadS GetMetricStreamResponse
Prelude.Read, Int -> GetMetricStreamResponse -> ShowS
[GetMetricStreamResponse] -> ShowS
GetMetricStreamResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetMetricStreamResponse] -> ShowS
$cshowList :: [GetMetricStreamResponse] -> ShowS
show :: GetMetricStreamResponse -> String
$cshow :: GetMetricStreamResponse -> String
showsPrec :: Int -> GetMetricStreamResponse -> ShowS
$cshowsPrec :: Int -> GetMetricStreamResponse -> ShowS
Prelude.Show, forall x. Rep GetMetricStreamResponse x -> GetMetricStreamResponse
forall x. GetMetricStreamResponse -> Rep GetMetricStreamResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetMetricStreamResponse x -> GetMetricStreamResponse
$cfrom :: forall x. GetMetricStreamResponse -> Rep GetMetricStreamResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetMetricStreamResponse' 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:
--
-- 'arn', 'getMetricStreamResponse_arn' - The ARN of the metric stream.
--
-- 'creationDate', 'getMetricStreamResponse_creationDate' - The date that the metric stream was created.
--
-- 'excludeFilters', 'getMetricStreamResponse_excludeFilters' - If this array of metric namespaces is present, then these namespaces are
-- the only metric namespaces that are not streamed by this metric stream.
-- In this case, all other metric namespaces in the account are streamed by
-- this metric stream.
--
-- 'firehoseArn', 'getMetricStreamResponse_firehoseArn' - The ARN of the Amazon Kinesis Data Firehose delivery stream that is used
-- by this metric stream.
--
-- 'includeFilters', 'getMetricStreamResponse_includeFilters' - If this array of metric namespaces is present, then these namespaces are
-- the only metric namespaces that are streamed by this metric stream.
--
-- 'lastUpdateDate', 'getMetricStreamResponse_lastUpdateDate' - The date of the most recent update to the metric stream\'s
-- configuration.
--
-- 'name', 'getMetricStreamResponse_name' - The name of the metric stream.
--
-- 'outputFormat', 'getMetricStreamResponse_outputFormat' - The output format for the stream. Valid values are @json@ and
-- @opentelemetry0.7@. For more information about metric stream output
-- formats, see
-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html Metric streams output formats>.
--
-- 'roleArn', 'getMetricStreamResponse_roleArn' - The ARN of the IAM role that is used by this metric stream.
--
-- 'state', 'getMetricStreamResponse_state' - The state of the metric stream. The possible values are @running@ and
-- @stopped@.
--
-- 'statisticsConfigurations', 'getMetricStreamResponse_statisticsConfigurations' - Each entry in this array displays information about one or more metrics
-- that include additional statistics in the metric stream. For more
-- information about the additional statistics, see
-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html CloudWatch statistics definitions>.
--
-- 'httpStatus', 'getMetricStreamResponse_httpStatus' - The response's http status code.
newGetMetricStreamResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetMetricStreamResponse
newGetMetricStreamResponse :: Int -> GetMetricStreamResponse
newGetMetricStreamResponse Int
pHttpStatus_ =
  GetMetricStreamResponse'
    { $sel:arn:GetMetricStreamResponse' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:GetMetricStreamResponse' :: Maybe ISO8601
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:excludeFilters:GetMetricStreamResponse' :: Maybe [MetricStreamFilter]
excludeFilters = forall a. Maybe a
Prelude.Nothing,
      $sel:firehoseArn:GetMetricStreamResponse' :: Maybe Text
firehoseArn = forall a. Maybe a
Prelude.Nothing,
      $sel:includeFilters:GetMetricStreamResponse' :: Maybe [MetricStreamFilter]
includeFilters = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdateDate:GetMetricStreamResponse' :: Maybe ISO8601
lastUpdateDate = forall a. Maybe a
Prelude.Nothing,
      $sel:name:GetMetricStreamResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:outputFormat:GetMetricStreamResponse' :: Maybe MetricStreamOutputFormat
outputFormat = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:GetMetricStreamResponse' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:state:GetMetricStreamResponse' :: Maybe Text
state = forall a. Maybe a
Prelude.Nothing,
      $sel:statisticsConfigurations:GetMetricStreamResponse' :: Maybe [MetricStreamStatisticsConfiguration]
statisticsConfigurations = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetMetricStreamResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the metric stream.
getMetricStreamResponse_arn :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe Prelude.Text)
getMetricStreamResponse_arn :: Lens' GetMetricStreamResponse (Maybe Text)
getMetricStreamResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe Text
a -> GetMetricStreamResponse
s {$sel:arn:GetMetricStreamResponse' :: Maybe Text
arn = Maybe Text
a} :: GetMetricStreamResponse)

-- | The date that the metric stream was created.
getMetricStreamResponse_creationDate :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe Prelude.UTCTime)
getMetricStreamResponse_creationDate :: Lens' GetMetricStreamResponse (Maybe UTCTime)
getMetricStreamResponse_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe ISO8601
creationDate :: Maybe ISO8601
$sel:creationDate:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe ISO8601
creationDate} -> Maybe ISO8601
creationDate) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe ISO8601
a -> GetMetricStreamResponse
s {$sel:creationDate:GetMetricStreamResponse' :: Maybe ISO8601
creationDate = Maybe ISO8601
a} :: GetMetricStreamResponse) 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 this array of metric namespaces is present, then these namespaces are
-- the only metric namespaces that are not streamed by this metric stream.
-- In this case, all other metric namespaces in the account are streamed by
-- this metric stream.
getMetricStreamResponse_excludeFilters :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe [MetricStreamFilter])
getMetricStreamResponse_excludeFilters :: Lens' GetMetricStreamResponse (Maybe [MetricStreamFilter])
getMetricStreamResponse_excludeFilters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe [MetricStreamFilter]
excludeFilters :: Maybe [MetricStreamFilter]
$sel:excludeFilters:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe [MetricStreamFilter]
excludeFilters} -> Maybe [MetricStreamFilter]
excludeFilters) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe [MetricStreamFilter]
a -> GetMetricStreamResponse
s {$sel:excludeFilters:GetMetricStreamResponse' :: Maybe [MetricStreamFilter]
excludeFilters = Maybe [MetricStreamFilter]
a} :: GetMetricStreamResponse) 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 ARN of the Amazon Kinesis Data Firehose delivery stream that is used
-- by this metric stream.
getMetricStreamResponse_firehoseArn :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe Prelude.Text)
getMetricStreamResponse_firehoseArn :: Lens' GetMetricStreamResponse (Maybe Text)
getMetricStreamResponse_firehoseArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe Text
firehoseArn :: Maybe Text
$sel:firehoseArn:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
firehoseArn} -> Maybe Text
firehoseArn) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe Text
a -> GetMetricStreamResponse
s {$sel:firehoseArn:GetMetricStreamResponse' :: Maybe Text
firehoseArn = Maybe Text
a} :: GetMetricStreamResponse)

-- | If this array of metric namespaces is present, then these namespaces are
-- the only metric namespaces that are streamed by this metric stream.
getMetricStreamResponse_includeFilters :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe [MetricStreamFilter])
getMetricStreamResponse_includeFilters :: Lens' GetMetricStreamResponse (Maybe [MetricStreamFilter])
getMetricStreamResponse_includeFilters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe [MetricStreamFilter]
includeFilters :: Maybe [MetricStreamFilter]
$sel:includeFilters:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe [MetricStreamFilter]
includeFilters} -> Maybe [MetricStreamFilter]
includeFilters) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe [MetricStreamFilter]
a -> GetMetricStreamResponse
s {$sel:includeFilters:GetMetricStreamResponse' :: Maybe [MetricStreamFilter]
includeFilters = Maybe [MetricStreamFilter]
a} :: GetMetricStreamResponse) 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 date of the most recent update to the metric stream\'s
-- configuration.
getMetricStreamResponse_lastUpdateDate :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe Prelude.UTCTime)
getMetricStreamResponse_lastUpdateDate :: Lens' GetMetricStreamResponse (Maybe UTCTime)
getMetricStreamResponse_lastUpdateDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe ISO8601
lastUpdateDate :: Maybe ISO8601
$sel:lastUpdateDate:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe ISO8601
lastUpdateDate} -> Maybe ISO8601
lastUpdateDate) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe ISO8601
a -> GetMetricStreamResponse
s {$sel:lastUpdateDate:GetMetricStreamResponse' :: Maybe ISO8601
lastUpdateDate = Maybe ISO8601
a} :: GetMetricStreamResponse) 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 name of the metric stream.
getMetricStreamResponse_name :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe Prelude.Text)
getMetricStreamResponse_name :: Lens' GetMetricStreamResponse (Maybe Text)
getMetricStreamResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe Text
name :: Maybe Text
$sel:name:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
name} -> Maybe Text
name) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe Text
a -> GetMetricStreamResponse
s {$sel:name:GetMetricStreamResponse' :: Maybe Text
name = Maybe Text
a} :: GetMetricStreamResponse)

-- | The output format for the stream. Valid values are @json@ and
-- @opentelemetry0.7@. For more information about metric stream output
-- formats, see
-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html Metric streams output formats>.
getMetricStreamResponse_outputFormat :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe MetricStreamOutputFormat)
getMetricStreamResponse_outputFormat :: Lens' GetMetricStreamResponse (Maybe MetricStreamOutputFormat)
getMetricStreamResponse_outputFormat = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe MetricStreamOutputFormat
outputFormat :: Maybe MetricStreamOutputFormat
$sel:outputFormat:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe MetricStreamOutputFormat
outputFormat} -> Maybe MetricStreamOutputFormat
outputFormat) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe MetricStreamOutputFormat
a -> GetMetricStreamResponse
s {$sel:outputFormat:GetMetricStreamResponse' :: Maybe MetricStreamOutputFormat
outputFormat = Maybe MetricStreamOutputFormat
a} :: GetMetricStreamResponse)

-- | The ARN of the IAM role that is used by this metric stream.
getMetricStreamResponse_roleArn :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe Prelude.Text)
getMetricStreamResponse_roleArn :: Lens' GetMetricStreamResponse (Maybe Text)
getMetricStreamResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe Text
a -> GetMetricStreamResponse
s {$sel:roleArn:GetMetricStreamResponse' :: Maybe Text
roleArn = Maybe Text
a} :: GetMetricStreamResponse)

-- | The state of the metric stream. The possible values are @running@ and
-- @stopped@.
getMetricStreamResponse_state :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe Prelude.Text)
getMetricStreamResponse_state :: Lens' GetMetricStreamResponse (Maybe Text)
getMetricStreamResponse_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe Text
state :: Maybe Text
$sel:state:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
state} -> Maybe Text
state) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe Text
a -> GetMetricStreamResponse
s {$sel:state:GetMetricStreamResponse' :: Maybe Text
state = Maybe Text
a} :: GetMetricStreamResponse)

-- | Each entry in this array displays information about one or more metrics
-- that include additional statistics in the metric stream. For more
-- information about the additional statistics, see
-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html CloudWatch statistics definitions>.
getMetricStreamResponse_statisticsConfigurations :: Lens.Lens' GetMetricStreamResponse (Prelude.Maybe [MetricStreamStatisticsConfiguration])
getMetricStreamResponse_statisticsConfigurations :: Lens'
  GetMetricStreamResponse
  (Maybe [MetricStreamStatisticsConfiguration])
getMetricStreamResponse_statisticsConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Maybe [MetricStreamStatisticsConfiguration]
statisticsConfigurations :: Maybe [MetricStreamStatisticsConfiguration]
$sel:statisticsConfigurations:GetMetricStreamResponse' :: GetMetricStreamResponse
-> Maybe [MetricStreamStatisticsConfiguration]
statisticsConfigurations} -> Maybe [MetricStreamStatisticsConfiguration]
statisticsConfigurations) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Maybe [MetricStreamStatisticsConfiguration]
a -> GetMetricStreamResponse
s {$sel:statisticsConfigurations:GetMetricStreamResponse' :: Maybe [MetricStreamStatisticsConfiguration]
statisticsConfigurations = Maybe [MetricStreamStatisticsConfiguration]
a} :: GetMetricStreamResponse) 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.
getMetricStreamResponse_httpStatus :: Lens.Lens' GetMetricStreamResponse Prelude.Int
getMetricStreamResponse_httpStatus :: Lens' GetMetricStreamResponse Int
getMetricStreamResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetMetricStreamResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetMetricStreamResponse' :: GetMetricStreamResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetMetricStreamResponse
s@GetMetricStreamResponse' {} Int
a -> GetMetricStreamResponse
s {$sel:httpStatus:GetMetricStreamResponse' :: Int
httpStatus = Int
a} :: GetMetricStreamResponse)

instance Prelude.NFData GetMetricStreamResponse where
  rnf :: GetMetricStreamResponse -> ()
rnf GetMetricStreamResponse' {Int
Maybe [MetricStreamFilter]
Maybe [MetricStreamStatisticsConfiguration]
Maybe Text
Maybe ISO8601
Maybe MetricStreamOutputFormat
httpStatus :: Int
statisticsConfigurations :: Maybe [MetricStreamStatisticsConfiguration]
state :: Maybe Text
roleArn :: Maybe Text
outputFormat :: Maybe MetricStreamOutputFormat
name :: Maybe Text
lastUpdateDate :: Maybe ISO8601
includeFilters :: Maybe [MetricStreamFilter]
firehoseArn :: Maybe Text
excludeFilters :: Maybe [MetricStreamFilter]
creationDate :: Maybe ISO8601
arn :: Maybe Text
$sel:httpStatus:GetMetricStreamResponse' :: GetMetricStreamResponse -> Int
$sel:statisticsConfigurations:GetMetricStreamResponse' :: GetMetricStreamResponse
-> Maybe [MetricStreamStatisticsConfiguration]
$sel:state:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
$sel:roleArn:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
$sel:outputFormat:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe MetricStreamOutputFormat
$sel:name:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
$sel:lastUpdateDate:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe ISO8601
$sel:includeFilters:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe [MetricStreamFilter]
$sel:firehoseArn:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
$sel:excludeFilters:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe [MetricStreamFilter]
$sel:creationDate:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe ISO8601
$sel:arn:GetMetricStreamResponse' :: GetMetricStreamResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [MetricStreamFilter]
excludeFilters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
firehoseArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [MetricStreamFilter]
includeFilters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
lastUpdateDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MetricStreamOutputFormat
outputFormat
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [MetricStreamStatisticsConfiguration]
statisticsConfigurations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus