packages feed

amazonka-mechanicalturk-2.0: gen/Amazonka/MechanicalTurk/CreateAdditionalAssignmentsForHIT.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.MechanicalTurk.CreateAdditionalAssignmentsForHIT
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- The @CreateAdditionalAssignmentsForHIT@ operation increases the maximum
-- number of assignments of an existing HIT.
--
-- To extend the maximum number of assignments, specify the number of
-- additional assignments.
--
-- -   HITs created with fewer than 10 assignments cannot be extended to
--     have 10 or more assignments. Attempting to add assignments in a way
--     that brings the total number of assignments for a HIT from fewer
--     than 10 assignments to 10 or more assignments will result in an
--     @AWS.MechanicalTurk.InvalidMaximumAssignmentsIncrease@ exception.
--
-- -   HITs that were created before July 22, 2015 cannot be extended.
--     Attempting to extend HITs that were created before July 22, 2015
--     will result in an @AWS.MechanicalTurk.HITTooOldForExtension@
--     exception.
module Amazonka.MechanicalTurk.CreateAdditionalAssignmentsForHIT
  ( -- * Creating a Request
    CreateAdditionalAssignmentsForHIT (..),
    newCreateAdditionalAssignmentsForHIT,

    -- * Request Lenses
    createAdditionalAssignmentsForHIT_uniqueRequestToken,
    createAdditionalAssignmentsForHIT_hITId,
    createAdditionalAssignmentsForHIT_numberOfAdditionalAssignments,

    -- * Destructuring the Response
    CreateAdditionalAssignmentsForHITResponse (..),
    newCreateAdditionalAssignmentsForHITResponse,

    -- * Response Lenses
    createAdditionalAssignmentsForHITResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateAdditionalAssignmentsForHIT' smart constructor.
data CreateAdditionalAssignmentsForHIT = CreateAdditionalAssignmentsForHIT'
  { -- | A unique identifier for this request, which allows you to retry the call
    -- on error without extending the HIT multiple times. This is useful in
    -- cases such as network timeouts where it is unclear whether or not the
    -- call succeeded on the server. If the extend HIT already exists in the
    -- system from a previous call using the same @UniqueRequestToken@,
    -- subsequent calls will return an error with a message containing the
    -- request ID.
    uniqueRequestToken :: Prelude.Maybe Prelude.Text,
    -- | The ID of the HIT to extend.
    hITId :: Prelude.Text,
    -- | The number of additional assignments to request for this HIT.
    numberOfAdditionalAssignments :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateAdditionalAssignmentsForHIT' 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:
--
-- 'uniqueRequestToken', 'createAdditionalAssignmentsForHIT_uniqueRequestToken' - A unique identifier for this request, which allows you to retry the call
-- on error without extending the HIT multiple times. This is useful in
-- cases such as network timeouts where it is unclear whether or not the
-- call succeeded on the server. If the extend HIT already exists in the
-- system from a previous call using the same @UniqueRequestToken@,
-- subsequent calls will return an error with a message containing the
-- request ID.
--
-- 'hITId', 'createAdditionalAssignmentsForHIT_hITId' - The ID of the HIT to extend.
--
-- 'numberOfAdditionalAssignments', 'createAdditionalAssignmentsForHIT_numberOfAdditionalAssignments' - The number of additional assignments to request for this HIT.
newCreateAdditionalAssignmentsForHIT ::
  -- | 'hITId'
  Prelude.Text ->
  -- | 'numberOfAdditionalAssignments'
  Prelude.Int ->
  CreateAdditionalAssignmentsForHIT
newCreateAdditionalAssignmentsForHIT
  pHITId_
  pNumberOfAdditionalAssignments_ =
    CreateAdditionalAssignmentsForHIT'
      { uniqueRequestToken =
          Prelude.Nothing,
        hITId = pHITId_,
        numberOfAdditionalAssignments =
          pNumberOfAdditionalAssignments_
      }

-- | A unique identifier for this request, which allows you to retry the call
-- on error without extending the HIT multiple times. This is useful in
-- cases such as network timeouts where it is unclear whether or not the
-- call succeeded on the server. If the extend HIT already exists in the
-- system from a previous call using the same @UniqueRequestToken@,
-- subsequent calls will return an error with a message containing the
-- request ID.
createAdditionalAssignmentsForHIT_uniqueRequestToken :: Lens.Lens' CreateAdditionalAssignmentsForHIT (Prelude.Maybe Prelude.Text)
createAdditionalAssignmentsForHIT_uniqueRequestToken = Lens.lens (\CreateAdditionalAssignmentsForHIT' {uniqueRequestToken} -> uniqueRequestToken) (\s@CreateAdditionalAssignmentsForHIT' {} a -> s {uniqueRequestToken = a} :: CreateAdditionalAssignmentsForHIT)

-- | The ID of the HIT to extend.
createAdditionalAssignmentsForHIT_hITId :: Lens.Lens' CreateAdditionalAssignmentsForHIT Prelude.Text
createAdditionalAssignmentsForHIT_hITId = Lens.lens (\CreateAdditionalAssignmentsForHIT' {hITId} -> hITId) (\s@CreateAdditionalAssignmentsForHIT' {} a -> s {hITId = a} :: CreateAdditionalAssignmentsForHIT)

-- | The number of additional assignments to request for this HIT.
createAdditionalAssignmentsForHIT_numberOfAdditionalAssignments :: Lens.Lens' CreateAdditionalAssignmentsForHIT Prelude.Int
createAdditionalAssignmentsForHIT_numberOfAdditionalAssignments = Lens.lens (\CreateAdditionalAssignmentsForHIT' {numberOfAdditionalAssignments} -> numberOfAdditionalAssignments) (\s@CreateAdditionalAssignmentsForHIT' {} a -> s {numberOfAdditionalAssignments = a} :: CreateAdditionalAssignmentsForHIT)

instance
  Core.AWSRequest
    CreateAdditionalAssignmentsForHIT
  where
  type
    AWSResponse CreateAdditionalAssignmentsForHIT =
      CreateAdditionalAssignmentsForHITResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveEmpty
      ( \s h x ->
          CreateAdditionalAssignmentsForHITResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    CreateAdditionalAssignmentsForHIT
  where
  hashWithSalt
    _salt
    CreateAdditionalAssignmentsForHIT' {..} =
      _salt
        `Prelude.hashWithSalt` uniqueRequestToken
        `Prelude.hashWithSalt` hITId
        `Prelude.hashWithSalt` numberOfAdditionalAssignments

instance
  Prelude.NFData
    CreateAdditionalAssignmentsForHIT
  where
  rnf CreateAdditionalAssignmentsForHIT' {..} =
    Prelude.rnf uniqueRequestToken
      `Prelude.seq` Prelude.rnf hITId
      `Prelude.seq` Prelude.rnf numberOfAdditionalAssignments

instance
  Data.ToHeaders
    CreateAdditionalAssignmentsForHIT
  where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "MTurkRequesterServiceV20170117.CreateAdditionalAssignmentsForHIT" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    CreateAdditionalAssignmentsForHIT
  where
  toJSON CreateAdditionalAssignmentsForHIT' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("UniqueRequestToken" Data..=)
              Prelude.<$> uniqueRequestToken,
            Prelude.Just ("HITId" Data..= hITId),
            Prelude.Just
              ( "NumberOfAdditionalAssignments"
                  Data..= numberOfAdditionalAssignments
              )
          ]
      )

instance
  Data.ToPath
    CreateAdditionalAssignmentsForHIT
  where
  toPath = Prelude.const "/"

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

-- | /See:/ 'newCreateAdditionalAssignmentsForHITResponse' smart constructor.
data CreateAdditionalAssignmentsForHITResponse = CreateAdditionalAssignmentsForHITResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateAdditionalAssignmentsForHITResponse' 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:
--
-- 'httpStatus', 'createAdditionalAssignmentsForHITResponse_httpStatus' - The response's http status code.
newCreateAdditionalAssignmentsForHITResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateAdditionalAssignmentsForHITResponse
newCreateAdditionalAssignmentsForHITResponse
  pHttpStatus_ =
    CreateAdditionalAssignmentsForHITResponse'
      { httpStatus =
          pHttpStatus_
      }

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

instance
  Prelude.NFData
    CreateAdditionalAssignmentsForHITResponse
  where
  rnf CreateAdditionalAssignmentsForHITResponse' {..} =
    Prelude.rnf httpStatus