{-# 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.BatchCreateRumMetricDefinitions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Specifies the extended metrics that you want a CloudWatch RUM app
-- monitor to send to a destination. Valid destinations include CloudWatch
-- and Evidently.
--
-- By default, RUM app monitors send some metrics to CloudWatch. These
-- default metrics are listed in
-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-metrics.html CloudWatch metrics that you can collect with CloudWatch RUM>.
--
-- If you also send extended metrics, you can send metrics to Evidently as
-- well as CloudWatch, and you can also optionally send the metrics with
-- additional dimensions. The valid dimension names for the additional
-- dimensions are @BrowserName@, @CountryCode@, @DeviceType@, @FileType@,
-- @OSName@, and @PageId@. For more information, see
-- <https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-vended-metrics.html Extended metrics that you can send to CloudWatch and CloudWatch Evidently>.
--
-- The maximum number of metric definitions that you can specify in one
-- @BatchCreateRumMetricDefinitions@ operation is 200.
--
-- The maximum number of metric definitions that one destination can
-- contain is 2000.
--
-- Extended metrics sent are charged as CloudWatch custom metrics. Each
-- combination of additional dimension name and dimension value counts as a
-- custom metric. For more information, see
-- <https://aws.amazon.com/cloudwatch/pricing/ Amazon CloudWatch Pricing>.
--
-- You must have already created a destination for the metrics before you
-- send them. For more information, see
-- <https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html PutRumMetricsDestination>.
--
-- If some metric definitions specified in a
-- @BatchCreateRumMetricDefinitions@ operations are not valid, those metric
-- definitions fail and return errors, but all valid metric definitions in
-- the same operation still succeed.
module Amazonka.Rum.BatchCreateRumMetricDefinitions
  ( -- * Creating a Request
    BatchCreateRumMetricDefinitions (..),
    newBatchCreateRumMetricDefinitions,

    -- * Request Lenses
    batchCreateRumMetricDefinitions_destinationArn,
    batchCreateRumMetricDefinitions_appMonitorName,
    batchCreateRumMetricDefinitions_destination,
    batchCreateRumMetricDefinitions_metricDefinitions,

    -- * Destructuring the Response
    BatchCreateRumMetricDefinitionsResponse (..),
    newBatchCreateRumMetricDefinitionsResponse,

    -- * Response Lenses
    batchCreateRumMetricDefinitionsResponse_metricDefinitions,
    batchCreateRumMetricDefinitionsResponse_httpStatus,
    batchCreateRumMetricDefinitionsResponse_errors,
  )
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:/ 'newBatchCreateRumMetricDefinitions' smart constructor.
data BatchCreateRumMetricDefinitions = BatchCreateRumMetricDefinitions'
  { -- | 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>.
    BatchCreateRumMetricDefinitions -> Maybe Text
destinationArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the CloudWatch RUM app monitor that is to send the metrics.
    BatchCreateRumMetricDefinitions -> 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.
    BatchCreateRumMetricDefinitions -> MetricDestination
destination :: MetricDestination,
    -- | An array of structures which define the metrics that you want to send.
    BatchCreateRumMetricDefinitions -> [MetricDefinitionRequest]
metricDefinitions :: [MetricDefinitionRequest]
  }
  deriving (BatchCreateRumMetricDefinitions
-> BatchCreateRumMetricDefinitions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BatchCreateRumMetricDefinitions
-> BatchCreateRumMetricDefinitions -> Bool
$c/= :: BatchCreateRumMetricDefinitions
-> BatchCreateRumMetricDefinitions -> Bool
== :: BatchCreateRumMetricDefinitions
-> BatchCreateRumMetricDefinitions -> Bool
$c== :: BatchCreateRumMetricDefinitions
-> BatchCreateRumMetricDefinitions -> Bool
Prelude.Eq, ReadPrec [BatchCreateRumMetricDefinitions]
ReadPrec BatchCreateRumMetricDefinitions
Int -> ReadS BatchCreateRumMetricDefinitions
ReadS [BatchCreateRumMetricDefinitions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BatchCreateRumMetricDefinitions]
$creadListPrec :: ReadPrec [BatchCreateRumMetricDefinitions]
readPrec :: ReadPrec BatchCreateRumMetricDefinitions
$creadPrec :: ReadPrec BatchCreateRumMetricDefinitions
readList :: ReadS [BatchCreateRumMetricDefinitions]
$creadList :: ReadS [BatchCreateRumMetricDefinitions]
readsPrec :: Int -> ReadS BatchCreateRumMetricDefinitions
$creadsPrec :: Int -> ReadS BatchCreateRumMetricDefinitions
Prelude.Read, Int -> BatchCreateRumMetricDefinitions -> ShowS
[BatchCreateRumMetricDefinitions] -> ShowS
BatchCreateRumMetricDefinitions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BatchCreateRumMetricDefinitions] -> ShowS
$cshowList :: [BatchCreateRumMetricDefinitions] -> ShowS
show :: BatchCreateRumMetricDefinitions -> String
$cshow :: BatchCreateRumMetricDefinitions -> String
showsPrec :: Int -> BatchCreateRumMetricDefinitions -> ShowS
$cshowsPrec :: Int -> BatchCreateRumMetricDefinitions -> ShowS
Prelude.Show, forall x.
Rep BatchCreateRumMetricDefinitions x
-> BatchCreateRumMetricDefinitions
forall x.
BatchCreateRumMetricDefinitions
-> Rep BatchCreateRumMetricDefinitions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep BatchCreateRumMetricDefinitions x
-> BatchCreateRumMetricDefinitions
$cfrom :: forall x.
BatchCreateRumMetricDefinitions
-> Rep BatchCreateRumMetricDefinitions x
Prelude.Generic)

