{-# 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.Lambda.AddLayerVersionPermission
-- 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 permissions to the resource-based policy of a version of an
-- <https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html Lambda layer>.
-- Use this action to grant layer usage permission to other accounts. You
-- can grant permission to a single account, all accounts in an
-- organization, or all Amazon Web Services accounts.
--
-- To revoke permission, call RemoveLayerVersionPermission with the
-- statement ID that you specified when you added it.
module Amazonka.Lambda.AddLayerVersionPermission
  ( -- * Creating a Request
    AddLayerVersionPermission (..),
    newAddLayerVersionPermission,

    -- * Request Lenses
    addLayerVersionPermission_organizationId,
    addLayerVersionPermission_revisionId,
    addLayerVersionPermission_layerName,
    addLayerVersionPermission_versionNumber,
    addLayerVersionPermission_statementId,
    addLayerVersionPermission_action,
    addLayerVersionPermission_principal,

    -- * Destructuring the Response
    AddLayerVersionPermissionResponse (..),
    newAddLayerVersionPermissionResponse,

    -- * Response Lenses
    addLayerVersionPermissionResponse_revisionId,
    addLayerVersionPermissionResponse_statement,
    addLayerVersionPermissionResponse_httpStatus,
  )
where

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

-- | /See:/ 'newAddLayerVersionPermission' smart constructor.
data AddLayerVersionPermission = AddLayerVersionPermission'
  { -- | With the principal set to @*@, grant permission to all accounts in the
    -- specified organization.
    AddLayerVersionPermission -> Maybe Text
organizationId :: Prelude.Maybe Prelude.Text,
    -- | Only update the policy if the revision ID matches the ID specified. Use
    -- this option to avoid modifying a policy that has changed since you last
    -- read it.
    AddLayerVersionPermission -> Maybe Text
revisionId :: Prelude.Maybe Prelude.Text,
    -- | The name or Amazon Resource Name (ARN) of the layer.
    AddLayerVersionPermission -> Text
layerName :: Prelude.Text,
    -- | The version number.
    AddLayerVersionPermission -> Integer
versionNumber :: Prelude.Integer,
    -- | An identifier that distinguishes the policy from others on the same
    -- layer version.
    AddLayerVersionPermission -> Text
statementId :: Prelude.Text,
    -- | The API action that grants access to the layer. For example,
    -- @lambda:GetLayerVersion@.
    AddLayerVersionPermission -> Text
action :: Prelude.Text,
    -- | An account ID, or @*@ to grant layer usage permission to all accounts in
    -- an organization, or all Amazon Web Services accounts (if
    -- @organizationId@ is not specified). For the last case, make sure that
    -- you really do want all Amazon Web Services accounts to have usage
    -- permission to this layer.
    AddLayerVersionPermission -> Text
principal :: Prelude.Text
  }
  deriving (AddLayerVersionPermission -> AddLayerVersionPermission -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AddLayerVersionPermission -> AddLayerVersionPermission -> Bool
$c/= :: AddLayerVersionPermission -> AddLayerVersionPermission -> Bool
== :: AddLayerVersionPermission -> AddLayerVersionPermission -> Bool
$c== :: AddLayerVersionPermission -> AddLayerVersionPermission -> Bool
Prelude.Eq, ReadPrec [AddLayerVersionPermission]
ReadPrec AddLayerVersionPermission
Int -> ReadS AddLayerVersionPermission
ReadS [AddLayerVersionPermission]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AddLayerVersionPermission]
$creadListPrec :: ReadPrec [AddLayerVersionPermission]
readPrec :: ReadPrec AddLayerVersionPermission
$creadPrec :: ReadPrec AddLayerVersionPermission
readList :: ReadS [AddLayerVersionPermission]
$creadList :: ReadS [AddLayerVersionPermission]
readsPrec :: Int -> ReadS AddLayerVersionPermission
$creadsPrec :: Int -> ReadS AddLayerVersionPermission
Prelude.Read, Int -> AddLayerVersionPermission -> ShowS
[AddLayerVersionPermission] -> ShowS
AddLayerVersionPermission -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AddLayerVersionPermission] -> ShowS
$cshowList :: [AddLayerVersionPermission] -> ShowS
show :: AddLayerVersionPermission -> String
$cshow :: AddLayerVersionPermission -> String
showsPrec :: Int -> AddLayerVersionPermission -> ShowS
$cshowsPrec :: Int -> AddLayerVersionPermission -> ShowS
Prelude.Show, forall x.
Rep AddLayerVersionPermission x -> AddLayerVersionPermission
forall x.
AddLayerVersionPermission -> Rep AddLayerVersionPermission x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AddLayerVersionPermission x -> AddLayerVersionPermission
$cfrom :: forall x.
AddLayerVersionPermission -> Rep AddLayerVersionPermission x
Prelude.Generic)

