{-# 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.DescribeTimeSeries
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves information about a time series (data stream).
--
-- To identify a time series, do one of the following:
--
-- -   If the time series isn\'t associated with an asset property, specify
--     the @alias@ of the time series.
--
-- -   If the time series is associated with an asset property, specify one
--     of the following:
--
--     -   The @alias@ of the time series.
--
--     -   The @assetId@ and @propertyId@ that identifies the asset
--         property.
module Amazonka.IoTSiteWise.DescribeTimeSeries
  ( -- * Creating a Request
    DescribeTimeSeries (..),
    newDescribeTimeSeries,

    -- * Request Lenses
    describeTimeSeries_alias,
    describeTimeSeries_assetId,
    describeTimeSeries_propertyId,

    -- * Destructuring the Response
    DescribeTimeSeriesResponse (..),
    newDescribeTimeSeriesResponse,

    -- * Response Lenses
    describeTimeSeriesResponse_alias,
    describeTimeSeriesResponse_assetId,
    describeTimeSeriesResponse_dataTypeSpec,
    describeTimeSeriesResponse_propertyId,
    describeTimeSeriesResponse_httpStatus,
    describeTimeSeriesResponse_timeSeriesId,
    describeTimeSeriesResponse_dataType,
    describeTimeSeriesResponse_timeSeriesCreationDate,
    describeTimeSeriesResponse_timeSeriesLastUpdateDate,
  )
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:/ 'newDescribeTimeSeries' smart constructor.
data DescribeTimeSeries = DescribeTimeSeries'
  { -- | The alias that identifies the time series.
    DescribeTimeSeries -> Maybe Text
alias :: Prelude.Maybe Prelude.Text,
    -- | The ID of the asset in which the asset property was created.
    DescribeTimeSeries -> Maybe Text
assetId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the asset property.
    DescribeTimeSeries -> Maybe Text
propertyId :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeTimeSeries -> DescribeTimeSeries -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTimeSeries -> DescribeTimeSeries -> Bool
$c/= :: DescribeTimeSeries -> DescribeTimeSeries -> Bool
== :: DescribeTimeSeries -> DescribeTimeSeries -> Bool
$c== :: DescribeTimeSeries -> DescribeTimeSeries -> Bool
Prelude.Eq, ReadPrec [DescribeTimeSeries]
ReadPrec DescribeTimeSeries
Int -> ReadS DescribeTimeSeries
ReadS [DescribeTimeSeries]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTimeSeries]
$creadListPrec :: ReadPrec [DescribeTimeSeries]
readPrec :: ReadPrec DescribeTimeSeries
$creadPrec :: ReadPrec DescribeTimeSeries
readList :: ReadS [DescribeTimeSeries]
$creadList :: ReadS [DescribeTimeSeries]
readsPrec :: Int -> ReadS DescribeTimeSeries
$creadsPrec :: Int -> ReadS DescribeTimeSeries
Prelude.Read, Int -> DescribeTimeSeries -> ShowS
[DescribeTimeSeries] -> ShowS
DescribeTimeSeries -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTimeSeries] -> ShowS
$cshowList :: [DescribeTimeSeries] -> ShowS
show :: DescribeTimeSeries -> String
$cshow :: DescribeTimeSeries -> String
showsPrec :: Int -> DescribeTimeSeries -> ShowS
$cshowsPrec :: Int -> DescribeTimeSeries -> ShowS
Prelude.Show, forall x. Rep DescribeTimeSeries x -> DescribeTimeSeries
forall x. DescribeTimeSeries -> Rep DescribeTimeSeries x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeTimeSeries x -> DescribeTimeSeries
$cfrom :: forall x. DescribeTimeSeries -> Rep DescribeTimeSeries x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTimeSeries' 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:
--
-- 'alias', 'describeTimeSeries_alias' - The alias that identifies the time series.
--
-- 'assetId', 'describeTimeSeries_assetId' - The ID of the asset in which the asset property was created.
--
-- 'propertyId', 'describeTimeSeries_propertyId' - The ID of the asset property.
newDescribeTimeSeries ::
  DescribeTimeSeries
