{-# 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.SageMaker.GetModelPackageGroupPolicy
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets a resource policy that manages access for a model group. For
-- information about resource policies, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html Identity-based policies and resource-based policies>
-- in the /Amazon Web Services Identity and Access Management User Guide./.
module Amazonka.SageMaker.GetModelPackageGroupPolicy
  ( -- * Creating a Request
    GetModelPackageGroupPolicy (..),
    newGetModelPackageGroupPolicy,

    -- * Request Lenses
    getModelPackageGroupPolicy_modelPackageGroupName,

    -- * Destructuring the Response
    GetModelPackageGroupPolicyResponse (..),
    newGetModelPackageGroupPolicyResponse,

    -- * Response Lenses
    getModelPackageGroupPolicyResponse_httpStatus,
    getModelPackageGroupPolicyResponse_resourcePolicy,
  )
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.SageMaker.Types

-- | /See:/ 'newGetModelPackageGroupPolicy' smart constructor.
data GetModelPackageGroupPolicy = GetModelPackageGroupPolicy'
  { -- | The name of the model group for which to get the resource policy.
    GetModelPackageGroupPolicy -> Text
modelPackageGroupName :: Prelude.Text
  }
  deriving (GetModelPackageGroupPolicy -> GetModelPackageGroupPolicy -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetModelPackageGroupPolicy -> GetModelPackageGroupPolicy -> Bool
$c/= :: GetModelPackageGroupPolicy -> GetModelPackageGroupPolicy -> Bool
== :: GetModelPackageGroupPolicy -> GetModelPackageGroupPolicy -> Bool
$c== :: GetModelPackageGroupPolicy -> GetModelPackageGroupPolicy -> Bool
Prelude.Eq, ReadPrec [GetModelPackageGroupPolicy]
ReadPrec GetModelPackageGroupPolicy
Int -> ReadS GetModelPackageGroupPolicy
ReadS [GetModelPackageGroupPolicy]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetModelPackageGroupPolicy]
$creadListPrec :: ReadPrec [GetModelPackageGroupPolicy]
readPrec :: ReadPrec GetModelPackageGroupPolicy
$creadPrec :: ReadPrec GetModelPackageGroupPolicy
readList :: ReadS [GetModelPackageGroupPolicy]
$creadList :: ReadS [GetModelPackageGroupPolicy]
readsPrec :: Int -> ReadS GetModelPackageGroupPolicy
$creadsPrec :: Int -> ReadS GetModelPackageGroupPolicy
Prelude.Read, Int -> GetModelPackageGroupPolicy -> ShowS
[GetModelPackageGroupPolicy] -> ShowS
GetModelPackageGroupPolicy -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetModelPackageGroupPolicy] -> ShowS
$cshowList :: [GetModelPackageGroupPolicy] -> ShowS
show :: GetModelPackageGroupPolicy -> String
$cshow :: GetModelPackageGroupPolicy -> String
showsPrec :: Int -> GetModelPackageGroupPolicy -> ShowS
$cshowsPrec :: Int -> GetModelPackageGroupPolicy -> ShowS
Prelude.Show, forall x.
Rep GetModelPackageGroupPolicy x -> GetModelPackageGroupPolicy
forall x.
GetModelPackageGroupPolicy -> Rep GetModelPackageGroupPolicy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetModelPackageGroupPolicy x -> GetModelPackageGroupPolicy
$cfrom :: forall x.
GetModelPackageGroupPolicy -> Rep GetModelPackageGroupPolicy x
Prelude.Generic)

-- |
-- Create a value of 'GetModelPackageGroupPolicy' 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:
--
-- 'modelPackageGroupName', 'getModelPackageGroupPolicy_modelPackageGroupName' - The name of the model group for which to get the resource policy.
newGetModelPackageGroupPolicy ::
  -- | 'modelPackageGroupName'
  Prelude.Text ->
  GetModelPackageGroupPolicy
newGetModelPackageGroupPolicy :: Text -> GetModelPackageGroupPolicy
newGetModelPackageGroupPolicy Text
pModelPackageGroupName_ =
  GetModelPackageGroupPolicy'
    { $sel:modelPackageGroupName:GetModelPackageGroupPolicy' :: Text
modelPackageGroupName =
        Text
pModelPackageGroupName_
    }