-- |
-- Create a value of 'AddLayerVersionPermission' 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:
--
-- 'organizationId', 'addLayerVersionPermission_organizationId' - With the principal set to @*@, grant permission to all accounts in the
-- specified organization.
--
-- 'revisionId', 'addLayerVersionPermission_revisionId' - Only update the policy if the revision ID matches the ID specified. Use
-- this option to avoid modifying a policy that has changed since you last
-- read it.
--
-- 'layerName', 'addLayerVersionPermission_layerName' - The name or Amazon Resource Name (ARN) of the layer.
--
-- 'versionNumber', 'addLayerVersionPermission_versionNumber' - The version number.
--
-- 'statementId', 'addLayerVersionPermission_statementId' - An identifier that distinguishes the policy from others on the same
-- layer version.
--
-- 'action', 'addLayerVersionPermission_action' - The API action that grants access to the layer. For example,
-- @lambda:GetLayerVersion@.
--
-- 'principal', 'addLayerVersionPermission_principal' - An account ID, or @*@ to grant layer usage permission to all accounts in
-- an organization, or all Amazon Web Services accounts (if
-- @organizationId@ is not specified). For the last case, make sure that
-- you really do want all Amazon Web Services accounts to have usage
-- permission to this layer.
newAddLayerVersionPermission ::
  -- | 'layerName'
  Prelude.Text ->
  -- | 'versionNumber'
  Prelude.Integer ->
  -- | 'statementId'
  Prelude.Text ->
  -- | 'action'
  Prelude.Text ->
  -- | 'principal'
  Prelude.Text ->
  AddLayerVersionPermission
newAddLayerVersionPermission :: Text
-> Integer -> Text -> Text -> Text -> AddLayerVersionPermission
newAddLayerVersionPermission
  Text
pLayerName_
  Integer
pVersionNumber_
  Text
pStatementId_
  Text
pAction_
  Text
pPrincipal_ =
    AddLayerVersionPermission'
      { $sel:organizationId:AddLayerVersionPermission' :: Maybe Text
organizationId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:revisionId:AddLayerVersionPermission' :: Maybe Text
revisionId = forall a. Maybe a
Prelude.Nothing,
        $sel:layerName:AddLayerVersionPermission' :: Text
layerName = Text
pLayerName_,
        $sel:versionNumber:AddLayerVersionPermission' :: Integer
versionNumber = Integer
pVersionNumber_,
        $sel:statementId:AddLayerVersionPermission' :: Text
statementId = Text
pStatementId_,
        $sel:action:AddLayerVersionPermission' :: Text
action = Text
pAction_,
        $sel:principal:AddLayerVersionPermission' :: Text
principal = Text
pPrincipal_
      }

-- | With the principal set to @*@, grant permission to all accounts in the
-- specified organization.
addLayerVersionPermission_organizationId :: Lens.Lens' AddLayerVersionPermission (Prelude.Maybe Prelude.Text)
addLayerVersionPermission_organizationId :: Lens' AddLayerVersionPermission (Maybe Text)
addLayerVersionPermission_organizationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermission' {Maybe Text
organizationId :: Maybe Text
$sel:organizationId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
organizationId} -> Maybe Text
organizationId) (\s :: AddLayerVersionPermission
s@AddLayerVersionPermission' {} Maybe Text
a -> AddLayerVersionPermission
s {$sel:organizationId:AddLayerVersionPermission' :: Maybe Text
organizationId = Maybe Text
a} :: AddLayerVersionPermission)

-- | Only update the policy if the revision ID matches the ID specified. Use
-- this option to avoid modifying a policy that has changed since you last
-- read it.
addLayerVersionPermission_revisionId :: Lens.Lens' AddLayerVersionPermission (Prelude.Maybe Prelude.Text)
addLayerVersionPermission_revisionId :: Lens' AddLayerVersionPermission (Maybe Text)
addLayerVersionPermission_revisionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermission' {Maybe Text
revisionId :: Maybe Text
$sel:revisionId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
revisionId} -> Maybe Text
revisionId) (\s :: AddLayerVersionPermission
s@AddLayerVersionPermission' {} Maybe Text
a -> AddLayerVersionPermission
s {$sel:revisionId:AddLayerVersionPermission' :: Maybe Text
revisionId = Maybe Text
a} :: AddLayerVersionPermission)