-- |
-- Create a value of 'BatchCreateRumMetricDefinitions' 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', 'batchCreateRumMetricDefinitions_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', 'batchCreateRumMetricDefinitions_appMonitorName' - The name of the CloudWatch RUM app monitor that is to send the metrics.
--
-- 'destination', 'batchCreateRumMetricDefinitions_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.
--
-- 'metricDefinitions', 'batchCreateRumMetricDefinitions_metricDefinitions' - An array of structures which define the metrics that you want to send.
newBatchCreateRumMetricDefinitions ::
  -- | 'appMonitorName'
  Prelude.Text ->
  -- | 'destination'
  MetricDestination ->
  BatchCreateRumMetricDefinitions
newBatchCreateRumMetricDefinitions :: Text -> MetricDestination -> BatchCreateRumMetricDefinitions
newBatchCreateRumMetricDefinitions
  Text
pAppMonitorName_
  MetricDestination
pDestination_ =
    BatchCreateRumMetricDefinitions'
      { $sel:destinationArn:BatchCreateRumMetricDefinitions' :: Maybe Text
destinationArn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:appMonitorName:BatchCreateRumMetricDefinitions' :: Text
appMonitorName = Text
pAppMonitorName_,
        $sel:destination:BatchCreateRumMetricDefinitions' :: MetricDestination
destination = MetricDestination
pDestination_,
        $sel:metricDefinitions:BatchCreateRumMetricDefinitions' :: [MetricDefinitionRequest]
metricDefinitions = forall a. Monoid a => a
Prelude.mempty
      }

-- | 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>.
batchCreateRumMetricDefinitions_destinationArn :: Lens.Lens' BatchCreateRumMetricDefinitions (Prelude.Maybe Prelude.Text)
batchCreateRumMetricDefinitions_destinationArn :: Lens' BatchCreateRumMetricDefinitions (Maybe Text)
batchCreateRumMetricDefinitions_destinationArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchCreateRumMetricDefinitions' {Maybe Text
destinationArn :: Maybe Text
$sel:destinationArn:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> Maybe Text
destinationArn} -> Maybe Text
destinationArn) (\s :: BatchCreateRumMetricDefinitions
s@BatchCreateRumMetricDefinitions' {} Maybe Text
a -> BatchCreateRumMetricDefinitions
s {$sel:destinationArn:BatchCreateRumMetricDefinitions' :: Maybe Text
destinationArn = Maybe Text
a} :: BatchCreateRumMetricDefinitions)

