{-# 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.IoTSiteWise.GetInterpolatedAssetPropertyValues
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Get interpolated values for an asset property for a specified time
-- interval, during a period of time. If your time series is missing data
-- points during the specified time interval, you can use interpolation to
-- estimate the missing data.
--
-- For example, you can use this operation to return the interpolated
-- temperature values for a wind turbine every 24 hours over a duration of
-- 7 days.
--
-- To identify an asset property, you must specify one of the following:
--
-- -   The @assetId@ and @propertyId@ of an asset property.
--
-- -   A @propertyAlias@, which is a data stream alias (for example,
--     @\/company\/windfarm\/3\/turbine\/7\/temperature@). To define an
--     asset property\'s alias, see
--     <https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html UpdateAssetProperty>.
--
-- This operation returns paginated results.
module Amazonka.IoTSiteWise.GetInterpolatedAssetPropertyValues
  ( -- * Creating a Request
    GetInterpolatedAssetPropertyValues (..),
    newGetInterpolatedAssetPropertyValues,

    -- * Request Lenses
    getInterpolatedAssetPropertyValues_assetId,
    getInterpolatedAssetPropertyValues_endTimeOffsetInNanos,
    getInterpolatedAssetPropertyValues_intervalWindowInSeconds,
    getInterpolatedAssetPropertyValues_maxResults,
    getInterpolatedAssetPropertyValues_nextToken,
    getInterpolatedAssetPropertyValues_propertyAlias,
    getInterpolatedAssetPropertyValues_propertyId,
    getInterpolatedAssetPropertyValues_startTimeOffsetInNanos,
    getInterpolatedAssetPropertyValues_startTimeInSeconds,
    getInterpolatedAssetPropertyValues_endTimeInSeconds,
    getInterpolatedAssetPropertyValues_quality,
    getInterpolatedAssetPropertyValues_intervalInSeconds,
    getInterpolatedAssetPropertyValues_type,

    -- * Destructuring the Response
    GetInterpolatedAssetPropertyValuesResponse (..),
    newGetInterpolatedAssetPropertyValuesResponse,

    -- * Response Lenses
    getInterpolatedAssetPropertyValuesResponse_nextToken,
    getInterpolatedAssetPropertyValuesResponse_httpStatus,
    getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoTSiteWise.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newGetInterpolatedAssetPropertyValues' smart constructor.
data GetInterpolatedAssetPropertyValues = GetInterpolatedAssetPropertyValues'
  { -- | The ID of the asset.
    GetInterpolatedAssetPropertyValues -> Maybe Text
assetId :: Prelude.Maybe Prelude.Text,
    -- | The nanosecond offset converted from @endTimeInSeconds@.
    GetInterpolatedAssetPropertyValues -> Maybe Natural
endTimeOffsetInNanos :: Prelude.Maybe Prelude.Natural,
    -- | The query interval for the window, in seconds. IoT SiteWise computes
    -- each interpolated value by using data points from the timestamp of each
    -- interval, minus the window to the timestamp of each interval plus the
    -- window. If not specified, the window ranges between the start time minus
    -- the interval and the end time plus the interval.
    --
    -- -   If you specify a value for the @intervalWindowInSeconds@ parameter,
    --     the value for the @type@ parameter must be @LINEAR_INTERPOLATION@.
    --
    -- -   If a data point isn\'t found during the specified query window, IoT
    --     SiteWise won\'t return an interpolated value for the interval. This
    --     indicates that there\'s a gap in the ingested data points.
    --
    -- For example, you can get the interpolated temperature values for a wind
    -- turbine every 24 hours over a duration of 7 days. If the interpolation
    -- starts on July 1, 2021, at 9 AM with a window of 2 hours, IoT SiteWise
    -- uses the data points from 7 AM (9 AM minus 2 hours) to 11 AM (9 AM plus
    -- 2 hours) on July 2, 2021 to compute the first interpolated value. Next,
    -- IoT SiteWise uses the data points from 7 AM (9 AM minus 2 hours) to 11
    -- AM (9 AM plus 2 hours) on July 3, 2021 to compute the second
    -- interpolated value, and so on.
    GetInterpolatedAssetPropertyValues -> Maybe Natural
intervalWindowInSeconds :: Prelude.Maybe Prelude.Natural,
    -- | The maximum number of results to return for each paginated request. If
    -- not specified, the default value is 10.
    GetInterpolatedAssetPropertyValues -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token to be used for the next set of paginated results.
    GetInterpolatedAssetPropertyValues -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The alias that identifies the property, such as an OPC-UA server data
    -- stream path (for example,
    -- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more
    -- information, see
    -- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>
    -- in the /IoT SiteWise User Guide/.
    GetInterpolatedAssetPropertyValues -> Maybe Text
propertyAlias :: Prelude.Maybe Prelude.Text,
    -- | The ID of the asset property.
    GetInterpolatedAssetPropertyValues -> Maybe Text
propertyId :: Prelude.Maybe Prelude.Text,
    -- | The nanosecond offset converted from @startTimeInSeconds@.
    GetInterpolatedAssetPropertyValues -> Maybe Natural
startTimeOffsetInNanos :: Prelude.Maybe Prelude.Natural,
    -- | The exclusive start of the range from which to interpolate data,
    -- expressed in seconds in Unix epoch time.
    GetInterpolatedAssetPropertyValues -> Natural
startTimeInSeconds :: Prelude.Natural,
    -- | The inclusive end of the range from which to interpolate data, expressed
    -- in seconds in Unix epoch time.
    GetInterpolatedAssetPropertyValues -> Natural
endTimeInSeconds :: Prelude.Natural,
    -- | The quality of the asset property value. You can use this parameter as a
    -- filter to choose only the asset property values that have a specific
    -- quality.
    GetInterpolatedAssetPropertyValues -> Quality
quality :: Quality,
    -- | The time interval in seconds over which to interpolate data. Each
    -- interval starts when the previous one ends.
    GetInterpolatedAssetPropertyValues -> Natural
intervalInSeconds :: Prelude.Natural,
    -- | The interpolation type.
    --
    -- Valid values: @LINEAR_INTERPOLATION | LOCF_INTERPOLATION@
    --
    -- -   @LINEAR_INTERPOLATION@ – Estimates missing data using
    --     <https://en.wikipedia.org/wiki/Linear_interpolation linear interpolation>.
    --
    --     For example, you can use this operation to return the interpolated
    --     temperature values for a wind turbine every 24 hours over a duration
    --     of 7 days. If the interpolation starts July 1, 2021, at 9 AM, IoT
    --     SiteWise returns the first interpolated value on July 2, 2021, at 9
    --     AM, the second interpolated value on July 3, 2021, at 9 AM, and so
    --     on.
    --
    -- -   @LOCF_INTERPOLATION@ – Estimates missing data using last observation
    --     carried forward interpolation
    --
    --     If no data point is found for an interval, IoT SiteWise returns the
    --     last observed data point for the previous interval and carries
    --     forward this interpolated value until a new data point is found.
    --
    --     For example, you can get the state of an on-off valve every 24 hours
    --     over a duration of 7 days. If the interpolation starts July 1, 2021,
    --     at 9 AM, IoT SiteWise returns the last observed data point between
    --     July 1, 2021, at 9 AM and July 2, 2021, at 9 AM as the first
    --     interpolated value. If a data point isn\'t found after 9 AM on July
    --     2, 2021, IoT SiteWise uses the same interpolated value for the rest
    --     of the days.
    GetInterpolatedAssetPropertyValues -> Text
type' :: Prelude.Text
  }
  deriving (GetInterpolatedAssetPropertyValues
-> GetInterpolatedAssetPropertyValues -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetInterpolatedAssetPropertyValues
-> GetInterpolatedAssetPropertyValues -> Bool
$c/= :: GetInterpolatedAssetPropertyValues
-> GetInterpolatedAssetPropertyValues -> Bool
== :: GetInterpolatedAssetPropertyValues
-> GetInterpolatedAssetPropertyValues -> Bool
$c== :: GetInterpolatedAssetPropertyValues
-> GetInterpolatedAssetPropertyValues -> Bool
Prelude.Eq, ReadPrec [GetInterpolatedAssetPropertyValues]
ReadPrec GetInterpolatedAssetPropertyValues
Int -> ReadS GetInterpolatedAssetPropertyValues
ReadS [GetInterpolatedAssetPropertyValues]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetInterpolatedAssetPropertyValues]
$creadListPrec :: ReadPrec [GetInterpolatedAssetPropertyValues]
readPrec :: ReadPrec GetInterpolatedAssetPropertyValues
$creadPrec :: ReadPrec GetInterpolatedAssetPropertyValues
readList :: ReadS [GetInterpolatedAssetPropertyValues]
$creadList :: ReadS [GetInterpolatedAssetPropertyValues]
readsPrec :: Int -> ReadS GetInterpolatedAssetPropertyValues
$creadsPrec :: Int -> ReadS GetInterpolatedAssetPropertyValues
Prelude.Read, Int -> GetInterpolatedAssetPropertyValues -> ShowS
[GetInterpolatedAssetPropertyValues] -> ShowS
GetInterpolatedAssetPropertyValues -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetInterpolatedAssetPropertyValues] -> ShowS
$cshowList :: [GetInterpolatedAssetPropertyValues] -> ShowS
show :: GetInterpolatedAssetPropertyValues -> String
$cshow :: GetInterpolatedAssetPropertyValues -> String
showsPrec :: Int -> GetInterpolatedAssetPropertyValues -> ShowS
$cshowsPrec :: Int -> GetInterpolatedAssetPropertyValues -> ShowS
Prelude.Show, forall x.
Rep GetInterpolatedAssetPropertyValues x
-> GetInterpolatedAssetPropertyValues
forall x.
GetInterpolatedAssetPropertyValues
-> Rep GetInterpolatedAssetPropertyValues x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetInterpolatedAssetPropertyValues x
-> GetInterpolatedAssetPropertyValues
$cfrom :: forall x.
GetInterpolatedAssetPropertyValues
-> Rep GetInterpolatedAssetPropertyValues x
Prelude.Generic)

-- |
-- Create a value of 'GetInterpolatedAssetPropertyValues' 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:
--
-- 'assetId', 'getInterpolatedAssetPropertyValues_assetId' - The ID of the asset.
--
-- 'endTimeOffsetInNanos', 'getInterpolatedAssetPropertyValues_endTimeOffsetInNanos' - The nanosecond offset converted from @endTimeInSeconds@.
--
-- 'intervalWindowInSeconds', 'getInterpolatedAssetPropertyValues_intervalWindowInSeconds' - The query interval for the window, in seconds. IoT SiteWise computes
-- each interpolated value by using data points from the timestamp of each
-- interval, minus the window to the timestamp of each interval plus the
-- window. If not specified, the window ranges between the start time minus
-- the interval and the end time plus the interval.
--
-- -   If you specify a value for the @intervalWindowInSeconds@ parameter,
--     the value for the @type@ parameter must be @LINEAR_INTERPOLATION@.
--
-- -   If a data point isn\'t found during the specified query window, IoT
--     SiteWise won\'t return an interpolated value for the interval. This
--     indicates that there\'s a gap in the ingested data points.
--
-- For example, you can get the interpolated temperature values for a wind
-- turbine every 24 hours over a duration of 7 days. If the interpolation
-- starts on July 1, 2021, at 9 AM with a window of 2 hours, IoT SiteWise
-- uses the data points from 7 AM (9 AM minus 2 hours) to 11 AM (9 AM plus
-- 2 hours) on July 2, 2021 to compute the first interpolated value. Next,
-- IoT SiteWise uses the data points from 7 AM (9 AM minus 2 hours) to 11
-- AM (9 AM plus 2 hours) on July 3, 2021 to compute the second
-- interpolated value, and so on.
--
-- 'maxResults', 'getInterpolatedAssetPropertyValues_maxResults' - The maximum number of results to return for each paginated request. If
-- not specified, the default value is 10.
--
-- 'nextToken', 'getInterpolatedAssetPropertyValues_nextToken' - The token to be used for the next set of paginated results.
--
-- 'propertyAlias', 'getInterpolatedAssetPropertyValues_propertyAlias' - The alias that identifies the property, such as an OPC-UA server data
-- stream path (for example,
-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more
-- information, see
-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>
-- in the /IoT SiteWise User Guide/.
--
-- 'propertyId', 'getInterpolatedAssetPropertyValues_propertyId' - The ID of the asset property.
--
-- 'startTimeOffsetInNanos', 'getInterpolatedAssetPropertyValues_startTimeOffsetInNanos' - The nanosecond offset converted from @startTimeInSeconds@.
--
-- 'startTimeInSeconds', 'getInterpolatedAssetPropertyValues_startTimeInSeconds' - The exclusive start of the range from which to interpolate data,
-- expressed in seconds in Unix epoch time.
--
-- 'endTimeInSeconds', 'getInterpolatedAssetPropertyValues_endTimeInSeconds' - The inclusive end of the range from which to interpolate data, expressed
-- in seconds in Unix epoch time.
--
-- 'quality', 'getInterpolatedAssetPropertyValues_quality' - The quality of the asset property value. You can use this parameter as a
-- filter to choose only the asset property values that have a specific
-- quality.
--
-- 'intervalInSeconds', 'getInterpolatedAssetPropertyValues_intervalInSeconds' - The time interval in seconds over which to interpolate data. Each
-- interval starts when the previous one ends.
--
-- 'type'', 'getInterpolatedAssetPropertyValues_type' - The interpolation type.
--
-- Valid values: @LINEAR_INTERPOLATION | LOCF_INTERPOLATION@
--
-- -   @LINEAR_INTERPOLATION@ – Estimates missing data using
--     <https://en.wikipedia.org/wiki/Linear_interpolation linear interpolation>.
--
--     For example, you can use this operation to return the interpolated
--     temperature values for a wind turbine every 24 hours over a duration
--     of 7 days. If the interpolation starts July 1, 2021, at 9 AM, IoT
--     SiteWise returns the first interpolated value on July 2, 2021, at 9
--     AM, the second interpolated value on July 3, 2021, at 9 AM, and so
--     on.
--
-- -   @LOCF_INTERPOLATION@ – Estimates missing data using last observation
--     carried forward interpolation
--
--     If no data point is found for an interval, IoT SiteWise returns the
--     last observed data point for the previous interval and carries
--     forward this interpolated value until a new data point is found.
--
--     For example, you can get the state of an on-off valve every 24 hours
--     over a duration of 7 days. If the interpolation starts July 1, 2021,
--     at 9 AM, IoT SiteWise returns the last observed data point between
--     July 1, 2021, at 9 AM and July 2, 2021, at 9 AM as the first
--     interpolated value. If a data point isn\'t found after 9 AM on July
--     2, 2021, IoT SiteWise uses the same interpolated value for the rest
--     of the days.
newGetInterpolatedAssetPropertyValues ::
  -- | 'startTimeInSeconds'
  Prelude.Natural ->
  -- | 'endTimeInSeconds'
  Prelude.Natural ->
  -- | 'quality'
  Quality ->
  -- | 'intervalInSeconds'
  Prelude.Natural ->
  -- | 'type''
  Prelude.Text ->
  GetInterpolatedAssetPropertyValues
newGetInterpolatedAssetPropertyValues :: Natural
-> Natural
-> Quality
-> Natural
-> Text
-> GetInterpolatedAssetPropertyValues
newGetInterpolatedAssetPropertyValues
  Natural
pStartTimeInSeconds_
  Natural
pEndTimeInSeconds_
  Quality
pQuality_
  Natural
pIntervalInSeconds_
  Text
pType_ =
    GetInterpolatedAssetPropertyValues'
      { $sel:assetId:GetInterpolatedAssetPropertyValues' :: Maybe Text
assetId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:endTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: Maybe Natural
endTimeOffsetInNanos = forall a. Maybe a
Prelude.Nothing,
        $sel:intervalWindowInSeconds:GetInterpolatedAssetPropertyValues' :: Maybe Natural
intervalWindowInSeconds =
          forall a. Maybe a
Prelude.Nothing,
        $sel:maxResults:GetInterpolatedAssetPropertyValues' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:GetInterpolatedAssetPropertyValues' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:propertyAlias:GetInterpolatedAssetPropertyValues' :: Maybe Text
propertyAlias = forall a. Maybe a
Prelude.Nothing,
        $sel:propertyId:GetInterpolatedAssetPropertyValues' :: Maybe Text
propertyId = forall a. Maybe a
Prelude.Nothing,
        $sel:startTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: Maybe Natural
startTimeOffsetInNanos =
          forall a. Maybe a
Prelude.Nothing,
        $sel:startTimeInSeconds:GetInterpolatedAssetPropertyValues' :: Natural
startTimeInSeconds =
          Natural
pStartTimeInSeconds_,
        $sel:endTimeInSeconds:GetInterpolatedAssetPropertyValues' :: Natural
endTimeInSeconds = Natural
pEndTimeInSeconds_,
        $sel:quality:GetInterpolatedAssetPropertyValues' :: Quality
quality = Quality
pQuality_,
        $sel:intervalInSeconds:GetInterpolatedAssetPropertyValues' :: Natural
intervalInSeconds = Natural
pIntervalInSeconds_,
        $sel:type':GetInterpolatedAssetPropertyValues' :: Text
type' = Text
pType_
      }

-- | The ID of the asset.
getInterpolatedAssetPropertyValues_assetId :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Text)
getInterpolatedAssetPropertyValues_assetId :: Lens' GetInterpolatedAssetPropertyValues (Maybe Text)
getInterpolatedAssetPropertyValues_assetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Maybe Text
assetId :: Maybe Text
$sel:assetId:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
assetId} -> Maybe Text
assetId) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Maybe Text
a -> GetInterpolatedAssetPropertyValues
s {$sel:assetId:GetInterpolatedAssetPropertyValues' :: Maybe Text
assetId = Maybe Text
a} :: GetInterpolatedAssetPropertyValues)

