{-# 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.DeleteTimeSeries
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes a time series (data stream). If you delete a time series that\'s
-- associated with an asset property, the asset property still exists, but
-- the time series will no longer be associated with this asset property.
--
-- 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.DeleteTimeSeries
  ( -- * Creating a Request
    DeleteTimeSeries (..),
    newDeleteTimeSeries,

    -- * Request Lenses
    deleteTimeSeries_alias,
    deleteTimeSeries_assetId,
    deleteTimeSeries_clientToken,
    deleteTimeSeries_propertyId,

    -- * Destructuring the Response
    DeleteTimeSeriesResponse (..),
    newDeleteTimeSeriesResponse,
  )
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:/ 'newDeleteTimeSeries' smart constructor.
data DeleteTimeSeries = DeleteTimeSeries'
  { -- | The alias that identifies the time series.
    DeleteTimeSeries -> Maybe Text
alias :: Prelude.Maybe Prelude.Text,
    -- | The ID of the asset in which the asset property was created.
    DeleteTimeSeries -> Maybe Text
assetId :: Prelude.Maybe Prelude.Text,
    -- | A unique case-sensitive identifier that you can provide to ensure the
    -- idempotency of the request. Don\'t reuse this client token if a new
    -- idempotent request is required.
    DeleteTimeSeries -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The ID of the asset property.
    DeleteTimeSeries -> Maybe Text
propertyId :: Prelude.Maybe Prelude.Text
  }
  deriving (DeleteTimeSeries -> DeleteTimeSeries -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteTimeSeries -> DeleteTimeSeries -> Bool
$c/= :: DeleteTimeSeries -> DeleteTimeSeries -> Bool
== :: DeleteTimeSeries -> DeleteTimeSeries -> Bool
$c== :: DeleteTimeSeries -> DeleteTimeSeries -> Bool
Prelude.Eq, ReadPrec [DeleteTimeSeries]
ReadPrec DeleteTimeSeries
Int -> ReadS DeleteTimeSeries
ReadS [DeleteTimeSeries]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteTimeSeries]
$creadListPrec :: ReadPrec [DeleteTimeSeries]
readPrec :: ReadPrec DeleteTimeSeries
$creadPrec :: ReadPrec DeleteTimeSeries
readList :: ReadS [DeleteTimeSeries]
$creadList :: ReadS [DeleteTimeSeries]
readsPrec :: Int -> ReadS DeleteTimeSeries
$creadsPrec :: Int -> ReadS DeleteTimeSeries
Prelude.Read, Int -> DeleteTimeSeries -> ShowS
[DeleteTimeSeries] -> ShowS
DeleteTimeSeries -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteTimeSeries] -> ShowS
$cshowList :: [DeleteTimeSeries] -> ShowS
show :: DeleteTimeSeries -> String
$cshow :: DeleteTimeSeries -> String
showsPrec :: Int -> DeleteTimeSeries -> ShowS
$cshowsPrec :: Int -> DeleteTimeSeries -> ShowS
Prelude.Show, forall x. Rep DeleteTimeSeries x -> DeleteTimeSeries
forall x. DeleteTimeSeries -> Rep DeleteTimeSeries x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteTimeSeries x -> DeleteTimeSeries
$cfrom :: forall x. DeleteTimeSeries -> Rep DeleteTimeSeries x
Prelude.Generic)

-- |
-- Create a value of 'DeleteTimeSeries' 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', 'deleteTimeSeries_alias' - The alias that identifies the time series.
--
-- 'assetId', 'deleteTimeSeries_assetId' - The ID of the asset in which the asset property was created.
--
-- 'clientToken', 'deleteTimeSeries_clientToken' - A unique case-sensitive identifier that you can provide to ensure the
-- idempotency of the request. Don\'t reuse this client token if a new
-- idempotent request is required.
--
-- 'propertyId', 'deleteTimeSeries_propertyId' - The ID of the asset property.
newDeleteTimeSeries ::
  DeleteTimeSeries
newDeleteTimeSeries :: DeleteTimeSeries
newDeleteTimeSeries =
  DeleteTimeSeries'
    { $sel:alias:DeleteTimeSeries' :: Maybe Text
alias = forall a. Maybe a
Prelude.Nothing,
      $sel:assetId:DeleteTimeSeries' :: Maybe Text
assetId = forall a. Maybe a
Prelude.Nothing,
      $sel:clientToken:DeleteTimeSeries' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:propertyId:DeleteTimeSeries' :: Maybe Text
propertyId = forall a. Maybe a
Prelude.Nothing
    }

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

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

-- | A unique case-sensitive identifier that you can provide to ensure the
-- idempotency of the request. Don\'t reuse this client token if a new
-- idempotent request is required.
deleteTimeSeries_clientToken :: Lens.Lens' DeleteTimeSeries (Prelude.Maybe Prelude.Text)
deleteTimeSeries_clientToken :: Lens' DeleteTimeSeries (Maybe Text)
deleteTimeSeries_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteTimeSeries' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: DeleteTimeSeries
s@DeleteTimeSeries' {} Maybe Text
a -> DeleteTimeSeries
s {$sel:clientToken:DeleteTimeSeries' :: Maybe Text
clientToken = Maybe Text
a} :: DeleteTimeSeries)

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