newDescribeTimeSeries :: DescribeTimeSeries
newDescribeTimeSeries =
  DescribeTimeSeries'
    { $sel:alias:DescribeTimeSeries' :: Maybe Text
alias = forall a. Maybe a
Prelude.Nothing,
      $sel:assetId:DescribeTimeSeries' :: Maybe Text
assetId = forall a. Maybe a
Prelude.Nothing,
      $sel:propertyId:DescribeTimeSeries' :: Maybe Text
propertyId = forall a. Maybe a
Prelude.Nothing
    }

-- | The alias that identifies the time series.
describeTimeSeries_alias :: Lens.Lens' DescribeTimeSeries (Prelude.Maybe Prelude.Text)
describeTimeSeries_alias :: Lens' DescribeTimeSeries (Maybe Text)
describeTimeSeries_alias = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeries' {Maybe Text
alias :: Maybe Text
$sel:alias:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
alias} -> Maybe Text
alias) (\s :: DescribeTimeSeries
s@DescribeTimeSeries' {} Maybe Text
a -> DescribeTimeSeries
s {$sel:alias:DescribeTimeSeries' :: Maybe Text
alias = Maybe Text
a} :: DescribeTimeSeries)

-- | The ID of the asset in which the asset property was created.
describeTimeSeries_assetId :: Lens.Lens' DescribeTimeSeries (Prelude.Maybe Prelude.Text)
describeTimeSeries_assetId :: Lens' DescribeTimeSeries (Maybe Text)
describeTimeSeries_assetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeries' {Maybe Text
assetId :: Maybe Text
$sel:assetId:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
assetId} -> Maybe Text
assetId) (\s :: DescribeTimeSeries
s@DescribeTimeSeries' {} Maybe Text
a -> DescribeTimeSeries
s {$sel:assetId:DescribeTimeSeries' :: Maybe Text
assetId = Maybe Text
a} :: DescribeTimeSeries)

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

instance Core.AWSRequest DescribeTimeSeries where
  type
    AWSResponse DescribeTimeSeries =
      DescribeTimeSeriesResponse
  request :: (Service -> Service)
-> DescribeTimeSeries -> Request DescribeTimeSeries
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 DescribeTimeSeries
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeTimeSeries)))
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
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> Text
-> PropertyDataType
-> POSIX
-> POSIX
-> DescribeTimeSeriesResponse
DescribeTimeSeriesResponse'
            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
"alias")
            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
"assetId")
            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
"dataTypeSpec")
            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
"propertyId")
            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 a
Data..:> Key
"timeSeriesId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"dataType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"timeSeriesCreationDate")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"timeSeriesLastUpdateDate")
      )

instance Prelude.Hashable DescribeTimeSeries where
  hashWithSalt :: Int -> DescribeTimeSeries -> Int
hashWithSalt Int
_salt DescribeTimeSeries' {Maybe Text
propertyId :: Maybe Text
assetId :: Maybe Text
alias :: Maybe Text
$sel:propertyId:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
$sel:assetId:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
$sel:alias:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
alias
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
assetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
propertyId

instance Prelude.NFData DescribeTimeSeries where
  rnf :: DescribeTimeSeries -> ()
rnf DescribeTimeSeries' {Maybe Text
propertyId :: Maybe Text
assetId :: Maybe Text
alias :: Maybe Text
$sel:propertyId:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
$sel:assetId:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
$sel:alias:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
alias
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
propertyId

instance Data.ToHeaders DescribeTimeSeries where
  toHeaders :: DescribeTimeSeries -> 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 DescribeTimeSeries where
  toPath :: DescribeTimeSeries -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/timeseries/describe/"