-- | The name or Amazon Resource Name (ARN) of the layer.
addLayerVersionPermission_layerName :: Lens.Lens' AddLayerVersionPermission Prelude.Text
addLayerVersionPermission_layerName :: Lens' AddLayerVersionPermission Text
addLayerVersionPermission_layerName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermission' {Text
layerName :: Text
$sel:layerName:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
layerName} -> Text
layerName) (\s :: AddLayerVersionPermission
s@AddLayerVersionPermission' {} Text
a -> AddLayerVersionPermission
s {$sel:layerName:AddLayerVersionPermission' :: Text
layerName = Text
a} :: AddLayerVersionPermission)

-- | The version number.
addLayerVersionPermission_versionNumber :: Lens.Lens' AddLayerVersionPermission Prelude.Integer
addLayerVersionPermission_versionNumber :: Lens' AddLayerVersionPermission Integer
addLayerVersionPermission_versionNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermission' {Integer
versionNumber :: Integer
$sel:versionNumber:AddLayerVersionPermission' :: AddLayerVersionPermission -> Integer
versionNumber} -> Integer
versionNumber) (\s :: AddLayerVersionPermission
s@AddLayerVersionPermission' {} Integer
a -> AddLayerVersionPermission
s {$sel:versionNumber:AddLayerVersionPermission' :: Integer
versionNumber = Integer
a} :: AddLayerVersionPermission)

-- | An identifier that distinguishes the policy from others on the same
-- layer version.
addLayerVersionPermission_statementId :: Lens.Lens' AddLayerVersionPermission Prelude.Text
addLayerVersionPermission_statementId :: Lens' AddLayerVersionPermission Text
addLayerVersionPermission_statementId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermission' {Text
statementId :: Text
$sel:statementId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
statementId} -> Text
statementId) (\s :: AddLayerVersionPermission
s@AddLayerVersionPermission' {} Text
a -> AddLayerVersionPermission
s {$sel:statementId:AddLayerVersionPermission' :: Text
statementId = Text
a} :: AddLayerVersionPermission)

-- | The API action that grants access to the layer. For example,
-- @lambda:GetLayerVersion@.
addLayerVersionPermission_action :: Lens.Lens' AddLayerVersionPermission Prelude.Text
addLayerVersionPermission_action :: Lens' AddLayerVersionPermission Text
addLayerVersionPermission_action = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermission' {Text
action :: Text
$sel:action:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
action} -> Text
action) (\s :: AddLayerVersionPermission
s@AddLayerVersionPermission' {} Text
a -> AddLayerVersionPermission
s {$sel:action:AddLayerVersionPermission' :: Text
action = Text
a} :: AddLayerVersionPermission)

-- | An account ID, or @*@ to grant layer usage permission to all accounts in
-- an organization, or all Amazon Web Services accounts (if
-- @organizationId@ is not specified). For the last case, make sure that
-- you really do want all Amazon Web Services accounts to have usage
-- permission to this layer.
addLayerVersionPermission_principal :: Lens.Lens' AddLayerVersionPermission Prelude.Text
addLayerVersionPermission_principal :: Lens' AddLayerVersionPermission Text
addLayerVersionPermission_principal = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermission' {Text
principal :: Text
$sel:principal:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
principal} -> Text
principal) (\s :: AddLayerVersionPermission
s@AddLayerVersionPermission' {} Text
a -> AddLayerVersionPermission
s {$sel:principal:AddLayerVersionPermission' :: Text
principal = Text
a} :: AddLayerVersionPermission)

instance Core.AWSRequest AddLayerVersionPermission where
  type
    AWSResponse AddLayerVersionPermission =
      AddLayerVersionPermissionResponse
  request :: (Service -> Service)
-> AddLayerVersionPermission -> Request AddLayerVersionPermission
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 AddLayerVersionPermission
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse AddLayerVersionPermission)))
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 ->
          Maybe Text
-> Maybe Text -> Int -> AddLayerVersionPermissionResponse
AddLayerVersionPermissionResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"RevisionId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Statement")
            forall (f :: * -> *) a b. Applicative f => 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))
      )

instance Prelude.Hashable AddLayerVersionPermission where
  hashWithSalt :: Int -> AddLayerVersionPermission -> Int