-- | The name of the model group for which to get the resource policy.
getModelPackageGroupPolicy_modelPackageGroupName :: Lens.Lens' GetModelPackageGroupPolicy Prelude.Text
getModelPackageGroupPolicy_modelPackageGroupName :: Lens' GetModelPackageGroupPolicy Text
getModelPackageGroupPolicy_modelPackageGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetModelPackageGroupPolicy' {Text
modelPackageGroupName :: Text
$sel:modelPackageGroupName:GetModelPackageGroupPolicy' :: GetModelPackageGroupPolicy -> Text
modelPackageGroupName} -> Text
modelPackageGroupName) (\s :: GetModelPackageGroupPolicy
s@GetModelPackageGroupPolicy' {} Text
a -> GetModelPackageGroupPolicy
s {$sel:modelPackageGroupName:GetModelPackageGroupPolicy' :: Text
modelPackageGroupName = Text
a} :: GetModelPackageGroupPolicy)

instance Core.AWSRequest GetModelPackageGroupPolicy where
  type
    AWSResponse GetModelPackageGroupPolicy =
      GetModelPackageGroupPolicyResponse
  request :: (Service -> Service)
-> GetModelPackageGroupPolicy -> Request GetModelPackageGroupPolicy
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetModelPackageGroupPolicy
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetModelPackageGroupPolicy)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Int -> Text -> GetModelPackageGroupPolicyResponse
GetModelPackageGroupPolicyResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"ResourcePolicy")
      )

instance Prelude.Hashable GetModelPackageGroupPolicy where
  hashWithSalt :: Int -> GetModelPackageGroupPolicy -> Int
hashWithSalt Int
_salt GetModelPackageGroupPolicy' {Text
modelPackageGroupName :: Text
$sel:modelPackageGroupName:GetModelPackageGroupPolicy' :: GetModelPackageGroupPolicy -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
modelPackageGroupName

instance Prelude.NFData GetModelPackageGroupPolicy where
  rnf :: GetModelPackageGroupPolicy -> ()
rnf GetModelPackageGroupPolicy' {Text
modelPackageGroupName :: Text
$sel:modelPackageGroupName:GetModelPackageGroupPolicy' :: GetModelPackageGroupPolicy -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
modelPackageGroupName

instance Data.ToHeaders GetModelPackageGroupPolicy where
  toHeaders :: GetModelPackageGroupPolicy -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"SageMaker.GetModelPackageGroupPolicy" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON GetModelPackageGroupPolicy where
  toJSON :: GetModelPackageGroupPolicy -> Value
toJSON GetModelPackageGroupPolicy' {Text
modelPackageGroupName :: Text
$sel:modelPackageGroupName:GetModelPackageGroupPolicy' :: GetModelPackageGroupPolicy -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              ( Key
"ModelPackageGroupName"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
modelPackageGroupName
              )
          ]
      )

instance Data.ToPath GetModelPackageGroupPolicy where
  toPath :: GetModelPackageGroupPolicy -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery GetModelPackageGroupPolicy where
  toQuery :: GetModelPackageGroupPolicy -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newGetModelPackageGroupPolicyResponse' smart constructor.