instance Data.ToQuery DescribeTimeSeries where
  toQuery :: DescribeTimeSeries -> QueryString
toQuery DescribeTimeSeries' {Maybe Text
propertyId :: Maybe Text
assetId :: Maybe Text
alias :: Maybe Text
$sel:propertyId:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
$sel:assetId:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
$sel:alias:DescribeTimeSeries' :: DescribeTimeSeries -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"alias" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
alias,
        ByteString
"assetId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
assetId,
        ByteString
"propertyId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
propertyId
      ]

-- | /See:/ 'newDescribeTimeSeriesResponse' smart constructor.
data DescribeTimeSeriesResponse = DescribeTimeSeriesResponse'
  { -- | The alias that identifies the time series.
    DescribeTimeSeriesResponse -> Maybe Text
alias :: Prelude.Maybe Prelude.Text,
    -- | The ID of the asset in which the asset property was created.
    DescribeTimeSeriesResponse -> Maybe Text
assetId :: Prelude.Maybe Prelude.Text,
    -- | The data type of the structure for this time series. This parameter is
    -- required for time series that have the @STRUCT@ data type.
    --
    -- The options for this parameter depend on the type of the composite model
    -- in which you created the asset property that is associated with your
    -- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite
    -- models.
    DescribeTimeSeriesResponse -> Maybe Text
dataTypeSpec :: Prelude.Maybe Prelude.Text,
    -- | The ID of the asset property.
    DescribeTimeSeriesResponse -> Maybe Text
propertyId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeTimeSeriesResponse -> Int
httpStatus :: Prelude.Int,
    -- | The ID of the time series.
    DescribeTimeSeriesResponse -> Text
timeSeriesId :: Prelude.Text,
    -- | The data type of the time series.
    --
    -- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to
    -- identify the type of the structure for this time series.
    DescribeTimeSeriesResponse -> PropertyDataType
dataType :: PropertyDataType,
    -- | The date that the time series was created, in Unix epoch time.
    DescribeTimeSeriesResponse -> POSIX
timeSeriesCreationDate :: Data.POSIX,
    -- | The date that the time series was last updated, in Unix epoch time.
    DescribeTimeSeriesResponse -> POSIX
timeSeriesLastUpdateDate :: Data.POSIX
  }
  deriving (DescribeTimeSeriesResponse -> DescribeTimeSeriesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTimeSeriesResponse -> DescribeTimeSeriesResponse -> Bool
$c/= :: DescribeTimeSeriesResponse -> DescribeTimeSeriesResponse -> Bool
== :: DescribeTimeSeriesResponse -> DescribeTimeSeriesResponse -> Bool
$c== :: DescribeTimeSeriesResponse -> DescribeTimeSeriesResponse -> Bool
Prelude.Eq, ReadPrec [DescribeTimeSeriesResponse]
ReadPrec DescribeTimeSeriesResponse
Int -> ReadS DescribeTimeSeriesResponse
ReadS [DescribeTimeSeriesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTimeSeriesResponse]
$creadListPrec :: ReadPrec [DescribeTimeSeriesResponse]
readPrec :: ReadPrec DescribeTimeSeriesResponse
$creadPrec :: ReadPrec DescribeTimeSeriesResponse
readList :: ReadS [DescribeTimeSeriesResponse]
$creadList :: ReadS [DescribeTimeSeriesResponse]
readsPrec :: Int -> ReadS DescribeTimeSeriesResponse
$creadsPrec :: Int -> ReadS DescribeTimeSeriesResponse
Prelude.Read, Int -> DescribeTimeSeriesResponse -> ShowS
[DescribeTimeSeriesResponse] -> ShowS
DescribeTimeSeriesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTimeSeriesResponse] -> ShowS
$cshowList :: [DescribeTimeSeriesResponse] -> ShowS
show :: DescribeTimeSeriesResponse -> String
$cshow :: DescribeTimeSeriesResponse -> String
showsPrec :: Int -> DescribeTimeSeriesResponse -> ShowS
$cshowsPrec :: Int -> DescribeTimeSeriesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeTimeSeriesResponse x -> DescribeTimeSeriesResponse
forall x.
DescribeTimeSeriesResponse -> Rep DescribeTimeSeriesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeTimeSeriesResponse x -> DescribeTimeSeriesResponse
$cfrom :: forall x.
DescribeTimeSeriesResponse -> Rep DescribeTimeSeriesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTimeSeriesResponse' 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:
--
-- 'alias', 'describeTimeSeriesResponse_alias' - The alias that identifies the time series.
--
-- 'assetId', 'describeTimeSeriesResponse_assetId' - The ID of the asset in which the asset property was created.
--
-- 'dataTypeSpec', 'describeTimeSeriesResponse_dataTypeSpec' - The data type of the structure for this time series. This parameter is
-- required for time series that have the @STRUCT@ data type.
--
-- The options for this parameter depend on the type of the composite model
-- in which you created the asset property that is associated with your
-- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite
-- models.
--
-- 'propertyId', 'describeTimeSeriesResponse_propertyId' - The ID of the asset property.
--
-- 'httpStatus', 'describeTimeSeriesResponse_httpStatus' - The response's http status code.
--
-- 'timeSeriesId', 'describeTimeSeriesResponse_timeSeriesId' - The ID of the time series.
--
-- 'dataType', 'describeTimeSeriesResponse_dataType' - The data type of the time series.
--
-- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to
-- identify the type of the structure for this time series.
--
-- 'timeSeriesCreationDate', 'describeTimeSeriesResponse_timeSeriesCreationDate' - The date that the time series was created, in Unix epoch time.
--
-- 'timeSeriesLastUpdateDate', 'describeTimeSeriesResponse_timeSeriesLastUpdateDate' - The date that the time series was last updated, in Unix epoch time.
newDescribeTimeSeriesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'timeSeriesId'
  Prelude.Text ->
  -- | 'dataType'
  PropertyDataType ->
  -- | 'timeSeriesCreationDate'
  Prelude.UTCTime ->
  -- | 'timeSeriesLastUpdateDate'
  Prelude.UTCTime ->
  DescribeTimeSeriesResponse