-- | The name of the CloudWatch RUM app monitor that is to send the metrics.
batchCreateRumMetricDefinitions_appMonitorName :: Lens.Lens' BatchCreateRumMetricDefinitions Prelude.Text
batchCreateRumMetricDefinitions_appMonitorName :: Lens' BatchCreateRumMetricDefinitions Text
batchCreateRumMetricDefinitions_appMonitorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchCreateRumMetricDefinitions' {Text
appMonitorName :: Text
$sel:appMonitorName:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> Text
appMonitorName} -> Text
appMonitorName) (\s :: BatchCreateRumMetricDefinitions
s@BatchCreateRumMetricDefinitions' {} Text
a -> BatchCreateRumMetricDefinitions
s {$sel:appMonitorName:BatchCreateRumMetricDefinitions' :: Text
appMonitorName = Text
a} :: BatchCreateRumMetricDefinitions)

-- | 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.
batchCreateRumMetricDefinitions_destination :: Lens.Lens' BatchCreateRumMetricDefinitions MetricDestination
batchCreateRumMetricDefinitions_destination :: Lens' BatchCreateRumMetricDefinitions MetricDestination
batchCreateRumMetricDefinitions_destination = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchCreateRumMetricDefinitions' {MetricDestination
destination :: MetricDestination
$sel:destination:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> MetricDestination
destination} -> MetricDestination
destination) (\s :: BatchCreateRumMetricDefinitions
s@BatchCreateRumMetricDefinitions' {} MetricDestination
a -> BatchCreateRumMetricDefinitions
s {$sel:destination:BatchCreateRumMetricDefinitions' :: MetricDestination
destination = MetricDestination
a} :: BatchCreateRumMetricDefinitions)

-- | An array of structures which define the metrics that you want to send.
batchCreateRumMetricDefinitions_metricDefinitions :: Lens.Lens' BatchCreateRumMetricDefinitions [MetricDefinitionRequest]
batchCreateRumMetricDefinitions_metricDefinitions :: Lens' BatchCreateRumMetricDefinitions [MetricDefinitionRequest]
batchCreateRumMetricDefinitions_metricDefinitions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchCreateRumMetricDefinitions' {[MetricDefinitionRequest]
metricDefinitions :: [MetricDefinitionRequest]
$sel:metricDefinitions:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> [MetricDefinitionRequest]
metricDefinitions} -> [MetricDefinitionRequest]
metricDefinitions) (\s :: BatchCreateRumMetricDefinitions
s@BatchCreateRumMetricDefinitions' {} [MetricDefinitionRequest]
a -> BatchCreateRumMetricDefinitions
s {$sel:metricDefinitions:BatchCreateRumMetricDefinitions' :: [MetricDefinitionRequest]
metricDefinitions = [MetricDefinitionRequest]
a} :: BatchCreateRumMetricDefinitions) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Core.AWSRequest
    BatchCreateRumMetricDefinitions
  where
  type
    AWSResponse BatchCreateRumMetricDefinitions =
      BatchCreateRumMetricDefinitionsResponse
  request :: (Service -> Service)
-> BatchCreateRumMetricDefinitions
-> Request BatchCreateRumMetricDefinitions
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 BatchCreateRumMetricDefinitions
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse BatchCreateRumMetricDefinitions)))
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 [MetricDefinition]
-> Int
-> [BatchCreateRumMetricDefinitionsError]
-> BatchCreateRumMetricDefinitionsResponse
BatchCreateRumMetricDefinitionsResponse'
            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
"MetricDefinitions"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            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
"Errors" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
      )

instance
  Prelude.Hashable
    BatchCreateRumMetricDefinitions
  where
  hashWithSalt :: Int -> BatchCreateRumMetricDefinitions -> Int
hashWithSalt
    Int
_salt
    BatchCreateRumMetricDefinitions' {[MetricDefinitionRequest]
