{-# 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.Rum.UpdateRumMetricDefinition
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Modifies one existing metric definition for CloudWatch RUM extended
-- metrics. For more information about extended metrics, see
-- <https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_BatchCreateRumMetricsDefinitions.html BatchCreateRumMetricsDefinitions>.
module Amazonka.Rum.UpdateRumMetricDefinition
  ( -- * Creating a Request
    UpdateRumMetricDefinition (..),
    newUpdateRumMetricDefinition,

    -- * Request Lenses
    updateRumMetricDefinition_destinationArn,
    updateRumMetricDefinition_appMonitorName,
    updateRumMetricDefinition_destination,
    updateRumMetricDefinition_metricDefinition,
    updateRumMetricDefinition_metricDefinitionId,

    -- * Destructuring the Response
    UpdateRumMetricDefinitionResponse (..),
    newUpdateRumMetricDefinitionResponse,

    -- * Response Lenses
    updateRumMetricDefinitionResponse_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.Rum.Types

-- | /See:/ 'newUpdateRumMetricDefinition' smart constructor.
data UpdateRumMetricDefinition = UpdateRumMetricDefinition'
  { -- | This parameter is required if @Destination@ is @Evidently@. If
    -- @Destination@ is @CloudWatch@, do not use this parameter.
    --
    -- This parameter specifies the ARN of the Evidently experiment that is to
    -- receive the metrics. You must have already defined this experiment as a
    -- valid destination. For more information, see
    -- <https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html PutRumMetricsDestination>.
    UpdateRumMetricDefinition -> Maybe Text
destinationArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the CloudWatch RUM app monitor that sends these metrics.
    UpdateRumMetricDefinition -> Text
appMonitorName :: Prelude.Text,
    -- | The destination to send the metrics to. Valid values are @CloudWatch@
    -- and @Evidently@. If you specify @Evidently@, you must also specify the
    -- ARN of the CloudWatchEvidently experiment that will receive the metrics
    -- and an IAM role that has permission to write to the experiment.
    UpdateRumMetricDefinition -> MetricDestination
destination :: MetricDestination,
    -- | A structure that contains the new definition that you want to use for
    -- this metric.
    UpdateRumMetricDefinition -> MetricDefinitionRequest
metricDefinition :: MetricDefinitionRequest,
    -- | The ID of the metric definition to update.
    UpdateRumMetricDefinition -> Text
metricDefinitionId :: Prelude.Text
  }
  deriving (UpdateRumMetricDefinition -> UpdateRumMetricDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateRumMetricDefinition -> UpdateRumMetricDefinition -> Bool
$c/= :: UpdateRumMetricDefinition -> UpdateRumMetricDefinition -> Bool
== :: UpdateRumMetricDefinition -> UpdateRumMetricDefinition -> Bool
$c== :: UpdateRumMetricDefinition -> UpdateRumMetricDefinition -> Bool
Prelude.Eq, ReadPrec [UpdateRumMetricDefinition]
ReadPrec UpdateRumMetricDefinition
Int -> ReadS UpdateRumMetricDefinition
ReadS [UpdateRumMetricDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateRumMetricDefinition]
$creadListPrec :: ReadPrec [UpdateRumMetricDefinition]
readPrec :: ReadPrec UpdateRumMetricDefinition
$creadPrec :: ReadPrec UpdateRumMetricDefinition
readList :: ReadS [UpdateRumMetricDefinition]
$creadList :: ReadS [UpdateRumMetricDefinition]
readsPrec :: Int -> ReadS UpdateRumMetricDefinition
$creadsPrec :: Int -> ReadS UpdateRumMetricDefinition
Prelude.Read, Int -> UpdateRumMetricDefinition -> ShowS
[UpdateRumMetricDefinition] -> ShowS
UpdateRumMetricDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateRumMetricDefinition] -> ShowS
$cshowList :: [UpdateRumMetricDefinition] -> ShowS
show :: UpdateRumMetricDefinition -> String
$cshow :: UpdateRumMetricDefinition -> String
showsPrec :: Int -> UpdateRumMetricDefinition -> ShowS
$cshowsPrec :: Int -> UpdateRumMetricDefinition -> ShowS
Prelude.Show, forall x.
Rep UpdateRumMetricDefinition x -> UpdateRumMetricDefinition
forall x.
UpdateRumMetricDefinition -> Rep UpdateRumMetricDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateRumMetricDefinition x -> UpdateRumMetricDefinition
$cfrom :: forall x.
UpdateRumMetricDefinition -> Rep UpdateRumMetricDefinition x
Prelude.Generic)

-- |
-- Create a value of 'UpdateRumMetricDefinition' 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:
--
-- 'destinationArn', 'updateRumMetricDefinition_destinationArn' - This parameter is required if @Destination@ is @Evidently@. If
-- @Destination@ is @CloudWatch@, do not use this parameter.
--
-- This parameter specifies the ARN of the Evidently experiment that is to
-- receive the metrics. You must have already defined this experiment as a
-- valid destination. For more information, see
-- <https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html PutRumMetricsDestination>.
--
-- 'appMonitorName', 'updateRumMetricDefinition_appMonitorName' - The name of the CloudWatch RUM app monitor that sends these metrics.
--
-- 'destination', 'updateRumMetricDefinition_destination' - The destination to send the metrics to. Valid values are @CloudWatch@
-- and @Evidently@. If you specify @Evidently@, you must also specify the
-- ARN of the CloudWatchEvidently experiment that will receive the metrics
-- and an IAM role that has permission to write to the experiment.
--
-- 'metricDefinition', 'updateRumMetricDefinition_metricDefinition' - A structure that contains the new definition that you want to use for
-- this metric.
--
-- 'metricDefinitionId', 'updateRumMetricDefinition_metricDefinitionId' - The ID of the metric definition to update.
newUpdateRumMetricDefinition ::
  -- | 'appMonitorName'
  Prelude.Text ->
  -- | 'destination'
  MetricDestination ->
  -- | 'metricDefinition'
  MetricDefinitionRequest ->
  -- | 'metricDefinitionId'
  Prelude.Text ->
  UpdateRumMetricDefinition
newUpdateRumMetricDefinition :: Text
-> MetricDestination
-> MetricDefinitionRequest
-> Text
-> UpdateRumMetricDefinition
newUpdateRumMetricDefinition
  Text
pAppMonitorName_
  MetricDestination
pDestination_
  MetricDefinitionRequest
pMetricDefinition_
  Text
pMetricDefinitionId_ =
    UpdateRumMetricDefinition'
      { $sel:destinationArn:UpdateRumMetricDefinition' :: Maybe Text
destinationArn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:appMonitorName:UpdateRumMetricDefinition' :: Text
appMonitorName = Text
pAppMonitorName_,
        $sel:destination:UpdateRumMetricDefinition' :: MetricDestination
destination = MetricDestination
pDestination_,
        $sel:metricDefinition:UpdateRumMetricDefinition' :: MetricDefinitionRequest
metricDefinition = MetricDefinitionRequest
pMetricDefinition_,
        $sel:metricDefinitionId:UpdateRumMetricDefinition' :: Text
metricDefinitionId = Text
pMetricDefinitionId_
      }

-- | This parameter is required if @Destination@ is @Evidently@. If
-- @Destination@ is @CloudWatch@, do not use this parameter.
--
-- This parameter specifies the ARN of the Evidently experiment that is to
-- receive the metrics. You must have already defined this experiment as a
-- valid destination. For more information, see
-- <https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html PutRumMetricsDestination>.
updateRumMetricDefinition_destinationArn :: Lens.Lens' UpdateRumMetricDefinition (Prelude.Maybe Prelude.Text)
updateRumMetricDefinition_destinationArn :: Lens' UpdateRumMetricDefinition (Maybe Text)
updateRumMetricDefinition_destinationArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRumMetricDefinition' {Maybe Text
destinationArn :: Maybe Text
$sel:destinationArn:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Maybe Text
destinationArn} -> Maybe Text
destinationArn) (\s :: UpdateRumMetricDefinition
s@UpdateRumMetricDefinition' {} Maybe Text
a -> UpdateRumMetricDefinition
s {$sel:destinationArn:UpdateRumMetricDefinition' :: Maybe Text
destinationArn = Maybe Text
a} :: UpdateRumMetricDefinition)

