packages feed

amazonka-wellarchitected-2.0: gen/Amazonka/WellArchitected/UpdateWorkloadShare.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.WellArchitected.UpdateWorkloadShare
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Update a workload share.
module Amazonka.WellArchitected.UpdateWorkloadShare
  ( -- * Creating a Request
    UpdateWorkloadShare (..),
    newUpdateWorkloadShare,

    -- * Request Lenses
    updateWorkloadShare_shareId,
    updateWorkloadShare_workloadId,
    updateWorkloadShare_permissionType,

    -- * Destructuring the Response
    UpdateWorkloadShareResponse (..),
    newUpdateWorkloadShareResponse,

    -- * Response Lenses
    updateWorkloadShareResponse_workloadId,
    updateWorkloadShareResponse_workloadShare,
    updateWorkloadShareResponse_httpStatus,
  )
where

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

-- | Input for Update Workload Share
--
-- /See:/ 'newUpdateWorkloadShare' smart constructor.
data UpdateWorkloadShare = UpdateWorkloadShare'
  { shareId :: Prelude.Text,
    workloadId :: Prelude.Text,
    permissionType :: PermissionType
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateWorkloadShare' 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:
--
-- 'shareId', 'updateWorkloadShare_shareId' - Undocumented member.
--
-- 'workloadId', 'updateWorkloadShare_workloadId' - Undocumented member.
--
-- 'permissionType', 'updateWorkloadShare_permissionType' - Undocumented member.
newUpdateWorkloadShare ::
  -- | 'shareId'
  Prelude.Text ->
  -- | 'workloadId'
  Prelude.Text ->
  -- | 'permissionType'
  PermissionType ->
  UpdateWorkloadShare
newUpdateWorkloadShare
  pShareId_
  pWorkloadId_
  pPermissionType_ =
    UpdateWorkloadShare'
      { shareId = pShareId_,
        workloadId = pWorkloadId_,
        permissionType = pPermissionType_
      }

-- | Undocumented member.
updateWorkloadShare_shareId :: Lens.Lens' UpdateWorkloadShare Prelude.Text
updateWorkloadShare_shareId = Lens.lens (\UpdateWorkloadShare' {shareId} -> shareId) (\s@UpdateWorkloadShare' {} a -> s {shareId = a} :: UpdateWorkloadShare)

-- | Undocumented member.
updateWorkloadShare_workloadId :: Lens.Lens' UpdateWorkloadShare Prelude.Text
updateWorkloadShare_workloadId = Lens.lens (\UpdateWorkloadShare' {workloadId} -> workloadId) (\s@UpdateWorkloadShare' {} a -> s {workloadId = a} :: UpdateWorkloadShare)

-- | Undocumented member.
updateWorkloadShare_permissionType :: Lens.Lens' UpdateWorkloadShare PermissionType
updateWorkloadShare_permissionType = Lens.lens (\UpdateWorkloadShare' {permissionType} -> permissionType) (\s@UpdateWorkloadShare' {} a -> s {permissionType = a} :: UpdateWorkloadShare)

instance Core.AWSRequest UpdateWorkloadShare where
  type
    AWSResponse UpdateWorkloadShare =
      UpdateWorkloadShareResponse
  request overrides =
    Request.patchJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          UpdateWorkloadShareResponse'
            Prelude.<$> (x Data..?> "WorkloadId")
            Prelude.<*> (x Data..?> "WorkloadShare")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable UpdateWorkloadShare where
  hashWithSalt _salt UpdateWorkloadShare' {..} =
    _salt
      `Prelude.hashWithSalt` shareId
      `Prelude.hashWithSalt` workloadId
      `Prelude.hashWithSalt` permissionType

instance Prelude.NFData UpdateWorkloadShare where
  rnf UpdateWorkloadShare' {..} =
    Prelude.rnf shareId
      `Prelude.seq` Prelude.rnf workloadId
      `Prelude.seq` Prelude.rnf permissionType

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

instance Data.ToJSON UpdateWorkloadShare where
  toJSON UpdateWorkloadShare' {..} =
    Data.object
      ( Prelude.catMaybes
          [ Prelude.Just
              ("PermissionType" Data..= permissionType)
          ]
      )

instance Data.ToPath UpdateWorkloadShare where
  toPath UpdateWorkloadShare' {..} =
    Prelude.mconcat
      [ "/workloads/",
        Data.toBS workloadId,
        "/shares/",
        Data.toBS shareId
      ]

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

-- | Input for Update Workload Share
--
-- /See:/ 'newUpdateWorkloadShareResponse' smart constructor.
data UpdateWorkloadShareResponse = UpdateWorkloadShareResponse'
  { workloadId :: Prelude.Maybe Prelude.Text,
    workloadShare :: Prelude.Maybe WorkloadShare,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpdateWorkloadShareResponse' 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:
--
-- 'workloadId', 'updateWorkloadShareResponse_workloadId' - Undocumented member.
--
-- 'workloadShare', 'updateWorkloadShareResponse_workloadShare' - Undocumented member.
--
-- 'httpStatus', 'updateWorkloadShareResponse_httpStatus' - The response's http status code.
newUpdateWorkloadShareResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateWorkloadShareResponse
newUpdateWorkloadShareResponse pHttpStatus_ =
  UpdateWorkloadShareResponse'
    { workloadId =
        Prelude.Nothing,
      workloadShare = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | Undocumented member.
updateWorkloadShareResponse_workloadId :: Lens.Lens' UpdateWorkloadShareResponse (Prelude.Maybe Prelude.Text)
updateWorkloadShareResponse_workloadId = Lens.lens (\UpdateWorkloadShareResponse' {workloadId} -> workloadId) (\s@UpdateWorkloadShareResponse' {} a -> s {workloadId = a} :: UpdateWorkloadShareResponse)

-- | Undocumented member.
updateWorkloadShareResponse_workloadShare :: Lens.Lens' UpdateWorkloadShareResponse (Prelude.Maybe WorkloadShare)
updateWorkloadShareResponse_workloadShare = Lens.lens (\UpdateWorkloadShareResponse' {workloadShare} -> workloadShare) (\s@UpdateWorkloadShareResponse' {} a -> s {workloadShare = a} :: UpdateWorkloadShareResponse)

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

instance Prelude.NFData UpdateWorkloadShareResponse where
  rnf UpdateWorkloadShareResponse' {..} =
    Prelude.rnf workloadId
      `Prelude.seq` Prelude.rnf workloadShare
      `Prelude.seq` Prelude.rnf httpStatus