newDescribeTimeSeriesResponse :: Int
-> Text
-> PropertyDataType
-> UTCTime
-> UTCTime
-> DescribeTimeSeriesResponse
newDescribeTimeSeriesResponse
  Int
pHttpStatus_
  Text
pTimeSeriesId_
  PropertyDataType
pDataType_
  UTCTime
pTimeSeriesCreationDate_
  UTCTime
pTimeSeriesLastUpdateDate_ =
    DescribeTimeSeriesResponse'
      { $sel:alias:DescribeTimeSeriesResponse' :: Maybe Text
alias =
          forall a. Maybe a
Prelude.Nothing,
        $sel:assetId:DescribeTimeSeriesResponse' :: Maybe Text
assetId = forall a. Maybe a
Prelude.Nothing,
        $sel:dataTypeSpec:DescribeTimeSeriesResponse' :: Maybe Text
dataTypeSpec = forall a. Maybe a
Prelude.Nothing,
        $sel:propertyId:DescribeTimeSeriesResponse' :: Maybe Text
propertyId = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeTimeSeriesResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:timeSeriesId:DescribeTimeSeriesResponse' :: Text
timeSeriesId = Text
pTimeSeriesId_,
        $sel:dataType:DescribeTimeSeriesResponse' :: PropertyDataType
dataType = PropertyDataType
pDataType_,
        $sel:timeSeriesCreationDate:DescribeTimeSeriesResponse' :: POSIX
timeSeriesCreationDate =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pTimeSeriesCreationDate_,
        $sel:timeSeriesLastUpdateDate:DescribeTimeSeriesResponse' :: POSIX
timeSeriesLastUpdateDate =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pTimeSeriesLastUpdateDate_
      }