-- | The name of the CloudWatch RUM app monitor that sends these metrics.
updateRumMetricDefinition_appMonitorName :: Lens.Lens' UpdateRumMetricDefinition Prelude.Text
updateRumMetricDefinition_appMonitorName :: Lens' UpdateRumMetricDefinition Text
updateRumMetricDefinition_appMonitorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRumMetricDefinition' {Text
appMonitorName :: Text
$sel:appMonitorName:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
appMonitorName} -> Text
appMonitorName) (\s :: UpdateRumMetricDefinition
s@UpdateRumMetricDefinition' {} Text
a -> UpdateRumMetricDefinition
s {$sel:appMonitorName:UpdateRumMetricDefinition' :: Text
appMonitorName = Text
a} :: UpdateRumMetricDefinition)

-- | The destination to send the metrics to. Valid values are @CloudWatch@
-- and @Evidently@. If you specify @Evidently@, you must also specify the
-- ARN of the CloudWatchEvidently experiment that will receive the metrics
-- and an IAM role that has permission to write to the experiment.
updateRumMetricDefinition_destination :: Lens.Lens' UpdateRumMetricDefinition MetricDestination
updateRumMetricDefinition_destination :: Lens' UpdateRumMetricDefinition MetricDestination
updateRumMetricDefinition_destination = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRumMetricDefinition' {MetricDestination
destination :: MetricDestination
$sel:destination:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDestination
destination} -> MetricDestination
destination) (\s :: UpdateRumMetricDefinition
s@UpdateRumMetricDefinition' {} MetricDestination
a -> UpdateRumMetricDefinition
s {$sel:destination:UpdateRumMetricDefinition' :: MetricDestination
destination = MetricDestination
a} :: UpdateRumMetricDefinition)

