packages feed

amazonka-iot-2.0: gen/Amazonka/IoT/StartThingRegistrationTask.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.IoT.StartThingRegistrationTask
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a bulk thing provisioning task.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions StartThingRegistrationTask>
-- action.
module Amazonka.IoT.StartThingRegistrationTask
  ( -- * Creating a Request
    StartThingRegistrationTask (..),
    newStartThingRegistrationTask,

    -- * Request Lenses
    startThingRegistrationTask_templateBody,
    startThingRegistrationTask_inputFileBucket,
    startThingRegistrationTask_inputFileKey,
    startThingRegistrationTask_roleArn,

    -- * Destructuring the Response
    StartThingRegistrationTaskResponse (..),
    newStartThingRegistrationTaskResponse,

    -- * Response Lenses
    startThingRegistrationTaskResponse_taskId,
    startThingRegistrationTaskResponse_httpStatus,
  )
where

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

-- | /See:/ 'newStartThingRegistrationTask' smart constructor.
data StartThingRegistrationTask = StartThingRegistrationTask'
  { -- | The provisioning template.
    templateBody :: Prelude.Text,
    -- | The S3 bucket that contains the input file.
    inputFileBucket :: Prelude.Text,
    -- | The name of input file within the S3 bucket. This file contains a
    -- newline delimited JSON file. Each line contains the parameter values to
    -- provision one device (thing).
    inputFileKey :: Prelude.Text,
    -- | The IAM role ARN that grants permission the input file.
    roleArn :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartThingRegistrationTask' 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:
--
-- 'templateBody', 'startThingRegistrationTask_templateBody' - The provisioning template.
--
-- 'inputFileBucket', 'startThingRegistrationTask_inputFileBucket' - The S3 bucket that contains the input file.
--
-- 'inputFileKey', 'startThingRegistrationTask_inputFileKey' - The name of input file within the S3 bucket. This file contains a
-- newline delimited JSON file. Each line contains the parameter values to
-- provision one device (thing).
--
-- 'roleArn', 'startThingRegistrationTask_roleArn' - The IAM role ARN that grants permission the input file.
newStartThingRegistrationTask ::
  -- | 'templateBody'
  Prelude.Text ->
  -- | 'inputFileBucket'
  Prelude.Text ->
  -- | 'inputFileKey'
  Prelude.Text ->
  -- | 'roleArn'
  Prelude.Text ->
  StartThingRegistrationTask
newStartThingRegistrationTask
  pTemplateBody_
  pInputFileBucket_
  pInputFileKey_
  pRoleArn_ =
    StartThingRegistrationTask'
      { templateBody =
          pTemplateBody_,
        inputFileBucket = pInputFileBucket_,
        inputFileKey = pInputFileKey_,
        roleArn = pRoleArn_
      }

-- | The provisioning template.
startThingRegistrationTask_templateBody :: Lens.Lens' StartThingRegistrationTask Prelude.Text
startThingRegistrationTask_templateBody = Lens.lens (\StartThingRegistrationTask' {templateBody} -> templateBody) (\s@StartThingRegistrationTask' {} a -> s {templateBody = a} :: StartThingRegistrationTask)

-- | The S3 bucket that contains the input file.
startThingRegistrationTask_inputFileBucket :: Lens.Lens' StartThingRegistrationTask Prelude.Text
startThingRegistrationTask_inputFileBucket = Lens.lens (\StartThingRegistrationTask' {inputFileBucket} -> inputFileBucket) (\s@StartThingRegistrationTask' {} a -> s {inputFileBucket = a} :: StartThingRegistrationTask)

-- | The name of input file within the S3 bucket. This file contains a
-- newline delimited JSON file. Each line contains the parameter values to
-- provision one device (thing).
startThingRegistrationTask_inputFileKey :: Lens.Lens' StartThingRegistrationTask Prelude.Text
startThingRegistrationTask_inputFileKey = Lens.lens (\StartThingRegistrationTask' {inputFileKey} -> inputFileKey) (\s@StartThingRegistrationTask' {} a -> s {inputFileKey = a} :: StartThingRegistrationTask)

-- | The IAM role ARN that grants permission the input file.
startThingRegistrationTask_roleArn :: Lens.Lens' StartThingRegistrationTask Prelude.Text
startThingRegistrationTask_roleArn = Lens.lens (\StartThingRegistrationTask' {roleArn} -> roleArn) (\s@StartThingRegistrationTask' {} a -> s {roleArn = a} :: StartThingRegistrationTask)

instance Core.AWSRequest StartThingRegistrationTask where
  type
    AWSResponse StartThingRegistrationTask =
      StartThingRegistrationTaskResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          StartThingRegistrationTaskResponse'
            Prelude.<$> (x Data..?> "taskId")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable StartThingRegistrationTask where
  hashWithSalt _salt StartThingRegistrationTask' {..} =
    _salt
      `Prelude.hashWithSalt` templateBody
      `Prelude.hashWithSalt` inputFileBucket
      `Prelude.hashWithSalt` inputFileKey
      `Prelude.hashWithSalt` roleArn

instance Prelude.NFData StartThingRegistrationTask where
  rnf StartThingRegistrationTask' {..} =
    Prelude.rnf templateBody
      `Prelude.seq` Prelude.rnf inputFileBucket
      `Prelude.seq` Prelude.rnf inputFileKey
      `Prelude.seq` Prelude.rnf roleArn

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

instance Data.ToJSON StartThingRegistrationTask where
  toJSON StartThingRegistrationTask' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just ("templateBody" Data..= templateBody),
            Prelude.Just
              ("inputFileBucket" Data..= inputFileBucket),
            Prelude.Just ("inputFileKey" Data..= inputFileKey),
            Prelude.Just ("roleArn" Data..= roleArn)
          ]
      )

instance Data.ToPath StartThingRegistrationTask where
  toPath = Prelude.const "/thing-registration-tasks"

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

-- | /See:/ 'newStartThingRegistrationTaskResponse' smart constructor.
data StartThingRegistrationTaskResponse = StartThingRegistrationTaskResponse'
  { -- | The bulk thing provisioning task ID.
    taskId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartThingRegistrationTaskResponse' 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:
--
-- 'taskId', 'startThingRegistrationTaskResponse_taskId' - The bulk thing provisioning task ID.
--
-- 'httpStatus', 'startThingRegistrationTaskResponse_httpStatus' - The response's http status code.
newStartThingRegistrationTaskResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartThingRegistrationTaskResponse
newStartThingRegistrationTaskResponse pHttpStatus_ =
  StartThingRegistrationTaskResponse'
    { taskId =
        Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The bulk thing provisioning task ID.
startThingRegistrationTaskResponse_taskId :: Lens.Lens' StartThingRegistrationTaskResponse (Prelude.Maybe Prelude.Text)
startThingRegistrationTaskResponse_taskId = Lens.lens (\StartThingRegistrationTaskResponse' {taskId} -> taskId) (\s@StartThingRegistrationTaskResponse' {} a -> s {taskId = a} :: StartThingRegistrationTaskResponse)

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

instance
  Prelude.NFData
    StartThingRegistrationTaskResponse
  where
  rnf StartThingRegistrationTaskResponse' {..} =
    Prelude.rnf taskId
      `Prelude.seq` Prelude.rnf httpStatus