Maybe Text
Text
MetricDestination
metricDefinitions :: [MetricDefinitionRequest]
destination :: MetricDestination
appMonitorName :: Text
destinationArn :: Maybe Text
$sel:metricDefinitions:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> [MetricDefinitionRequest]
$sel:destination:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> MetricDestination
$sel:appMonitorName:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> Text
$sel:destinationArn:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> 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]
metricDefinitions

instance
  Prelude.NFData
    BatchCreateRumMetricDefinitions
  where
  rnf :: BatchCreateRumMetricDefinitions -> ()
rnf BatchCreateRumMetricDefinitions' {[MetricDefinitionRequest]
Maybe Text
Text
MetricDestination
metricDefinitions :: [MetricDefinitionRequest]
destination :: MetricDestination
appMonitorName :: Text
destinationArn :: Maybe Text
$sel:metricDefinitions:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> [MetricDefinitionRequest]
$sel:destination:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> MetricDestination
$sel:appMonitorName:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> Text
$sel:destinationArn:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> 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]
metricDefinitions

instance
  Data.ToHeaders
    BatchCreateRumMetricDefinitions
  where
  toHeaders :: BatchCreateRumMetricDefinitions -> 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 BatchCreateRumMetricDefinitions where
  toJSON :: BatchCreateRumMetricDefinitions -> Value
toJSON BatchCreateRumMetricDefinitions' {[MetricDefinitionRequest]
Maybe Text
Text
MetricDestination
metricDefinitions :: [MetricDefinitionRequest]
destination :: MetricDestination
appMonitorName :: Text
destinationArn :: Maybe Text
$sel:metricDefinitions:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> [MetricDefinitionRequest]
$sel:destination:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> MetricDestination
$sel:appMonitorName:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> Text
$sel:destinationArn:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> 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
"MetricDefinitions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [MetricDefinitionRequest]
metricDefinitions)
          ]
      )

instance Data.ToPath BatchCreateRumMetricDefinitions where
  toPath :: BatchCreateRumMetricDefinitions -> ByteString
toPath BatchCreateRumMetricDefinitions' {[MetricDefinitionRequest]
Maybe Text
Text
MetricDestination
metricDefinitions :: [MetricDefinitionRequest]
destination :: MetricDestination
appMonitorName :: Text
destinationArn :: Maybe Text
$sel:metricDefinitions:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> [MetricDefinitionRequest]
$sel:destination:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> MetricDestination
$sel:appMonitorName:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> Text
$sel:destinationArn:BatchCreateRumMetricDefinitions' :: BatchCreateRumMetricDefinitions -> 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 BatchCreateRumMetricDefinitions where
  toQuery :: BatchCreateRumMetricDefinitions -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newBatchCreateRumMetricDefinitionsResponse' smart constructor.