-- | The nanosecond offset converted from @endTimeInSeconds@.
getInterpolatedAssetPropertyValues_endTimeOffsetInNanos :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Natural)
getInterpolatedAssetPropertyValues_endTimeOffsetInNanos :: Lens' GetInterpolatedAssetPropertyValues (Maybe Natural)
getInterpolatedAssetPropertyValues_endTimeOffsetInNanos = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Maybe Natural
endTimeOffsetInNanos :: Maybe Natural
$sel:endTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
endTimeOffsetInNanos} -> Maybe Natural
endTimeOffsetInNanos) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Maybe Natural
a -> GetInterpolatedAssetPropertyValues
s {$sel:endTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: Maybe Natural
endTimeOffsetInNanos = Maybe Natural
a} :: GetInterpolatedAssetPropertyValues)

-- | The query interval for the window, in seconds. IoT SiteWise computes
-- each interpolated value by using data points from the timestamp of each
-- interval, minus the window to the timestamp of each interval plus the
-- window. If not specified, the window ranges between the start time minus
-- the interval and the end time plus the interval.
--
-- -   If you specify a value for the @intervalWindowInSeconds@ parameter,
--     the value for the @type@ parameter must be @LINEAR_INTERPOLATION@.
--
-- -   If a data point isn\'t found during the specified query window, IoT
--     SiteWise won\'t return an interpolated value for the interval. This
--     indicates that there\'s a gap in the ingested data points.
--
-- For example, you can get the interpolated temperature values for a wind
-- turbine every 24 hours over a duration of 7 days. If the interpolation
-- starts on July 1, 2021, at 9 AM with a window of 2 hours, IoT SiteWise
-- uses the data points from 7 AM (9 AM minus 2 hours) to 11 AM (9 AM plus
-- 2 hours) on July 2, 2021 to compute the first interpolated value. Next,
-- IoT SiteWise uses the data points from 7 AM (9 AM minus 2 hours) to 11
-- AM (9 AM plus 2 hours) on July 3, 2021 to compute the second
-- interpolated value, and so on.
getInterpolatedAssetPropertyValues_intervalWindowInSeconds :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Natural)
getInterpolatedAssetPropertyValues_intervalWindowInSeconds :: Lens' GetInterpolatedAssetPropertyValues (Maybe Natural)
getInterpolatedAssetPropertyValues_intervalWindowInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Maybe Natural
intervalWindowInSeconds :: Maybe Natural
$sel:intervalWindowInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
intervalWindowInSeconds} -> Maybe Natural
intervalWindowInSeconds) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Maybe Natural
a -> GetInterpolatedAssetPropertyValues
s {$sel:intervalWindowInSeconds:GetInterpolatedAssetPropertyValues' :: Maybe Natural
intervalWindowInSeconds = Maybe Natural
a} :: GetInterpolatedAssetPropertyValues)