-- | The alias that identifies the time series.
describeTimeSeriesResponse_alias :: Lens.Lens' DescribeTimeSeriesResponse (Prelude.Maybe Prelude.Text)
describeTimeSeriesResponse_alias :: Lens' DescribeTimeSeriesResponse (Maybe Text)
describeTimeSeriesResponse_alias = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeriesResponse' {Maybe Text
alias :: Maybe Text
$sel:alias:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Maybe Text
alias} -> Maybe Text
alias) (\s :: DescribeTimeSeriesResponse
s@DescribeTimeSeriesResponse' {} Maybe Text
a -> DescribeTimeSeriesResponse
s {$sel:alias:DescribeTimeSeriesResponse' :: Maybe Text
alias = Maybe Text
a} :: DescribeTimeSeriesResponse)

-- | The ID of the asset in which the asset property was created.
describeTimeSeriesResponse_assetId :: Lens.Lens' DescribeTimeSeriesResponse (Prelude.Maybe Prelude.Text)
describeTimeSeriesResponse_assetId :: Lens' DescribeTimeSeriesResponse (Maybe Text)
describeTimeSeriesResponse_assetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeriesResponse' {Maybe Text
assetId :: Maybe Text
$sel:assetId:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Maybe Text
assetId} -> Maybe Text
assetId) (\s :: DescribeTimeSeriesResponse
s@DescribeTimeSeriesResponse' {} Maybe Text
a -> DescribeTimeSeriesResponse
s {$sel:assetId:DescribeTimeSeriesResponse' :: Maybe Text
assetId = Maybe Text
a} :: DescribeTimeSeriesResponse)

-- | The data type of the structure for this time series. This parameter is
-- required for time series that have the @STRUCT@ data type.
--
-- The options for this parameter depend on the type of the composite model
-- in which you created the asset property that is associated with your
-- time series. Use @AWS\/ALARM_STATE@ for alarm state in alarm composite
-- models.
describeTimeSeriesResponse_dataTypeSpec :: Lens.Lens' DescribeTimeSeriesResponse (Prelude.Maybe Prelude.Text)
describeTimeSeriesResponse_dataTypeSpec :: Lens' DescribeTimeSeriesResponse (Maybe Text)
describeTimeSeriesResponse_dataTypeSpec = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeriesResponse' {Maybe Text
dataTypeSpec :: Maybe Text
$sel:dataTypeSpec:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Maybe Text
dataTypeSpec} -> Maybe Text
dataTypeSpec) (\s :: DescribeTimeSeriesResponse
s@DescribeTimeSeriesResponse' {} Maybe Text
a -> DescribeTimeSeriesResponse
s {$sel:dataTypeSpec:DescribeTimeSeriesResponse' :: Maybe Text
dataTypeSpec = Maybe Text
a} :: DescribeTimeSeriesResponse)

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

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

-- | The ID of the time series.
describeTimeSeriesResponse_timeSeriesId :: Lens.Lens' DescribeTimeSeriesResponse Prelude.Text
describeTimeSeriesResponse_timeSeriesId :: Lens' DescribeTimeSeriesResponse Text
describeTimeSeriesResponse_timeSeriesId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeriesResponse' {Text
timeSeriesId :: Text
$sel:timeSeriesId:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Text
timeSeriesId} -> Text
timeSeriesId) (\s :: DescribeTimeSeriesResponse
s@DescribeTimeSeriesResponse' {} Text
a -> DescribeTimeSeriesResponse
s {$sel:timeSeriesId:DescribeTimeSeriesResponse' :: Text
timeSeriesId = Text
a} :: DescribeTimeSeriesResponse)