hashWithSalt Int
_salt AddLayerVersionPermission' {Integer
Maybe Text
Text
principal :: Text
action :: Text
statementId :: Text
versionNumber :: Integer
layerName :: Text
revisionId :: Maybe Text
organizationId :: Maybe Text
$sel:principal:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:action:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:statementId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:versionNumber:AddLayerVersionPermission' :: AddLayerVersionPermission -> Integer
$sel:layerName:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:revisionId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
$sel:organizationId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
organizationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
revisionId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
layerName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Integer
versionNumber
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
statementId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
action
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
principal

instance Prelude.NFData AddLayerVersionPermission where
  rnf :: AddLayerVersionPermission -> ()
rnf AddLayerVersionPermission' {Integer
Maybe Text
Text
principal :: Text
action :: Text
statementId :: Text
versionNumber :: Integer
layerName :: Text
revisionId :: Maybe Text
organizationId :: Maybe Text
$sel:principal:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:action:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:statementId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:versionNumber:AddLayerVersionPermission' :: AddLayerVersionPermission -> Integer
$sel:layerName:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:revisionId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
$sel:organizationId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
organizationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
revisionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
layerName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Integer
versionNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
statementId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
action
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
principal

instance Data.ToHeaders AddLayerVersionPermission where
  toHeaders :: AddLayerVersionPermission -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON AddLayerVersionPermission where
  toJSON :: AddLayerVersionPermission -> Value
toJSON AddLayerVersionPermission' {Integer
Maybe Text
Text
principal :: Text
action :: Text
statementId :: Text
versionNumber :: Integer
layerName :: Text
revisionId :: Maybe Text
organizationId :: Maybe Text
$sel:principal:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:action:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:statementId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:versionNumber:AddLayerVersionPermission' :: AddLayerVersionPermission -> Integer
$sel:layerName:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:revisionId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
$sel:organizationId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"OrganizationId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
organizationId,
            forall a. a -> Maybe a
Prelude.Just (Key
"StatementId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
statementId),
            forall a. a -> Maybe a
Prelude.Just (Key
"Action" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
action),
            forall a. a -> Maybe a
Prelude.Just (Key
"Principal" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
principal)
          ]
      )

instance Data.ToPath AddLayerVersionPermission where
  toPath :: AddLayerVersionPermission -> ByteString
toPath AddLayerVersionPermission' {Integer
Maybe Text
Text
principal :: Text
action :: Text
statementId :: Text
versionNumber :: Integer
layerName :: Text
revisionId :: Maybe Text
organizationId :: Maybe Text
$sel:principal:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:action:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:statementId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:versionNumber:AddLayerVersionPermission' :: AddLayerVersionPermission -> Integer
$sel:layerName:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:revisionId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
$sel:organizationId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2018-10-31/layers/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
layerName,
        ByteString
"/versions/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Integer
versionNumber,
        ByteString
"/policy"
      ]

instance Data.ToQuery AddLayerVersionPermission where
  toQuery :: AddLayerVersionPermission -> QueryString
toQuery AddLayerVersionPermission' {Integer
Maybe Text
Text
principal :: Text
action :: Text
statementId :: Text
versionNumber :: Integer
layerName :: Text
revisionId :: Maybe Text
organizationId :: Maybe Text
$sel:principal:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:action:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:statementId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:versionNumber:AddLayerVersionPermission' :: AddLayerVersionPermission -> Integer
$sel:layerName:AddLayerVersionPermission' :: AddLayerVersionPermission -> Text
$sel:revisionId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
$sel:organizationId:AddLayerVersionPermission' :: AddLayerVersionPermission -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"RevisionId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
revisionId]