data BatchCreateRumMetricDefinitionsResponse = BatchCreateRumMetricDefinitionsResponse'
  { -- | An array of structures that define the extended metrics.
    BatchCreateRumMetricDefinitionsResponse -> Maybe [MetricDefinition]
metricDefinitions :: Prelude.Maybe [MetricDefinition],
    -- | The response's http status code.
    BatchCreateRumMetricDefinitionsResponse -> Int
httpStatus :: Prelude.Int,
    -- | An array of error objects, if the operation caused any errors.
    BatchCreateRumMetricDefinitionsResponse
-> [BatchCreateRumMetricDefinitionsError]
errors :: [BatchCreateRumMetricDefinitionsError]
  }
  deriving (BatchCreateRumMetricDefinitionsResponse
-> BatchCreateRumMetricDefinitionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BatchCreateRumMetricDefinitionsResponse
-> BatchCreateRumMetricDefinitionsResponse -> Bool
$c/= :: BatchCreateRumMetricDefinitionsResponse
-> BatchCreateRumMetricDefinitionsResponse -> Bool
== :: BatchCreateRumMetricDefinitionsResponse
-> BatchCreateRumMetricDefinitionsResponse -> Bool
$c== :: BatchCreateRumMetricDefinitionsResponse
-> BatchCreateRumMetricDefinitionsResponse -> Bool
Prelude.Eq, ReadPrec [BatchCreateRumMetricDefinitionsResponse]
ReadPrec BatchCreateRumMetricDefinitionsResponse
Int -> ReadS BatchCreateRumMetricDefinitionsResponse
ReadS [BatchCreateRumMetricDefinitionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BatchCreateRumMetricDefinitionsResponse]
$creadListPrec :: ReadPrec [BatchCreateRumMetricDefinitionsResponse]
readPrec :: ReadPrec BatchCreateRumMetricDefinitionsResponse
$creadPrec :: ReadPrec BatchCreateRumMetricDefinitionsResponse
readList :: ReadS [BatchCreateRumMetricDefinitionsResponse]
$creadList :: ReadS [BatchCreateRumMetricDefinitionsResponse]
readsPrec :: Int -> ReadS BatchCreateRumMetricDefinitionsResponse
$creadsPrec :: Int -> ReadS BatchCreateRumMetricDefinitionsResponse
Prelude.Read, Int -> BatchCreateRumMetricDefinitionsResponse -> ShowS
[BatchCreateRumMetricDefinitionsResponse] -> ShowS
BatchCreateRumMetricDefinitionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BatchCreateRumMetricDefinitionsResponse] -> ShowS
$cshowList :: [BatchCreateRumMetricDefinitionsResponse] -> ShowS
show :: BatchCreateRumMetricDefinitionsResponse -> String
$cshow :: BatchCreateRumMetricDefinitionsResponse -> String
showsPrec :: Int -> BatchCreateRumMetricDefinitionsResponse -> ShowS
$cshowsPrec :: Int -> BatchCreateRumMetricDefinitionsResponse -> ShowS
Prelude.Show, forall x.
Rep BatchCreateRumMetricDefinitionsResponse x
-> BatchCreateRumMetricDefinitionsResponse
forall x.
BatchCreateRumMetricDefinitionsResponse
-> Rep BatchCreateRumMetricDefinitionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep BatchCreateRumMetricDefinitionsResponse x
-> BatchCreateRumMetricDefinitionsResponse
$cfrom :: forall x.
BatchCreateRumMetricDefinitionsResponse
-> Rep BatchCreateRumMetricDefinitionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'BatchCreateRumMetricDefinitionsResponse' 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:
--
-- 'metricDefinitions', 'batchCreateRumMetricDefinitionsResponse_metricDefinitions' - An array of structures that define the extended metrics.
--
-- 'httpStatus', 'batchCreateRumMetricDefinitionsResponse_httpStatus' - The response's http status code.
--
-- 'errors', 'batchCreateRumMetricDefinitionsResponse_errors' - An array of error objects, if the operation caused any errors.
newBatchCreateRumMetricDefinitionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  BatchCreateRumMetricDefinitionsResponse
newBatchCreateRumMetricDefinitionsResponse :: Int -> BatchCreateRumMetricDefinitionsResponse
newBatchCreateRumMetricDefinitionsResponse
  Int
pHttpStatus_ =
    BatchCreateRumMetricDefinitionsResponse'
      { $sel:metricDefinitions:BatchCreateRumMetricDefinitionsResponse' :: Maybe [MetricDefinition]
metricDefinitions =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:BatchCreateRumMetricDefinitionsResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:errors:BatchCreateRumMetricDefinitionsResponse' :: [BatchCreateRumMetricDefinitionsError]
errors = forall a. Monoid a => a
Prelude.mempty
      }

-- | An array of structures that define the extended metrics.
batchCreateRumMetricDefinitionsResponse_metricDefinitions :: Lens.Lens' BatchCreateRumMetricDefinitionsResponse (Prelude.Maybe [MetricDefinition])
batchCreateRumMetricDefinitionsResponse_metricDefinitions :: Lens'
  BatchCreateRumMetricDefinitionsResponse (Maybe [MetricDefinition])