-- | A structure that contains the new definition that you want to use for
-- this metric.
updateRumMetricDefinition_metricDefinition :: Lens.Lens' UpdateRumMetricDefinition MetricDefinitionRequest
updateRumMetricDefinition_metricDefinition :: Lens' UpdateRumMetricDefinition MetricDefinitionRequest
updateRumMetricDefinition_metricDefinition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRumMetricDefinition' {MetricDefinitionRequest
metricDefinition :: MetricDefinitionRequest
$sel:metricDefinition:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDefinitionRequest
metricDefinition} -> MetricDefinitionRequest
metricDefinition) (\s :: UpdateRumMetricDefinition
s@UpdateRumMetricDefinition' {} MetricDefinitionRequest
a -> UpdateRumMetricDefinition
s {$sel:metricDefinition:UpdateRumMetricDefinition' :: MetricDefinitionRequest
metricDefinition = MetricDefinitionRequest
a} :: UpdateRumMetricDefinition)

-- | The ID of the metric definition to update.
updateRumMetricDefinition_metricDefinitionId :: Lens.Lens' UpdateRumMetricDefinition Prelude.Text
updateRumMetricDefinition_metricDefinitionId :: Lens' UpdateRumMetricDefinition Text
updateRumMetricDefinition_metricDefinitionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRumMetricDefinition' {Text
metricDefinitionId :: Text
$sel:metricDefinitionId:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
metricDefinitionId} -> Text
metricDefinitionId) (\s :: UpdateRumMetricDefinition
s@UpdateRumMetricDefinition' {} Text
a -> UpdateRumMetricDefinition
s {$sel:metricDefinitionId:UpdateRumMetricDefinition' :: Text
metricDefinitionId = Text
a} :: UpdateRumMetricDefinition)

instance Core.AWSRequest UpdateRumMetricDefinition where
  type
    AWSResponse UpdateRumMetricDefinition =
      UpdateRumMetricDefinitionResponse
  request :: (Service -> Service)