-- | The data type of the time series.
--
-- If you specify @STRUCT@, you must also specify @dataTypeSpec@ to
-- identify the type of the structure for this time series.
describeTimeSeriesResponse_dataType :: Lens.Lens' DescribeTimeSeriesResponse PropertyDataType
describeTimeSeriesResponse_dataType :: Lens' DescribeTimeSeriesResponse PropertyDataType
describeTimeSeriesResponse_dataType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeriesResponse' {PropertyDataType
dataType :: PropertyDataType
$sel:dataType:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> PropertyDataType
dataType} -> PropertyDataType
dataType) (\s :: DescribeTimeSeriesResponse
s@DescribeTimeSeriesResponse' {} PropertyDataType
a -> DescribeTimeSeriesResponse
s {$sel:dataType:DescribeTimeSeriesResponse' :: PropertyDataType
dataType = PropertyDataType
a} :: DescribeTimeSeriesResponse)

-- | The date that the time series was created, in Unix epoch time.
describeTimeSeriesResponse_timeSeriesCreationDate :: Lens.Lens' DescribeTimeSeriesResponse Prelude.UTCTime
describeTimeSeriesResponse_timeSeriesCreationDate :: Lens' DescribeTimeSeriesResponse UTCTime
describeTimeSeriesResponse_timeSeriesCreationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeriesResponse' {POSIX
timeSeriesCreationDate :: POSIX
$sel:timeSeriesCreationDate:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> POSIX
timeSeriesCreationDate} -> POSIX
timeSeriesCreationDate) (\s :: DescribeTimeSeriesResponse
s@DescribeTimeSeriesResponse' {} POSIX
a -> DescribeTimeSeriesResponse
s {$sel:timeSeriesCreationDate:DescribeTimeSeriesResponse' :: POSIX
timeSeriesCreationDate = POSIX
a} :: DescribeTimeSeriesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The date that the time series was last updated, in Unix epoch time.
describeTimeSeriesResponse_timeSeriesLastUpdateDate :: Lens.Lens' DescribeTimeSeriesResponse Prelude.UTCTime
describeTimeSeriesResponse_timeSeriesLastUpdateDate :: Lens' DescribeTimeSeriesResponse UTCTime
describeTimeSeriesResponse_timeSeriesLastUpdateDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTimeSeriesResponse' {POSIX
timeSeriesLastUpdateDate :: POSIX
$sel:timeSeriesLastUpdateDate:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> POSIX
timeSeriesLastUpdateDate} -> POSIX
timeSeriesLastUpdateDate) (\s :: DescribeTimeSeriesResponse
s@DescribeTimeSeriesResponse' {} POSIX
a -> DescribeTimeSeriesResponse
s {$sel:timeSeriesLastUpdateDate:DescribeTimeSeriesResponse' :: POSIX
timeSeriesLastUpdateDate = POSIX
a} :: DescribeTimeSeriesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Prelude.NFData DescribeTimeSeriesResponse where
  rnf :: DescribeTimeSeriesResponse -> ()
rnf DescribeTimeSeriesResponse' {Int
Maybe Text
Text
POSIX
PropertyDataType
timeSeriesLastUpdateDate :: POSIX
timeSeriesCreationDate :: POSIX
dataType :: PropertyDataType
timeSeriesId :: Text
httpStatus :: Int
propertyId :: Maybe Text
dataTypeSpec :: Maybe Text
assetId :: Maybe Text
alias :: Maybe Text
$sel:timeSeriesLastUpdateDate:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> POSIX
$sel:timeSeriesCreationDate:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> POSIX
$sel:dataType:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> PropertyDataType
$sel:timeSeriesId:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Text
$sel:httpStatus:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Int
$sel:propertyId:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Maybe Text
$sel:dataTypeSpec:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Maybe Text
$sel:assetId:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Maybe Text
$sel:alias:DescribeTimeSeriesResponse' :: DescribeTimeSeriesResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
alias
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
dataTypeSpec
      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 Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
timeSeriesId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf PropertyDataType
dataType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
timeSeriesCreationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
timeSeriesLastUpdateDate