packages feed

amazonka-greengrassv2-2.0: gen/Amazonka/GreengrassV2/BatchDisassociateClientDeviceFromCoreDevice.hs

{-# 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.GreengrassV2.BatchDisassociateClientDeviceFromCoreDevice
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Disassociates a list of client devices from a core device. After you
-- disassociate a client device from a core device, the client device
-- won\'t be able to use cloud discovery to retrieve the core device\'s
-- connectivity information and certificates.
module Amazonka.GreengrassV2.BatchDisassociateClientDeviceFromCoreDevice
  ( -- * Creating a Request
    BatchDisassociateClientDeviceFromCoreDevice (..),
    newBatchDisassociateClientDeviceFromCoreDevice,

    -- * Request Lenses
    batchDisassociateClientDeviceFromCoreDevice_entries,
    batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName,

    -- * Destructuring the Response
    BatchDisassociateClientDeviceFromCoreDeviceResponse (..),
    newBatchDisassociateClientDeviceFromCoreDeviceResponse,

    -- * Response Lenses
    batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries,
    batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus,
  )
where

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

-- | /See:/ 'newBatchDisassociateClientDeviceFromCoreDevice' smart constructor.
data BatchDisassociateClientDeviceFromCoreDevice = BatchDisassociateClientDeviceFromCoreDevice'
  { -- | The list of client devices to disassociate.
    entries :: Prelude.Maybe (Prelude.NonEmpty DisassociateClientDeviceFromCoreDeviceEntry),
    -- | The name of the core device. This is also the name of the IoT thing.
    coreDeviceThingName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'BatchDisassociateClientDeviceFromCoreDevice' 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:
--
-- 'entries', 'batchDisassociateClientDeviceFromCoreDevice_entries' - The list of client devices to disassociate.
--
-- 'coreDeviceThingName', 'batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName' - The name of the core device. This is also the name of the IoT thing.
newBatchDisassociateClientDeviceFromCoreDevice ::
  -- | 'coreDeviceThingName'
  Prelude.Text ->
  BatchDisassociateClientDeviceFromCoreDevice
newBatchDisassociateClientDeviceFromCoreDevice
  pCoreDeviceThingName_ =
    BatchDisassociateClientDeviceFromCoreDevice'
      { entries =
          Prelude.Nothing,
        coreDeviceThingName =
          pCoreDeviceThingName_
      }

-- | The list of client devices to disassociate.
batchDisassociateClientDeviceFromCoreDevice_entries :: Lens.Lens' BatchDisassociateClientDeviceFromCoreDevice (Prelude.Maybe (Prelude.NonEmpty DisassociateClientDeviceFromCoreDeviceEntry))
batchDisassociateClientDeviceFromCoreDevice_entries = Lens.lens (\BatchDisassociateClientDeviceFromCoreDevice' {entries} -> entries) (\s@BatchDisassociateClientDeviceFromCoreDevice' {} a -> s {entries = a} :: BatchDisassociateClientDeviceFromCoreDevice) Prelude.. Lens.mapping Lens.coerced

-- | The name of the core device. This is also the name of the IoT thing.
batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName :: Lens.Lens' BatchDisassociateClientDeviceFromCoreDevice Prelude.Text
batchDisassociateClientDeviceFromCoreDevice_coreDeviceThingName = Lens.lens (\BatchDisassociateClientDeviceFromCoreDevice' {coreDeviceThingName} -> coreDeviceThingName) (\s@BatchDisassociateClientDeviceFromCoreDevice' {} a -> s {coreDeviceThingName = a} :: BatchDisassociateClientDeviceFromCoreDevice)

instance
  Core.AWSRequest
    BatchDisassociateClientDeviceFromCoreDevice
  where
  type
    AWSResponse
      BatchDisassociateClientDeviceFromCoreDevice =
      BatchDisassociateClientDeviceFromCoreDeviceResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          BatchDisassociateClientDeviceFromCoreDeviceResponse'
            Prelude.<$> (x Data..?> "errorEntries" Core..!@ Prelude.mempty)
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    BatchDisassociateClientDeviceFromCoreDevice
  where
  hashWithSalt
    _salt
    BatchDisassociateClientDeviceFromCoreDevice' {..} =
      _salt
        `Prelude.hashWithSalt` entries
        `Prelude.hashWithSalt` coreDeviceThingName

instance
  Prelude.NFData
    BatchDisassociateClientDeviceFromCoreDevice
  where
  rnf BatchDisassociateClientDeviceFromCoreDevice' {..} =
    Prelude.rnf entries
      `Prelude.seq` Prelude.rnf coreDeviceThingName

instance
  Data.ToHeaders
    BatchDisassociateClientDeviceFromCoreDevice
  where
  toHeaders = Prelude.const Prelude.mempty

instance
  Data.ToJSON
    BatchDisassociateClientDeviceFromCoreDevice
  where
  toJSON
    BatchDisassociateClientDeviceFromCoreDevice' {..} =
      Data.object
        ( Prelude.catMaybes
            [("entries" Data..=) Prelude.<$> entries]
        )

instance
  Data.ToPath
    BatchDisassociateClientDeviceFromCoreDevice
  where
  toPath
    BatchDisassociateClientDeviceFromCoreDevice' {..} =
      Prelude.mconcat
        [ "/greengrass/v2/coreDevices/",
          Data.toBS coreDeviceThingName,
          "/disassociateClientDevices"
        ]

instance
  Data.ToQuery
    BatchDisassociateClientDeviceFromCoreDevice
  where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newBatchDisassociateClientDeviceFromCoreDeviceResponse' smart constructor.
data BatchDisassociateClientDeviceFromCoreDeviceResponse = BatchDisassociateClientDeviceFromCoreDeviceResponse'
  { -- | The list of any errors for the entries in the request. Each error entry
    -- contains the name of the IoT thing that failed to disassociate.
    errorEntries :: Prelude.Maybe [DisassociateClientDeviceFromCoreDeviceErrorEntry],
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'BatchDisassociateClientDeviceFromCoreDeviceResponse' 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:
--
-- 'errorEntries', 'batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries' - The list of any errors for the entries in the request. Each error entry
-- contains the name of the IoT thing that failed to disassociate.
--
-- 'httpStatus', 'batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus' - The response's http status code.
newBatchDisassociateClientDeviceFromCoreDeviceResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  BatchDisassociateClientDeviceFromCoreDeviceResponse
newBatchDisassociateClientDeviceFromCoreDeviceResponse
  pHttpStatus_ =
    BatchDisassociateClientDeviceFromCoreDeviceResponse'
      { errorEntries =
          Prelude.Nothing,
        httpStatus =
          pHttpStatus_
      }

-- | The list of any errors for the entries in the request. Each error entry
-- contains the name of the IoT thing that failed to disassociate.
batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries :: Lens.Lens' BatchDisassociateClientDeviceFromCoreDeviceResponse (Prelude.Maybe [DisassociateClientDeviceFromCoreDeviceErrorEntry])
batchDisassociateClientDeviceFromCoreDeviceResponse_errorEntries = Lens.lens (\BatchDisassociateClientDeviceFromCoreDeviceResponse' {errorEntries} -> errorEntries) (\s@BatchDisassociateClientDeviceFromCoreDeviceResponse' {} a -> s {errorEntries = a} :: BatchDisassociateClientDeviceFromCoreDeviceResponse) Prelude.. Lens.mapping Lens.coerced

-- | The response's http status code.
batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus :: Lens.Lens' BatchDisassociateClientDeviceFromCoreDeviceResponse Prelude.Int
batchDisassociateClientDeviceFromCoreDeviceResponse_httpStatus = Lens.lens (\BatchDisassociateClientDeviceFromCoreDeviceResponse' {httpStatus} -> httpStatus) (\s@BatchDisassociateClientDeviceFromCoreDeviceResponse' {} a -> s {httpStatus = a} :: BatchDisassociateClientDeviceFromCoreDeviceResponse)

instance
  Prelude.NFData
    BatchDisassociateClientDeviceFromCoreDeviceResponse
  where
  rnf
    BatchDisassociateClientDeviceFromCoreDeviceResponse' {..} =
      Prelude.rnf errorEntries
        `Prelude.seq` Prelude.rnf httpStatus