-- | The maximum number of results to return for each paginated request. If
-- not specified, the default value is 10.
getInterpolatedAssetPropertyValues_maxResults :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Natural)
getInterpolatedAssetPropertyValues_maxResults :: Lens' GetInterpolatedAssetPropertyValues (Maybe Natural)
getInterpolatedAssetPropertyValues_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Maybe Natural
a -> GetInterpolatedAssetPropertyValues
s {$sel:maxResults:GetInterpolatedAssetPropertyValues' :: Maybe Natural
maxResults = Maybe Natural
a} :: GetInterpolatedAssetPropertyValues)

-- | The token to be used for the next set of paginated results.
getInterpolatedAssetPropertyValues_nextToken :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Text)
getInterpolatedAssetPropertyValues_nextToken :: Lens' GetInterpolatedAssetPropertyValues (Maybe Text)
getInterpolatedAssetPropertyValues_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Maybe Text
a -> GetInterpolatedAssetPropertyValues
s {$sel:nextToken:GetInterpolatedAssetPropertyValues' :: Maybe Text
nextToken = Maybe Text
a} :: GetInterpolatedAssetPropertyValues)

-- | The alias that identifies the property, such as an OPC-UA server data
-- stream path (for example,
-- @\/company\/windfarm\/3\/turbine\/7\/temperature@). For more
-- information, see
-- <https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html Mapping industrial data streams to asset properties>
-- in the /IoT SiteWise User Guide/.
getInterpolatedAssetPropertyValues_propertyAlias :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Text)
getInterpolatedAssetPropertyValues_propertyAlias :: Lens' GetInterpolatedAssetPropertyValues (Maybe Text)
getInterpolatedAssetPropertyValues_propertyAlias = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Maybe Text
propertyAlias :: Maybe Text
$sel:propertyAlias:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
propertyAlias} -> Maybe Text
propertyAlias) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Maybe Text
a -> GetInterpolatedAssetPropertyValues
s {$sel:propertyAlias:GetInterpolatedAssetPropertyValues' :: Maybe Text
propertyAlias = Maybe Text
a} :: GetInterpolatedAssetPropertyValues)