-- | /See:/ 'newAddLayerVersionPermissionResponse' smart constructor.
data AddLayerVersionPermissionResponse = AddLayerVersionPermissionResponse'
  { -- | A unique identifier for the current revision of the policy.
    AddLayerVersionPermissionResponse -> Maybe Text
revisionId :: Prelude.Maybe Prelude.Text,
    -- | The permission statement.
    AddLayerVersionPermissionResponse -> Maybe Text
statement :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    AddLayerVersionPermissionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (AddLayerVersionPermissionResponse
-> AddLayerVersionPermissionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AddLayerVersionPermissionResponse
-> AddLayerVersionPermissionResponse -> Bool
$c/= :: AddLayerVersionPermissionResponse
-> AddLayerVersionPermissionResponse -> Bool
== :: AddLayerVersionPermissionResponse
-> AddLayerVersionPermissionResponse -> Bool
$c== :: AddLayerVersionPermissionResponse
-> AddLayerVersionPermissionResponse -> Bool
Prelude.Eq, ReadPrec [AddLayerVersionPermissionResponse]
ReadPrec AddLayerVersionPermissionResponse
Int -> ReadS AddLayerVersionPermissionResponse
ReadS [AddLayerVersionPermissionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AddLayerVersionPermissionResponse]
$creadListPrec :: ReadPrec [AddLayerVersionPermissionResponse]
readPrec :: ReadPrec AddLayerVersionPermissionResponse
$creadPrec :: ReadPrec AddLayerVersionPermissionResponse
readList :: ReadS [AddLayerVersionPermissionResponse]
$creadList :: ReadS [AddLayerVersionPermissionResponse]
readsPrec :: Int -> ReadS AddLayerVersionPermissionResponse
$creadsPrec :: Int -> ReadS AddLayerVersionPermissionResponse
Prelude.Read, Int -> AddLayerVersionPermissionResponse -> ShowS
[AddLayerVersionPermissionResponse] -> ShowS
AddLayerVersionPermissionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AddLayerVersionPermissionResponse] -> ShowS
$cshowList :: [AddLayerVersionPermissionResponse] -> ShowS
show :: AddLayerVersionPermissionResponse -> String
$cshow :: AddLayerVersionPermissionResponse -> String
showsPrec :: Int -> AddLayerVersionPermissionResponse -> ShowS
$cshowsPrec :: Int -> AddLayerVersionPermissionResponse -> ShowS
Prelude.Show, forall x.
Rep AddLayerVersionPermissionResponse x
-> AddLayerVersionPermissionResponse
forall x.
AddLayerVersionPermissionResponse
-> Rep AddLayerVersionPermissionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AddLayerVersionPermissionResponse x
-> AddLayerVersionPermissionResponse
$cfrom :: forall x.
AddLayerVersionPermissionResponse
-> Rep AddLayerVersionPermissionResponse x
Prelude.Generic)

-- |
-- Create a value of 'AddLayerVersionPermissionResponse' 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:
--
-- 'revisionId', 'addLayerVersionPermissionResponse_revisionId' - A unique identifier for the current revision of the policy.
--
-- 'statement', 'addLayerVersionPermissionResponse_statement' - The permission statement.
--
-- 'httpStatus', 'addLayerVersionPermissionResponse_httpStatus' - The response's http status code.
newAddLayerVersionPermissionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  AddLayerVersionPermissionResponse
newAddLayerVersionPermissionResponse :: Int -> AddLayerVersionPermissionResponse
newAddLayerVersionPermissionResponse Int
pHttpStatus_ =
  AddLayerVersionPermissionResponse'
    { $sel:revisionId:AddLayerVersionPermissionResponse' :: Maybe Text
revisionId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:statement:AddLayerVersionPermissionResponse' :: Maybe Text
statement = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:AddLayerVersionPermissionResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A unique identifier for the current revision of the policy.
addLayerVersionPermissionResponse_revisionId :: Lens.Lens' AddLayerVersionPermissionResponse (Prelude.Maybe Prelude.Text)
addLayerVersionPermissionResponse_revisionId :: Lens' AddLayerVersionPermissionResponse (Maybe Text)
addLayerVersionPermissionResponse_revisionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermissionResponse' {Maybe Text
revisionId :: Maybe Text
$sel:revisionId:AddLayerVersionPermissionResponse' :: AddLayerVersionPermissionResponse -> Maybe Text
revisionId} -> Maybe Text
revisionId) (\s :: AddLayerVersionPermissionResponse
s@AddLayerVersionPermissionResponse' {} Maybe Text
a -> AddLayerVersionPermissionResponse
s {$sel:revisionId:AddLayerVersionPermissionResponse' :: Maybe Text
revisionId = Maybe Text
a} :: AddLayerVersionPermissionResponse)

-- | The permission statement.
addLayerVersionPermissionResponse_statement :: Lens.Lens' AddLayerVersionPermissionResponse (Prelude.Maybe Prelude.Text)
addLayerVersionPermissionResponse_statement :: Lens' AddLayerVersionPermissionResponse (Maybe Text)
addLayerVersionPermissionResponse_statement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AddLayerVersionPermissionResponse' {Maybe Text
statement :: Maybe Text
$sel:statement:AddLayerVersionPermissionResponse' :: AddLayerVersionPermissionResponse -> Maybe Text
statement} -> Maybe Text
statement) (\s :: AddLayerVersionPermissionResponse
s@AddLayerVersionPermissionResponse' {} Maybe Text
a -> AddLayerVersionPermissionResponse
s {$sel:statement:AddLayerVersionPermissionResponse' :: Maybe Text
statement = Maybe Text
a} :: AddLayerVersionPermissionResponse)

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

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