{-# 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.IoT.ListMetricValues -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Lists the values reported for an IoT Device Defender metric (device-side -- metric, cloud-side metric, or custom metric) by the given thing during -- the specified time period. -- -- This operation returns paginated results. module Amazonka.IoT.ListMetricValues ( -- * Creating a Request ListMetricValues (..), newListMetricValues, -- * Request Lenses listMetricValues_dimensionName, listMetricValues_dimensionValueOperator, listMetricValues_maxResults, listMetricValues_nextToken, listMetricValues_thingName, listMetricValues_metricName, listMetricValues_startTime, listMetricValues_endTime, -- * Destructuring the Response ListMetricValuesResponse (..), newListMetricValuesResponse, -- * Response Lenses listMetricValuesResponse_metricDatumList, listMetricValuesResponse_nextToken, listMetricValuesResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.IoT.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newListMetricValues' smart constructor. data ListMetricValues = ListMetricValues' { -- | The dimension name. dimensionName :: Prelude.Maybe Prelude.Text, -- | The dimension value operator. dimensionValueOperator :: Prelude.Maybe DimensionValueOperator, -- | The maximum number of results to return at one time. maxResults :: Prelude.Maybe Prelude.Natural, -- | The token for the next set of results. nextToken :: Prelude.Maybe Prelude.Text, -- | The name of the thing for which security profile metric values are -- returned. thingName :: Prelude.Text, -- | The name of the security profile metric for which values are returned. metricName :: Prelude.Text, -- | The start of the time period for which metric values are returned. startTime :: Data.POSIX, -- | The end of the time period for which metric values are returned. endTime :: Data.POSIX } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListMetricValues' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'dimensionName', 'listMetricValues_dimensionName' - The dimension name. -- -- 'dimensionValueOperator', 'listMetricValues_dimensionValueOperator' - The dimension value operator. -- -- 'maxResults', 'listMetricValues_maxResults' - The maximum number of results to return at one time. -- -- 'nextToken', 'listMetricValues_nextToken' - The token for the next set of results. -- -- 'thingName', 'listMetricValues_thingName' - The name of the thing for which security profile metric values are -- returned. -- -- 'metricName', 'listMetricValues_metricName' - The name of the security profile metric for which values are returned. -- -- 'startTime', 'listMetricValues_startTime' - The start of the time period for which metric values are returned. -- -- 'endTime', 'listMetricValues_endTime' - The end of the time period for which metric values are returned. newListMetricValues :: -- | 'thingName' Prelude.Text -> -- | 'metricName' Prelude.Text -> -- | 'startTime' Prelude.UTCTime -> -- | 'endTime' Prelude.UTCTime -> ListMetricValues newListMetricValues pThingName_ pMetricName_ pStartTime_ pEndTime_ = ListMetricValues' { dimensionName = Prelude.Nothing, dimensionValueOperator = Prelude.Nothing, maxResults = Prelude.Nothing, nextToken = Prelude.Nothing, thingName = pThingName_, metricName = pMetricName_, startTime = Data._Time Lens.# pStartTime_, endTime = Data._Time Lens.# pEndTime_ } -- | The dimension name. listMetricValues_dimensionName :: Lens.Lens' ListMetricValues (Prelude.Maybe Prelude.Text) listMetricValues_dimensionName = Lens.lens (\ListMetricValues' {dimensionName} -> dimensionName) (\s@ListMetricValues' {} a -> s {dimensionName = a} :: ListMetricValues) -- | The dimension value operator. listMetricValues_dimensionValueOperator :: Lens.Lens' ListMetricValues (Prelude.Maybe DimensionValueOperator) listMetricValues_dimensionValueOperator = Lens.lens (\ListMetricValues' {dimensionValueOperator} -> dimensionValueOperator) (\s@ListMetricValues' {} a -> s {dimensionValueOperator = a} :: ListMetricValues) -- | The maximum number of results to return at one time. listMetricValues_maxResults :: Lens.Lens' ListMetricValues (Prelude.Maybe Prelude.Natural) listMetricValues_maxResults = Lens.lens (\ListMetricValues' {maxResults} -> maxResults) (\s@ListMetricValues' {} a -> s {maxResults = a} :: ListMetricValues) -- | The token for the next set of results. listMetricValues_nextToken :: Lens.Lens' ListMetricValues (Prelude.Maybe Prelude.Text) listMetricValues_nextToken = Lens.lens (\ListMetricValues' {nextToken} -> nextToken) (\s@ListMetricValues' {} a -> s {nextToken = a} :: ListMetricValues) -- | The name of the thing for which security profile metric values are -- returned. listMetricValues_thingName :: Lens.Lens' ListMetricValues Prelude.Text listMetricValues_thingName = Lens.lens (\ListMetricValues' {thingName} -> thingName) (\s@ListMetricValues' {} a -> s {thingName = a} :: ListMetricValues) -- | The name of the security profile metric for which values are returned. listMetricValues_metricName :: Lens.Lens' ListMetricValues Prelude.Text listMetricValues_metricName = Lens.lens (\ListMetricValues' {metricName} -> metricName) (\s@ListMetricValues' {} a -> s {metricName = a} :: ListMetricValues) -- | The start of the time period for which metric values are returned. listMetricValues_startTime :: Lens.Lens' ListMetricValues Prelude.UTCTime listMetricValues_startTime = Lens.lens (\ListMetricValues' {startTime} -> startTime) (\s@ListMetricValues' {} a -> s {startTime = a} :: ListMetricValues) Prelude.. Data._Time -- | The end of the time period for which metric values are returned. listMetricValues_endTime :: Lens.Lens' ListMetricValues Prelude.UTCTime listMetricValues_endTime = Lens.lens (\ListMetricValues' {endTime} -> endTime) (\s@ListMetricValues' {} a -> s {endTime = a} :: ListMetricValues) Prelude.. Data._Time instance Core.AWSPager ListMetricValues where page rq rs | Core.stop ( rs Lens.^? listMetricValuesResponse_nextToken Prelude.. Lens._Just ) = Prelude.Nothing | Core.stop ( rs Lens.^? listMetricValuesResponse_metricDatumList Prelude.. Lens._Just ) = Prelude.Nothing | Prelude.otherwise = Prelude.Just Prelude.$ rq Prelude.& listMetricValues_nextToken Lens..~ rs Lens.^? listMetricValuesResponse_nextToken Prelude.. Lens._Just instance Core.AWSRequest ListMetricValues where type AWSResponse ListMetricValues = ListMetricValuesResponse request overrides = Request.get (overrides defaultService) response = Response.receiveJSON ( \s h x -> ListMetricValuesResponse' Prelude.<$> ( x Data..?> "metricDatumList" Core..!@ Prelude.mempty ) Prelude.<*> (x Data..?> "nextToken") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable ListMetricValues where hashWithSalt _salt ListMetricValues' {..} = _salt `Prelude.hashWithSalt` dimensionName `Prelude.hashWithSalt` dimensionValueOperator `Prelude.hashWithSalt` maxResults `Prelude.hashWithSalt` nextToken `Prelude.hashWithSalt` thingName `Prelude.hashWithSalt` metricName `Prelude.hashWithSalt` startTime `Prelude.hashWithSalt` endTime instance Prelude.NFData ListMetricValues where rnf ListMetricValues' {..} = Prelude.rnf dimensionName `Prelude.seq` Prelude.rnf dimensionValueOperator `Prelude.seq` Prelude.rnf maxResults `Prelude.seq` Prelude.rnf nextToken `Prelude.seq` Prelude.rnf thingName `Prelude.seq` Prelude.rnf metricName `Prelude.seq` Prelude.rnf startTime `Prelude.seq` Prelude.rnf endTime instance Data.ToHeaders ListMetricValues where toHeaders = Prelude.const Prelude.mempty instance Data.ToPath ListMetricValues where toPath = Prelude.const "/metric-values" instance Data.ToQuery ListMetricValues where toQuery ListMetricValues' {..} = Prelude.mconcat [ "dimensionName" Data.=: dimensionName, "dimensionValueOperator" Data.=: dimensionValueOperator, "maxResults" Data.=: maxResults, "nextToken" Data.=: nextToken, "thingName" Data.=: thingName, "metricName" Data.=: metricName, "startTime" Data.=: startTime, "endTime" Data.=: endTime ] -- | /See:/ 'newListMetricValuesResponse' smart constructor. data ListMetricValuesResponse = ListMetricValuesResponse' { -- | The data the thing reports for the metric during the specified time -- period. metricDatumList :: Prelude.Maybe [MetricDatum], -- | A token that can be used to retrieve the next set of results, or @null@ -- if there are no additional results. nextToken :: Prelude.Maybe Prelude.Text, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ListMetricValuesResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'metricDatumList', 'listMetricValuesResponse_metricDatumList' - The data the thing reports for the metric during the specified time -- period. -- -- 'nextToken', 'listMetricValuesResponse_nextToken' - A token that can be used to retrieve the next set of results, or @null@ -- if there are no additional results. -- -- 'httpStatus', 'listMetricValuesResponse_httpStatus' - The response's http status code. newListMetricValuesResponse :: -- | 'httpStatus' Prelude.Int -> ListMetricValuesResponse newListMetricValuesResponse pHttpStatus_ = ListMetricValuesResponse' { metricDatumList = Prelude.Nothing, nextToken = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The data the thing reports for the metric during the specified time -- period. listMetricValuesResponse_metricDatumList :: Lens.Lens' ListMetricValuesResponse (Prelude.Maybe [MetricDatum]) listMetricValuesResponse_metricDatumList = Lens.lens (\ListMetricValuesResponse' {metricDatumList} -> metricDatumList) (\s@ListMetricValuesResponse' {} a -> s {metricDatumList = a} :: ListMetricValuesResponse) Prelude.. Lens.mapping Lens.coerced -- | A token that can be used to retrieve the next set of results, or @null@ -- if there are no additional results. listMetricValuesResponse_nextToken :: Lens.Lens' ListMetricValuesResponse (Prelude.Maybe Prelude.Text) listMetricValuesResponse_nextToken = Lens.lens (\ListMetricValuesResponse' {nextToken} -> nextToken) (\s@ListMetricValuesResponse' {} a -> s {nextToken = a} :: ListMetricValuesResponse) -- | The response's http status code. listMetricValuesResponse_httpStatus :: Lens.Lens' ListMetricValuesResponse Prelude.Int listMetricValuesResponse_httpStatus = Lens.lens (\ListMetricValuesResponse' {httpStatus} -> httpStatus) (\s@ListMetricValuesResponse' {} a -> s {httpStatus = a} :: ListMetricValuesResponse) instance Prelude.NFData ListMetricValuesResponse where rnf ListMetricValuesResponse' {..} = Prelude.rnf metricDatumList `Prelude.seq` Prelude.rnf nextToken `Prelude.seq` Prelude.rnf httpStatus