batchCreateRumMetricDefinitionsResponse_metricDefinitions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchCreateRumMetricDefinitionsResponse' {Maybe [MetricDefinition]
metricDefinitions :: Maybe [MetricDefinition]
$sel:metricDefinitions:BatchCreateRumMetricDefinitionsResponse' :: BatchCreateRumMetricDefinitionsResponse -> Maybe [MetricDefinition]
metricDefinitions} -> Maybe [MetricDefinition]
metricDefinitions) (\s :: BatchCreateRumMetricDefinitionsResponse
s@BatchCreateRumMetricDefinitionsResponse' {} Maybe [MetricDefinition]
a -> BatchCreateRumMetricDefinitionsResponse
s {$sel:metricDefinitions:BatchCreateRumMetricDefinitionsResponse' :: Maybe [MetricDefinition]
metricDefinitions = Maybe [MetricDefinition]
a} :: BatchCreateRumMetricDefinitionsResponse) 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.
batchCreateRumMetricDefinitionsResponse_httpStatus :: Lens.Lens' BatchCreateRumMetricDefinitionsResponse Prelude.Int
batchCreateRumMetricDefinitionsResponse_httpStatus :: Lens' BatchCreateRumMetricDefinitionsResponse Int
batchCreateRumMetricDefinitionsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchCreateRumMetricDefinitionsResponse' {Int
httpStatus :: Int
$sel:httpStatus:BatchCreateRumMetricDefinitionsResponse' :: BatchCreateRumMetricDefinitionsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: BatchCreateRumMetricDefinitionsResponse
s@BatchCreateRumMetricDefinitionsResponse' {} Int
a -> BatchCreateRumMetricDefinitionsResponse
s {$sel:httpStatus:BatchCreateRumMetricDefinitionsResponse' :: Int
httpStatus = Int
a} :: BatchCreateRumMetricDefinitionsResponse)

-- | An array of error objects, if the operation caused any errors.
batchCreateRumMetricDefinitionsResponse_errors :: Lens.Lens' BatchCreateRumMetricDefinitionsResponse [BatchCreateRumMetricDefinitionsError]
batchCreateRumMetricDefinitionsResponse_errors :: Lens'
  BatchCreateRumMetricDefinitionsResponse
  [BatchCreateRumMetricDefinitionsError]
batchCreateRumMetricDefinitionsResponse_errors = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BatchCreateRumMetricDefinitionsResponse' {[BatchCreateRumMetricDefinitionsError]
errors :: [BatchCreateRumMetricDefinitionsError]
$sel:errors:BatchCreateRumMetricDefinitionsResponse' :: BatchCreateRumMetricDefinitionsResponse
-> [BatchCreateRumMetricDefinitionsError]
errors} -> [BatchCreateRumMetricDefinitionsError]
errors) (\s :: BatchCreateRumMetricDefinitionsResponse
s@BatchCreateRumMetricDefinitionsResponse' {} [BatchCreateRumMetricDefinitionsError]
a -> BatchCreateRumMetricDefinitionsResponse
s {$sel:errors:BatchCreateRumMetricDefinitionsResponse' :: [BatchCreateRumMetricDefinitionsError]
errors = [BatchCreateRumMetricDefinitionsError]
a} :: BatchCreateRumMetricDefinitionsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Prelude.NFData
    BatchCreateRumMetricDefinitionsResponse
  where
  rnf :: BatchCreateRumMetricDefinitionsResponse -> ()
rnf BatchCreateRumMetricDefinitionsResponse' {Int
[BatchCreateRumMetricDefinitionsError]
Maybe [MetricDefinition]
errors :: [BatchCreateRumMetricDefinitionsError]
httpStatus :: Int
metricDefinitions :: Maybe [MetricDefinition]
$sel:errors:BatchCreateRumMetricDefinitionsResponse' :: BatchCreateRumMetricDefinitionsResponse
-> [BatchCreateRumMetricDefinitionsError]
$sel:httpStatus:BatchCreateRumMetricDefinitionsResponse' :: BatchCreateRumMetricDefinitionsResponse -> Int
$sel:metricDefinitions:BatchCreateRumMetricDefinitionsResponse' :: BatchCreateRumMetricDefinitionsResponse -> Maybe [MetricDefinition]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [MetricDefinition]
metricDefinitions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [BatchCreateRumMetricDefinitionsError]
errors