instance Core.AWSRequest DeleteTimeSeries where
  type
    AWSResponse DeleteTimeSeries =
      DeleteTimeSeriesResponse
  request :: (Service -> Service)
-> DeleteTimeSeries -> Request DeleteTimeSeries
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteTimeSeries
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteTimeSeries)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteTimeSeriesResponse
DeleteTimeSeriesResponse'

instance Prelude.Hashable DeleteTimeSeries where
  hashWithSalt :: Int -> DeleteTimeSeries -> Int
hashWithSalt Int
_salt DeleteTimeSeries' {Maybe Text
propertyId :: Maybe Text
clientToken :: Maybe Text
assetId :: Maybe Text
alias :: Maybe Text
$sel:propertyId:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:clientToken:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:assetId:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:alias:DeleteTimeSeries' :: DeleteTimeSeries -> 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
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
propertyId

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

instance Data.ToHeaders DeleteTimeSeries where
  toHeaders :: DeleteTimeSeries -> [Header]
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 -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DeleteTimeSeries where
  toJSON :: DeleteTimeSeries -> Value
toJSON DeleteTimeSeries' {Maybe Text
propertyId :: Maybe Text
clientToken :: Maybe Text
assetId :: Maybe Text
alias :: Maybe Text
$sel:propertyId:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:clientToken:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:assetId:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:alias:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [(Key
"clientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
clientToken]
      )

instance Data.ToPath DeleteTimeSeries where
  toPath :: DeleteTimeSeries -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/timeseries/delete/"

instance Data.ToQuery DeleteTimeSeries where
  toQuery :: DeleteTimeSeries -> QueryString
toQuery DeleteTimeSeries' {Maybe Text
propertyId :: Maybe Text
clientToken :: Maybe Text
assetId :: Maybe Text
alias :: Maybe Text
$sel:propertyId:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:clientToken:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:assetId:DeleteTimeSeries' :: DeleteTimeSeries -> Maybe Text
$sel:alias:DeleteTimeSeries' :: DeleteTimeSeries -> 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:/ 'newDeleteTimeSeriesResponse' smart constructor.
data DeleteTimeSeriesResponse = DeleteTimeSeriesResponse'
  {
  }
  deriving (DeleteTimeSeriesResponse -> DeleteTimeSeriesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteTimeSeriesResponse -> DeleteTimeSeriesResponse -> Bool
$c/= :: DeleteTimeSeriesResponse -> DeleteTimeSeriesResponse -> Bool
== :: DeleteTimeSeriesResponse -> DeleteTimeSeriesResponse -> Bool
$c== :: DeleteTimeSeriesResponse -> DeleteTimeSeriesResponse -> Bool
Prelude.Eq, ReadPrec [DeleteTimeSeriesResponse]
ReadPrec DeleteTimeSeriesResponse
Int -> ReadS DeleteTimeSeriesResponse
ReadS [DeleteTimeSeriesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteTimeSeriesResponse]
$creadListPrec :: ReadPrec [DeleteTimeSeriesResponse]
readPrec :: ReadPrec DeleteTimeSeriesResponse
$creadPrec :: ReadPrec DeleteTimeSeriesResponse
readList :: ReadS [DeleteTimeSeriesResponse]
$creadList :: ReadS [DeleteTimeSeriesResponse]
readsPrec :: Int -> ReadS DeleteTimeSeriesResponse
$creadsPrec :: Int -> ReadS DeleteTimeSeriesResponse
Prelude.Read, Int -> DeleteTimeSeriesResponse -> ShowS
[DeleteTimeSeriesResponse] -> ShowS
DeleteTimeSeriesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteTimeSeriesResponse] -> ShowS
$cshowList :: [DeleteTimeSeriesResponse] -> ShowS
show :: DeleteTimeSeriesResponse -> String
$cshow :: DeleteTimeSeriesResponse -> String
showsPrec :: Int -> DeleteTimeSeriesResponse -> ShowS
$cshowsPrec :: Int -> DeleteTimeSeriesResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteTimeSeriesResponse x -> DeleteTimeSeriesResponse
forall x.
DeleteTimeSeriesResponse -> Rep DeleteTimeSeriesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteTimeSeriesResponse x -> DeleteTimeSeriesResponse
$cfrom :: forall x.
DeleteTimeSeriesResponse -> Rep DeleteTimeSeriesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteTimeSeriesResponse' 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.
newDeleteTimeSeriesResponse ::
  DeleteTimeSeriesResponse
newDeleteTimeSeriesResponse :: DeleteTimeSeriesResponse
newDeleteTimeSeriesResponse =
  DeleteTimeSeriesResponse
DeleteTimeSeriesResponse'

instance Prelude.NFData DeleteTimeSeriesResponse where
  rnf :: DeleteTimeSeriesResponse -> ()
rnf DeleteTimeSeriesResponse
_ = ()