-- | The ID of the asset property.
getInterpolatedAssetPropertyValues_propertyId :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Text)
getInterpolatedAssetPropertyValues_propertyId :: Lens' GetInterpolatedAssetPropertyValues (Maybe Text)
getInterpolatedAssetPropertyValues_propertyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Maybe Text
propertyId :: Maybe Text
$sel:propertyId:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
propertyId} -> Maybe Text
propertyId) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Maybe Text
a -> GetInterpolatedAssetPropertyValues
s {$sel:propertyId:GetInterpolatedAssetPropertyValues' :: Maybe Text
propertyId = Maybe Text
a} :: GetInterpolatedAssetPropertyValues)

-- | The nanosecond offset converted from @startTimeInSeconds@.
getInterpolatedAssetPropertyValues_startTimeOffsetInNanos :: Lens.Lens' GetInterpolatedAssetPropertyValues (Prelude.Maybe Prelude.Natural)
getInterpolatedAssetPropertyValues_startTimeOffsetInNanos :: Lens' GetInterpolatedAssetPropertyValues (Maybe Natural)
getInterpolatedAssetPropertyValues_startTimeOffsetInNanos = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Maybe Natural
startTimeOffsetInNanos :: Maybe Natural
$sel:startTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
startTimeOffsetInNanos} -> Maybe Natural
startTimeOffsetInNanos) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Maybe Natural
a -> GetInterpolatedAssetPropertyValues
s {$sel:startTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: Maybe Natural
startTimeOffsetInNanos = Maybe Natural
a} :: GetInterpolatedAssetPropertyValues)