-> UpdateRumMetricDefinition -> Request UpdateRumMetricDefinition
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.patchJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateRumMetricDefinition
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateRumMetricDefinition)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> UpdateRumMetricDefinitionResponse
UpdateRumMetricDefinitionResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable UpdateRumMetricDefinition where
  hashWithSalt :: Int -> UpdateRumMetricDefinition -> Int
hashWithSalt Int
_salt UpdateRumMetricDefinition' {Maybe Text
Text
MetricDefinitionRequest
MetricDestination
metricDefinitionId :: Text
metricDefinition :: MetricDefinitionRequest
destination :: MetricDestination
appMonitorName :: Text
destinationArn :: Maybe Text
$sel:metricDefinitionId:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
$sel:metricDefinition:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDefinitionRequest
$sel:destination:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDestination
$sel:appMonitorName:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
$sel:destinationArn:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
destinationArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
appMonitorName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MetricDestination
destination
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` MetricDefinitionRequest
metricDefinition
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
metricDefinitionId

instance Prelude.NFData UpdateRumMetricDefinition where
  rnf :: UpdateRumMetricDefinition -> ()
rnf UpdateRumMetricDefinition' {Maybe Text
Text
MetricDefinitionRequest
MetricDestination
metricDefinitionId :: Text
metricDefinition :: MetricDefinitionRequest
destination :: MetricDestination
appMonitorName :: Text
destinationArn :: Maybe Text
$sel:metricDefinitionId:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
$sel:metricDefinition:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDefinitionRequest
$sel:destination:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDestination
$sel:appMonitorName:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
$sel:destinationArn:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
destinationArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
appMonitorName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MetricDestination
destination
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf MetricDefinitionRequest
metricDefinition
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
metricDefinitionId

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

instance Data.ToJSON UpdateRumMetricDefinition where
  toJSON :: UpdateRumMetricDefinition -> Value
toJSON UpdateRumMetricDefinition' {Maybe Text
Text
MetricDefinitionRequest
MetricDestination
metricDefinitionId :: Text
metricDefinition :: MetricDefinitionRequest
destination :: MetricDestination
appMonitorName :: Text
destinationArn :: Maybe Text
$sel:metricDefinitionId:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
$sel:metricDefinition:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDefinitionRequest
$sel:destination:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDestination
$sel:appMonitorName:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
$sel:destinationArn:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DestinationArn" 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
destinationArn,
            forall a. a -> Maybe a
Prelude.Just (Key
"Destination" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MetricDestination
destination),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"MetricDefinition" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= MetricDefinitionRequest
metricDefinition),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"MetricDefinitionId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
metricDefinitionId)
          ]
      )

instance Data.ToPath UpdateRumMetricDefinition where
  toPath :: UpdateRumMetricDefinition -> ByteString
toPath UpdateRumMetricDefinition' {Maybe Text
Text
MetricDefinitionRequest
MetricDestination
metricDefinitionId :: Text
metricDefinition :: MetricDefinitionRequest
destination :: MetricDestination
appMonitorName :: Text
destinationArn :: Maybe Text
$sel:metricDefinitionId:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
$sel:metricDefinition:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDefinitionRequest
$sel:destination:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> MetricDestination
$sel:appMonitorName:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Text
$sel:destinationArn:UpdateRumMetricDefinition' :: UpdateRumMetricDefinition -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/rummetrics/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
appMonitorName,
        ByteString
"/metrics"
      ]

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

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

-- |
-- Create a value of 'UpdateRumMetricDefinitionResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'httpStatus', 'updateRumMetricDefinitionResponse_httpStatus' - The response's http status code.
newUpdateRumMetricDefinitionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateRumMetricDefinitionResponse
newUpdateRumMetricDefinitionResponse :: Int -> UpdateRumMetricDefinitionResponse
newUpdateRumMetricDefinitionResponse Int
pHttpStatus_ =
  UpdateRumMetricDefinitionResponse'
    { $sel:httpStatus:UpdateRumMetricDefinitionResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    UpdateRumMetricDefinitionResponse
  where
  rnf :: UpdateRumMetricDefinitionResponse -> ()
rnf UpdateRumMetricDefinitionResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateRumMetricDefinitionResponse' :: UpdateRumMetricDefinitionResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus