packages feed

amazonka-finspace-data-2.0: gen/Amazonka/FinSpaceData/AssociateUserToPermissionGroup.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.FinSpaceData.AssociateUserToPermissionGroup
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Adds a user account to a permission group to grant permissions for
-- actions a user can perform in FinSpace.
module Amazonka.FinSpaceData.AssociateUserToPermissionGroup
  ( -- * Creating a Request
    AssociateUserToPermissionGroup (..),
    newAssociateUserToPermissionGroup,

    -- * Request Lenses
    associateUserToPermissionGroup_clientToken,
    associateUserToPermissionGroup_permissionGroupId,
    associateUserToPermissionGroup_userId,

    -- * Destructuring the Response
    AssociateUserToPermissionGroupResponse (..),
    newAssociateUserToPermissionGroupResponse,

    -- * Response Lenses
    associateUserToPermissionGroupResponse_statusCode,
  )
where

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

-- | /See:/ 'newAssociateUserToPermissionGroup' smart constructor.
data AssociateUserToPermissionGroup = AssociateUserToPermissionGroup'
  { -- | A token that ensures idempotency. This token expires in 10 minutes.
    clientToken :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the permission group.
    permissionGroupId :: Prelude.Text,
    -- | The unique identifier for the user.
    userId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AssociateUserToPermissionGroup' 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:
--
-- 'clientToken', 'associateUserToPermissionGroup_clientToken' - A token that ensures idempotency. This token expires in 10 minutes.
--
-- 'permissionGroupId', 'associateUserToPermissionGroup_permissionGroupId' - The unique identifier for the permission group.
--
-- 'userId', 'associateUserToPermissionGroup_userId' - The unique identifier for the user.
newAssociateUserToPermissionGroup ::
  -- | 'permissionGroupId'
  Prelude.Text ->
  -- | 'userId'
  Prelude.Text ->
  AssociateUserToPermissionGroup
newAssociateUserToPermissionGroup
  pPermissionGroupId_
  pUserId_ =
    AssociateUserToPermissionGroup'
      { clientToken =
          Prelude.Nothing,
        permissionGroupId = pPermissionGroupId_,
        userId = pUserId_
      }

-- | A token that ensures idempotency. This token expires in 10 minutes.
associateUserToPermissionGroup_clientToken :: Lens.Lens' AssociateUserToPermissionGroup (Prelude.Maybe Prelude.Text)
associateUserToPermissionGroup_clientToken = Lens.lens (\AssociateUserToPermissionGroup' {clientToken} -> clientToken) (\s@AssociateUserToPermissionGroup' {} a -> s {clientToken = a} :: AssociateUserToPermissionGroup)

-- | The unique identifier for the permission group.
associateUserToPermissionGroup_permissionGroupId :: Lens.Lens' AssociateUserToPermissionGroup Prelude.Text
associateUserToPermissionGroup_permissionGroupId = Lens.lens (\AssociateUserToPermissionGroup' {permissionGroupId} -> permissionGroupId) (\s@AssociateUserToPermissionGroup' {} a -> s {permissionGroupId = a} :: AssociateUserToPermissionGroup)

-- | The unique identifier for the user.
associateUserToPermissionGroup_userId :: Lens.Lens' AssociateUserToPermissionGroup Prelude.Text
associateUserToPermissionGroup_userId = Lens.lens (\AssociateUserToPermissionGroup' {userId} -> userId) (\s@AssociateUserToPermissionGroup' {} a -> s {userId = a} :: AssociateUserToPermissionGroup)

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

instance
  Prelude.Hashable
    AssociateUserToPermissionGroup
  where
  hashWithSalt
    _salt
    AssociateUserToPermissionGroup' {..} =
      _salt
        `Prelude.hashWithSalt` clientToken
        `Prelude.hashWithSalt` permissionGroupId
        `Prelude.hashWithSalt` userId

instance
  Prelude.NFData
    AssociateUserToPermissionGroup
  where
  rnf AssociateUserToPermissionGroup' {..} =
    Prelude.rnf clientToken
      `Prelude.seq` Prelude.rnf permissionGroupId
      `Prelude.seq` Prelude.rnf userId

instance
  Data.ToHeaders
    AssociateUserToPermissionGroup
  where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

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

instance Data.ToPath AssociateUserToPermissionGroup where
  toPath AssociateUserToPermissionGroup' {..} =
    Prelude.mconcat
      [ "/permission-group/",
        Data.toBS permissionGroupId,
        "/users/",
        Data.toBS userId
      ]

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

-- | /See:/ 'newAssociateUserToPermissionGroupResponse' smart constructor.
data AssociateUserToPermissionGroupResponse = AssociateUserToPermissionGroupResponse'
  { -- | The returned status code of the response.
    statusCode :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AssociateUserToPermissionGroupResponse' 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:
--
-- 'statusCode', 'associateUserToPermissionGroupResponse_statusCode' - The returned status code of the response.
newAssociateUserToPermissionGroupResponse ::
  -- | 'statusCode'
  Prelude.Int ->
  AssociateUserToPermissionGroupResponse
newAssociateUserToPermissionGroupResponse
  pStatusCode_ =
    AssociateUserToPermissionGroupResponse'
      { statusCode =
          pStatusCode_
      }

-- | The returned status code of the response.
associateUserToPermissionGroupResponse_statusCode :: Lens.Lens' AssociateUserToPermissionGroupResponse Prelude.Int
associateUserToPermissionGroupResponse_statusCode = Lens.lens (\AssociateUserToPermissionGroupResponse' {statusCode} -> statusCode) (\s@AssociateUserToPermissionGroupResponse' {} a -> s {statusCode = a} :: AssociateUserToPermissionGroupResponse)

instance
  Prelude.NFData
    AssociateUserToPermissionGroupResponse
  where
  rnf AssociateUserToPermissionGroupResponse' {..} =
    Prelude.rnf statusCode