-- | The exclusive start of the range from which to interpolate data,
-- expressed in seconds in Unix epoch time.
getInterpolatedAssetPropertyValues_startTimeInSeconds :: Lens.Lens' GetInterpolatedAssetPropertyValues Prelude.Natural
getInterpolatedAssetPropertyValues_startTimeInSeconds :: Lens' GetInterpolatedAssetPropertyValues Natural
getInterpolatedAssetPropertyValues_startTimeInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Natural
startTimeInSeconds :: Natural
$sel:startTimeInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
startTimeInSeconds} -> Natural
startTimeInSeconds) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Natural
a -> GetInterpolatedAssetPropertyValues
s {$sel:startTimeInSeconds:GetInterpolatedAssetPropertyValues' :: Natural
startTimeInSeconds = Natural
a} :: GetInterpolatedAssetPropertyValues)

-- | The inclusive end of the range from which to interpolate data, expressed
-- in seconds in Unix epoch time.
getInterpolatedAssetPropertyValues_endTimeInSeconds :: Lens.Lens' GetInterpolatedAssetPropertyValues Prelude.Natural
getInterpolatedAssetPropertyValues_endTimeInSeconds :: Lens' GetInterpolatedAssetPropertyValues Natural
getInterpolatedAssetPropertyValues_endTimeInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Natural
endTimeInSeconds :: Natural
$sel:endTimeInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
endTimeInSeconds} -> Natural
endTimeInSeconds) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Natural
a -> GetInterpolatedAssetPropertyValues
s {$sel:endTimeInSeconds:GetInterpolatedAssetPropertyValues' :: Natural
endTimeInSeconds = Natural
a} :: GetInterpolatedAssetPropertyValues)

-- | The quality of the asset property value. You can use this parameter as a
-- filter to choose only the asset property values that have a specific
-- quality.
getInterpolatedAssetPropertyValues_quality :: Lens.Lens' GetInterpolatedAssetPropertyValues Quality
getInterpolatedAssetPropertyValues_quality :: Lens' GetInterpolatedAssetPropertyValues Quality
getInterpolatedAssetPropertyValues_quality = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Quality
quality :: Quality
$sel:quality:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Quality
quality} -> Quality
quality) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Quality
a -> GetInterpolatedAssetPropertyValues
s {$sel:quality:GetInterpolatedAssetPropertyValues' :: Quality
quality = Quality
a} :: GetInterpolatedAssetPropertyValues)

-- | The time interval in seconds over which to interpolate data. Each
-- interval starts when the previous one ends.
getInterpolatedAssetPropertyValues_intervalInSeconds :: Lens.Lens' GetInterpolatedAssetPropertyValues Prelude.Natural
getInterpolatedAssetPropertyValues_intervalInSeconds :: Lens' GetInterpolatedAssetPropertyValues Natural
getInterpolatedAssetPropertyValues_intervalInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Natural
intervalInSeconds :: Natural
$sel:intervalInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
intervalInSeconds} -> Natural
intervalInSeconds) (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Natural
a -> GetInterpolatedAssetPropertyValues
s {$sel:intervalInSeconds:GetInterpolatedAssetPropertyValues' :: Natural
intervalInSeconds = Natural
a} :: GetInterpolatedAssetPropertyValues)

-- | The interpolation type.
--
-- Valid values: @LINEAR_INTERPOLATION | LOCF_INTERPOLATION@
--
-- -   @LINEAR_INTERPOLATION@ – Estimates missing data using
--     <https://en.wikipedia.org/wiki/Linear_interpolation linear interpolation>.
--
--     For example, you can use this operation to return the interpolated
--     temperature values for a wind turbine every 24 hours over a duration
--     of 7 days. If the interpolation starts July 1, 2021, at 9 AM, IoT
--     SiteWise returns the first interpolated value on July 2, 2021, at 9
--     AM, the second interpolated value on July 3, 2021, at 9 AM, and so
--     on.
--
-- -   @LOCF_INTERPOLATION@ – Estimates missing data using last observation
--     carried forward interpolation
--
--     If no data point is found for an interval, IoT SiteWise returns the
--     last observed data point for the previous interval and carries
--     forward this interpolated value until a new data point is found.
--
--     For example, you can get the state of an on-off valve every 24 hours
--     over a duration of 7 days. If the interpolation starts July 1, 2021,
--     at 9 AM, IoT SiteWise returns the last observed data point between
--     July 1, 2021, at 9 AM and July 2, 2021, at 9 AM as the first
--     interpolated value. If a data point isn\'t found after 9 AM on July
--     2, 2021, IoT SiteWise uses the same interpolated value for the rest
--     of the days.
getInterpolatedAssetPropertyValues_type :: Lens.Lens' GetInterpolatedAssetPropertyValues Prelude.Text
getInterpolatedAssetPropertyValues_type :: Lens' GetInterpolatedAssetPropertyValues Text
getInterpolatedAssetPropertyValues_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValues' {Text
type' :: Text
$sel:type':GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Text
type'} -> Text
type') (\s :: GetInterpolatedAssetPropertyValues
s@GetInterpolatedAssetPropertyValues' {} Text
a -> GetInterpolatedAssetPropertyValues
s {$sel:type':GetInterpolatedAssetPropertyValues' :: Text
type' = Text
a} :: GetInterpolatedAssetPropertyValues)

instance
  Core.AWSPager
    GetInterpolatedAssetPropertyValues
  where
  page :: GetInterpolatedAssetPropertyValues
-> AWSResponse GetInterpolatedAssetPropertyValues
-> Maybe GetInterpolatedAssetPropertyValues
page GetInterpolatedAssetPropertyValues
rq AWSResponse GetInterpolatedAssetPropertyValues
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetInterpolatedAssetPropertyValues
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetInterpolatedAssetPropertyValuesResponse (Maybe Text)
getInterpolatedAssetPropertyValuesResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse GetInterpolatedAssetPropertyValues
rs
            forall s a. s -> Getting a s a -> a
Lens.^. Lens'
  GetInterpolatedAssetPropertyValuesResponse
  [InterpolatedAssetPropertyValue]
getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ GetInterpolatedAssetPropertyValues
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' GetInterpolatedAssetPropertyValues (Maybe Text)
getInterpolatedAssetPropertyValues_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse GetInterpolatedAssetPropertyValues
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' GetInterpolatedAssetPropertyValuesResponse (Maybe Text)
getInterpolatedAssetPropertyValuesResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance
  Core.AWSRequest
    GetInterpolatedAssetPropertyValues
  where
  type
    AWSResponse GetInterpolatedAssetPropertyValues =
      GetInterpolatedAssetPropertyValuesResponse
  request :: (Service -> Service)
-> GetInterpolatedAssetPropertyValues
-> Request GetInterpolatedAssetPropertyValues
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetInterpolatedAssetPropertyValues
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetInterpolatedAssetPropertyValues)))
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 Text
-> Int
-> [InterpolatedAssetPropertyValue]
-> GetInterpolatedAssetPropertyValuesResponse
GetInterpolatedAssetPropertyValuesResponse'
            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
"nextToken")
            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
"interpolatedAssetPropertyValues"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance
  Prelude.Hashable
    GetInterpolatedAssetPropertyValues
  where
  hashWithSalt :: Int -> GetInterpolatedAssetPropertyValues -> Int
hashWithSalt
    Int
_salt
    GetInterpolatedAssetPropertyValues' {Natural
Maybe Natural
Maybe Text
Text
Quality
type' :: Text
intervalInSeconds :: Natural
quality :: Quality
endTimeInSeconds :: Natural
startTimeInSeconds :: Natural
startTimeOffsetInNanos :: Maybe Natural
propertyId :: Maybe Text
propertyAlias :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
intervalWindowInSeconds :: Maybe Natural
endTimeOffsetInNanos :: Maybe Natural
assetId :: Maybe Text
$sel:type':GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Text
$sel:intervalInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:quality:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Quality
$sel:endTimeInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:startTimeInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:startTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:propertyId:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:propertyAlias:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:nextToken:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:maxResults:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:intervalWindowInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:endTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:assetId:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
assetId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
endTimeOffsetInNanos
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
intervalWindowInSeconds
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
propertyAlias
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
propertyId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
startTimeOffsetInNanos
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
startTimeInSeconds
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
endTimeInSeconds
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Quality
quality
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
intervalInSeconds
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
type'

instance
  Prelude.NFData
    GetInterpolatedAssetPropertyValues
  where
  rnf :: GetInterpolatedAssetPropertyValues -> ()
rnf GetInterpolatedAssetPropertyValues' {Natural
Maybe Natural
Maybe Text
Text
Quality
type' :: Text
intervalInSeconds :: Natural
quality :: Quality
endTimeInSeconds :: Natural
startTimeInSeconds :: Natural
startTimeOffsetInNanos :: Maybe Natural
propertyId :: Maybe Text
propertyAlias :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
intervalWindowInSeconds :: Maybe Natural
endTimeOffsetInNanos :: Maybe Natural
assetId :: Maybe Text
$sel:type':GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Text
$sel:intervalInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:quality:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Quality
$sel:endTimeInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:startTimeInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:startTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:propertyId:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:propertyAlias:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:nextToken:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:maxResults:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:intervalWindowInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:endTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:assetId:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
assetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
endTimeOffsetInNanos
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
intervalWindowInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
propertyAlias
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
propertyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
startTimeOffsetInNanos
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
startTimeInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
endTimeInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Quality
quality
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
intervalInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
type'

instance
  Data.ToHeaders
    GetInterpolatedAssetPropertyValues
  where
  toHeaders :: GetInterpolatedAssetPropertyValues -> 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.ToPath
    GetInterpolatedAssetPropertyValues
  where
  toPath :: GetInterpolatedAssetPropertyValues -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/properties/interpolated"

instance
  Data.ToQuery
    GetInterpolatedAssetPropertyValues
  where
  toQuery :: GetInterpolatedAssetPropertyValues -> QueryString
toQuery GetInterpolatedAssetPropertyValues' {Natural
Maybe Natural
Maybe Text
Text
Quality
type' :: Text
intervalInSeconds :: Natural
quality :: Quality
endTimeInSeconds :: Natural
startTimeInSeconds :: Natural
startTimeOffsetInNanos :: Maybe Natural
propertyId :: Maybe Text
propertyAlias :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
intervalWindowInSeconds :: Maybe Natural
endTimeOffsetInNanos :: Maybe Natural
assetId :: Maybe Text
$sel:type':GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Text
$sel:intervalInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:quality:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Quality
$sel:endTimeInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:startTimeInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Natural
$sel:startTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:propertyId:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:propertyAlias:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:nextToken:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
$sel:maxResults:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:intervalWindowInSeconds:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:endTimeOffsetInNanos:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Natural
$sel:assetId:GetInterpolatedAssetPropertyValues' :: GetInterpolatedAssetPropertyValues -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"assetId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
assetId,
        ByteString
"endTimeOffsetInNanos" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
endTimeOffsetInNanos,
        ByteString
"intervalWindowInSeconds"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
intervalWindowInSeconds,
        ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"propertyAlias" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
propertyAlias,
        ByteString
"propertyId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
propertyId,
        ByteString
"startTimeOffsetInNanos"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
startTimeOffsetInNanos,
        ByteString
"startTimeInSeconds" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Natural
startTimeInSeconds,
        ByteString
"endTimeInSeconds" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Natural
endTimeInSeconds,
        ByteString
"quality" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Quality
quality,
        ByteString
"intervalInSeconds" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Natural
intervalInSeconds,
        ByteString
"type" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
type'
      ]

-- | /See:/ 'newGetInterpolatedAssetPropertyValuesResponse' smart constructor.
data GetInterpolatedAssetPropertyValuesResponse = GetInterpolatedAssetPropertyValuesResponse'
  { -- | The token for the next set of results, or null if there are no
    -- additional results.
    GetInterpolatedAssetPropertyValuesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetInterpolatedAssetPropertyValuesResponse -> Int
httpStatus :: Prelude.Int,
    -- | The requested interpolated values.
    GetInterpolatedAssetPropertyValuesResponse
-> [InterpolatedAssetPropertyValue]
interpolatedAssetPropertyValues :: [InterpolatedAssetPropertyValue]
  }
  deriving (GetInterpolatedAssetPropertyValuesResponse
-> GetInterpolatedAssetPropertyValuesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetInterpolatedAssetPropertyValuesResponse
-> GetInterpolatedAssetPropertyValuesResponse -> Bool
$c/= :: GetInterpolatedAssetPropertyValuesResponse
-> GetInterpolatedAssetPropertyValuesResponse -> Bool
== :: GetInterpolatedAssetPropertyValuesResponse
-> GetInterpolatedAssetPropertyValuesResponse -> Bool
$c== :: GetInterpolatedAssetPropertyValuesResponse
-> GetInterpolatedAssetPropertyValuesResponse -> Bool
Prelude.Eq, ReadPrec [GetInterpolatedAssetPropertyValuesResponse]
ReadPrec GetInterpolatedAssetPropertyValuesResponse
Int -> ReadS GetInterpolatedAssetPropertyValuesResponse
ReadS [GetInterpolatedAssetPropertyValuesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetInterpolatedAssetPropertyValuesResponse]
$creadListPrec :: ReadPrec [GetInterpolatedAssetPropertyValuesResponse]
readPrec :: ReadPrec GetInterpolatedAssetPropertyValuesResponse
$creadPrec :: ReadPrec GetInterpolatedAssetPropertyValuesResponse
readList :: ReadS [GetInterpolatedAssetPropertyValuesResponse]
$creadList :: ReadS [GetInterpolatedAssetPropertyValuesResponse]
readsPrec :: Int -> ReadS GetInterpolatedAssetPropertyValuesResponse
$creadsPrec :: Int -> ReadS GetInterpolatedAssetPropertyValuesResponse
Prelude.Read, Int -> GetInterpolatedAssetPropertyValuesResponse -> ShowS
[GetInterpolatedAssetPropertyValuesResponse] -> ShowS
GetInterpolatedAssetPropertyValuesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetInterpolatedAssetPropertyValuesResponse] -> ShowS
$cshowList :: [GetInterpolatedAssetPropertyValuesResponse] -> ShowS
show :: GetInterpolatedAssetPropertyValuesResponse -> String
$cshow :: GetInterpolatedAssetPropertyValuesResponse -> String
showsPrec :: Int -> GetInterpolatedAssetPropertyValuesResponse -> ShowS
$cshowsPrec :: Int -> GetInterpolatedAssetPropertyValuesResponse -> ShowS
Prelude.Show, forall x.
Rep GetInterpolatedAssetPropertyValuesResponse x
-> GetInterpolatedAssetPropertyValuesResponse
forall x.
GetInterpolatedAssetPropertyValuesResponse
-> Rep GetInterpolatedAssetPropertyValuesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetInterpolatedAssetPropertyValuesResponse x
-> GetInterpolatedAssetPropertyValuesResponse
$cfrom :: forall x.
GetInterpolatedAssetPropertyValuesResponse
-> Rep GetInterpolatedAssetPropertyValuesResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetInterpolatedAssetPropertyValuesResponse' 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:
--
-- 'nextToken', 'getInterpolatedAssetPropertyValuesResponse_nextToken' - The token for the next set of results, or null if there are no
-- additional results.
--
-- 'httpStatus', 'getInterpolatedAssetPropertyValuesResponse_httpStatus' - The response's http status code.
--
-- 'interpolatedAssetPropertyValues', 'getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues' - The requested interpolated values.
newGetInterpolatedAssetPropertyValuesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetInterpolatedAssetPropertyValuesResponse
newGetInterpolatedAssetPropertyValuesResponse :: Int -> GetInterpolatedAssetPropertyValuesResponse
newGetInterpolatedAssetPropertyValuesResponse
  Int