data GetModelPackageGroupPolicyResponse = GetModelPackageGroupPolicyResponse'
  { -- | The response's http status code.
    GetModelPackageGroupPolicyResponse -> Int
httpStatus :: Prelude.Int,
    -- | The resource policy for the model group.
    GetModelPackageGroupPolicyResponse -> Text
resourcePolicy :: Prelude.Text
  }
  deriving (GetModelPackageGroupPolicyResponse
-> GetModelPackageGroupPolicyResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetModelPackageGroupPolicyResponse
-> GetModelPackageGroupPolicyResponse -> Bool
$c/= :: GetModelPackageGroupPolicyResponse
-> GetModelPackageGroupPolicyResponse -> Bool
== :: GetModelPackageGroupPolicyResponse
-> GetModelPackageGroupPolicyResponse -> Bool
$c== :: GetModelPackageGroupPolicyResponse
-> GetModelPackageGroupPolicyResponse -> Bool
Prelude.Eq, ReadPrec [GetModelPackageGroupPolicyResponse]
ReadPrec GetModelPackageGroupPolicyResponse
Int -> ReadS GetModelPackageGroupPolicyResponse
ReadS [GetModelPackageGroupPolicyResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetModelPackageGroupPolicyResponse]
$creadListPrec :: ReadPrec [GetModelPackageGroupPolicyResponse]
readPrec :: ReadPrec GetModelPackageGroupPolicyResponse
$creadPrec :: ReadPrec GetModelPackageGroupPolicyResponse
readList :: ReadS [GetModelPackageGroupPolicyResponse]
$creadList :: ReadS [GetModelPackageGroupPolicyResponse]
readsPrec :: Int -> ReadS GetModelPackageGroupPolicyResponse
$creadsPrec :: Int -> ReadS GetModelPackageGroupPolicyResponse
Prelude.Read, Int -> GetModelPackageGroupPolicyResponse -> ShowS
[GetModelPackageGroupPolicyResponse] -> ShowS
GetModelPackageGroupPolicyResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetModelPackageGroupPolicyResponse] -> ShowS
$cshowList :: [GetModelPackageGroupPolicyResponse] -> ShowS
show :: GetModelPackageGroupPolicyResponse -> String
$cshow :: GetModelPackageGroupPolicyResponse -> String
showsPrec :: Int -> GetModelPackageGroupPolicyResponse -> ShowS
$cshowsPrec :: Int -> GetModelPackageGroupPolicyResponse -> ShowS
Prelude.Show, forall x.
Rep GetModelPackageGroupPolicyResponse x
-> GetModelPackageGroupPolicyResponse
forall x.
GetModelPackageGroupPolicyResponse
-> Rep GetModelPackageGroupPolicyResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetModelPackageGroupPolicyResponse x
-> GetModelPackageGroupPolicyResponse
$cfrom :: forall x.
GetModelPackageGroupPolicyResponse
-> Rep GetModelPackageGroupPolicyResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetModelPackageGroupPolicyResponse' 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', 'getModelPackageGroupPolicyResponse_httpStatus' - The response's http status code.
--
-- 'resourcePolicy', 'getModelPackageGroupPolicyResponse_resourcePolicy' - The resource policy for the model group.
newGetModelPackageGroupPolicyResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'resourcePolicy'
  Prelude.Text ->
  GetModelPackageGroupPolicyResponse
newGetModelPackageGroupPolicyResponse :: Int -> Text -> GetModelPackageGroupPolicyResponse
newGetModelPackageGroupPolicyResponse
  Int
pHttpStatus_
  Text
pResourcePolicy_ =
    GetModelPackageGroupPolicyResponse'
      { $sel:httpStatus:GetModelPackageGroupPolicyResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:resourcePolicy:GetModelPackageGroupPolicyResponse' :: Text
resourcePolicy = Text
pResourcePolicy_
      }

-- | The response's http status code.
getModelPackageGroupPolicyResponse_httpStatus :: Lens.Lens' GetModelPackageGroupPolicyResponse Prelude.Int
getModelPackageGroupPolicyResponse_httpStatus :: Lens' GetModelPackageGroupPolicyResponse Int
getModelPackageGroupPolicyResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetModelPackageGroupPolicyResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetModelPackageGroupPolicyResponse' :: GetModelPackageGroupPolicyResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetModelPackageGroupPolicyResponse
s@GetModelPackageGroupPolicyResponse' {} Int
a -> GetModelPackageGroupPolicyResponse
s {$sel:httpStatus:GetModelPackageGroupPolicyResponse' :: Int
httpStatus = Int
a} :: GetModelPackageGroupPolicyResponse)

-- | The resource policy for the model group.
getModelPackageGroupPolicyResponse_resourcePolicy :: Lens.Lens' GetModelPackageGroupPolicyResponse Prelude.Text
getModelPackageGroupPolicyResponse_resourcePolicy :: Lens' GetModelPackageGroupPolicyResponse Text
getModelPackageGroupPolicyResponse_resourcePolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetModelPackageGroupPolicyResponse' {Text
resourcePolicy :: Text
$sel:resourcePolicy:GetModelPackageGroupPolicyResponse' :: GetModelPackageGroupPolicyResponse -> Text
resourcePolicy} -> Text
resourcePolicy) (\s :: GetModelPackageGroupPolicyResponse
s@GetModelPackageGroupPolicyResponse' {} Text
a -> GetModelPackageGroupPolicyResponse
s {$sel:resourcePolicy:GetModelPackageGroupPolicyResponse' :: Text
resourcePolicy = Text
a} :: GetModelPackageGroupPolicyResponse)

instance
  Prelude.NFData
    GetModelPackageGroupPolicyResponse
  where
  rnf :: GetModelPackageGroupPolicyResponse -> ()
rnf GetModelPackageGroupPolicyResponse' {Int
Text
resourcePolicy :: Text
httpStatus :: Int
$sel:resourcePolicy:GetModelPackageGroupPolicyResponse' :: GetModelPackageGroupPolicyResponse -> Text
$sel:httpStatus:GetModelPackageGroupPolicyResponse' :: GetModelPackageGroupPolicyResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
resourcePolicy