pHttpStatus_ =
    GetInterpolatedAssetPropertyValuesResponse'
      { $sel:nextToken:GetInterpolatedAssetPropertyValuesResponse' :: Maybe Text
nextToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetInterpolatedAssetPropertyValuesResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:interpolatedAssetPropertyValues:GetInterpolatedAssetPropertyValuesResponse' :: [InterpolatedAssetPropertyValue]
interpolatedAssetPropertyValues =
          forall a. Monoid a => a
Prelude.mempty
      }

-- | The token for the next set of results, or null if there are no
-- additional results.
getInterpolatedAssetPropertyValuesResponse_nextToken :: Lens.Lens' GetInterpolatedAssetPropertyValuesResponse (Prelude.Maybe Prelude.Text)
getInterpolatedAssetPropertyValuesResponse_nextToken :: Lens' GetInterpolatedAssetPropertyValuesResponse (Maybe Text)
getInterpolatedAssetPropertyValuesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValuesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetInterpolatedAssetPropertyValuesResponse' :: GetInterpolatedAssetPropertyValuesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetInterpolatedAssetPropertyValuesResponse
s@GetInterpolatedAssetPropertyValuesResponse' {} Maybe Text
a -> GetInterpolatedAssetPropertyValuesResponse
s {$sel:nextToken:GetInterpolatedAssetPropertyValuesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: GetInterpolatedAssetPropertyValuesResponse)

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

-- | The requested interpolated values.
getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues :: Lens.Lens' GetInterpolatedAssetPropertyValuesResponse [InterpolatedAssetPropertyValue]
getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues :: Lens'
  GetInterpolatedAssetPropertyValuesResponse
  [InterpolatedAssetPropertyValue]
getInterpolatedAssetPropertyValuesResponse_interpolatedAssetPropertyValues = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetInterpolatedAssetPropertyValuesResponse' {[InterpolatedAssetPropertyValue]
interpolatedAssetPropertyValues :: [InterpolatedAssetPropertyValue]
$sel:interpolatedAssetPropertyValues:GetInterpolatedAssetPropertyValuesResponse' :: GetInterpolatedAssetPropertyValuesResponse
-> [InterpolatedAssetPropertyValue]
interpolatedAssetPropertyValues} -> [InterpolatedAssetPropertyValue]
interpolatedAssetPropertyValues) (\s :: GetInterpolatedAssetPropertyValuesResponse
s@GetInterpolatedAssetPropertyValuesResponse' {} [InterpolatedAssetPropertyValue]
a -> GetInterpolatedAssetPropertyValuesResponse
s {$sel:interpolatedAssetPropertyValues:GetInterpolatedAssetPropertyValuesResponse' :: [InterpolatedAssetPropertyValue]
interpolatedAssetPropertyValues = [InterpolatedAssetPropertyValue]
a} :: GetInterpolatedAssetPropertyValuesResponse) 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
    GetInterpolatedAssetPropertyValuesResponse
  where
  rnf :: GetInterpolatedAssetPropertyValuesResponse -> ()
rnf GetInterpolatedAssetPropertyValuesResponse' {Int
[InterpolatedAssetPropertyValue]
Maybe Text
interpolatedAssetPropertyValues :: [InterpolatedAssetPropertyValue]
httpStatus :: Int
nextToken :: Maybe Text
$sel:interpolatedAssetPropertyValues:GetInterpolatedAssetPropertyValuesResponse' :: GetInterpolatedAssetPropertyValuesResponse
-> [InterpolatedAssetPropertyValue]
$sel:httpStatus:GetInterpolatedAssetPropertyValuesResponse' :: GetInterpolatedAssetPropertyValuesResponse -> Int
$sel:nextToken:GetInterpolatedAssetPropertyValuesResponse' :: GetInterpolatedAssetPropertyValuesResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [InterpolatedAssetPropertyValue]
interpolatedAssetPropertyValues