{-# 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.LakeFormation.GetTemporaryGlueTableCredentials
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Allows a caller in a secure environment to assume a role with permission
-- to access Amazon S3. In order to vend such credentials, Lake Formation
-- assumes the role associated with a registered location, for example an
-- Amazon S3 bucket, with a scope down policy which restricts the access to
-- a single prefix.
module Amazonka.LakeFormation.GetTemporaryGlueTableCredentials
  ( -- * Creating a Request
    GetTemporaryGlueTableCredentials (..),
    newGetTemporaryGlueTableCredentials,

    -- * Request Lenses
    getTemporaryGlueTableCredentials_auditContext,
    getTemporaryGlueTableCredentials_durationSeconds,
    getTemporaryGlueTableCredentials_permissions,
    getTemporaryGlueTableCredentials_tableArn,
    getTemporaryGlueTableCredentials_supportedPermissionTypes,

    -- * Destructuring the Response
    GetTemporaryGlueTableCredentialsResponse (..),
    newGetTemporaryGlueTableCredentialsResponse,

    -- * Response Lenses
    getTemporaryGlueTableCredentialsResponse_accessKeyId,
    getTemporaryGlueTableCredentialsResponse_expiration,
    getTemporaryGlueTableCredentialsResponse_secretAccessKey,
    getTemporaryGlueTableCredentialsResponse_sessionToken,
    getTemporaryGlueTableCredentialsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newGetTemporaryGlueTableCredentials' smart constructor.
data GetTemporaryGlueTableCredentials = GetTemporaryGlueTableCredentials'
  { -- | A structure representing context to access a resource (column names,
    -- query ID, etc).
    GetTemporaryGlueTableCredentials -> Maybe AuditContext
auditContext :: Prelude.Maybe AuditContext,
    -- | The time period, between 900 and 21,600 seconds, for the timeout of the
    -- temporary credentials.
    GetTemporaryGlueTableCredentials -> Maybe Natural
durationSeconds :: Prelude.Maybe Prelude.Natural,
    -- | Filters the request based on the user having been granted a list of
    -- specified permissions on the requested resource(s).
    GetTemporaryGlueTableCredentials -> Maybe [Permission]
permissions :: Prelude.Maybe [Permission],
    -- | The ARN identifying a table in the Data Catalog for the temporary
    -- credentials request.
    GetTemporaryGlueTableCredentials -> Text
tableArn :: Prelude.Text,
    -- | A list of supported permission types for the table. Valid values are
    -- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.
    GetTemporaryGlueTableCredentials -> NonEmpty PermissionType
supportedPermissionTypes :: Prelude.NonEmpty PermissionType
  }
  deriving (GetTemporaryGlueTableCredentials
-> GetTemporaryGlueTableCredentials -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetTemporaryGlueTableCredentials
-> GetTemporaryGlueTableCredentials -> Bool
$c/= :: GetTemporaryGlueTableCredentials
-> GetTemporaryGlueTableCredentials -> Bool
== :: GetTemporaryGlueTableCredentials
-> GetTemporaryGlueTableCredentials -> Bool
$c== :: GetTemporaryGlueTableCredentials
-> GetTemporaryGlueTableCredentials -> Bool
Prelude.Eq, ReadPrec [GetTemporaryGlueTableCredentials]
ReadPrec GetTemporaryGlueTableCredentials
Int -> ReadS GetTemporaryGlueTableCredentials
ReadS [GetTemporaryGlueTableCredentials]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetTemporaryGlueTableCredentials]
$creadListPrec :: ReadPrec [GetTemporaryGlueTableCredentials]
readPrec :: ReadPrec GetTemporaryGlueTableCredentials
$creadPrec :: ReadPrec GetTemporaryGlueTableCredentials
readList :: ReadS [GetTemporaryGlueTableCredentials]
$creadList :: ReadS [GetTemporaryGlueTableCredentials]
readsPrec :: Int -> ReadS GetTemporaryGlueTableCredentials
$creadsPrec :: Int -> ReadS GetTemporaryGlueTableCredentials
Prelude.Read, Int -> GetTemporaryGlueTableCredentials -> ShowS
[GetTemporaryGlueTableCredentials] -> ShowS
GetTemporaryGlueTableCredentials -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetTemporaryGlueTableCredentials] -> ShowS
$cshowList :: [GetTemporaryGlueTableCredentials] -> ShowS
show :: GetTemporaryGlueTableCredentials -> String
$cshow :: GetTemporaryGlueTableCredentials -> String
showsPrec :: Int -> GetTemporaryGlueTableCredentials -> ShowS
$cshowsPrec :: Int -> GetTemporaryGlueTableCredentials -> ShowS
Prelude.Show, forall x.
Rep GetTemporaryGlueTableCredentials x
-> GetTemporaryGlueTableCredentials
forall x.
GetTemporaryGlueTableCredentials
-> Rep GetTemporaryGlueTableCredentials x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetTemporaryGlueTableCredentials x
-> GetTemporaryGlueTableCredentials
$cfrom :: forall x.
GetTemporaryGlueTableCredentials
-> Rep GetTemporaryGlueTableCredentials x
Prelude.Generic)

-- |
-- Create a value of 'GetTemporaryGlueTableCredentials' 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:
--
-- 'auditContext', 'getTemporaryGlueTableCredentials_auditContext' - A structure representing context to access a resource (column names,
-- query ID, etc).
--
-- 'durationSeconds', 'getTemporaryGlueTableCredentials_durationSeconds' - The time period, between 900 and 21,600 seconds, for the timeout of the
-- temporary credentials.
--
-- 'permissions', 'getTemporaryGlueTableCredentials_permissions' - Filters the request based on the user having been granted a list of
-- specified permissions on the requested resource(s).
--
-- 'tableArn', 'getTemporaryGlueTableCredentials_tableArn' - The ARN identifying a table in the Data Catalog for the temporary
-- credentials request.
--
-- 'supportedPermissionTypes', 'getTemporaryGlueTableCredentials_supportedPermissionTypes' - A list of supported permission types for the table. Valid values are
-- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.
newGetTemporaryGlueTableCredentials ::
  -- | 'tableArn'
  Prelude.Text ->
  -- | 'supportedPermissionTypes'
  Prelude.NonEmpty PermissionType ->
  GetTemporaryGlueTableCredentials
newGetTemporaryGlueTableCredentials :: Text -> NonEmpty PermissionType -> GetTemporaryGlueTableCredentials
newGetTemporaryGlueTableCredentials
  Text
pTableArn_
  NonEmpty PermissionType
pSupportedPermissionTypes_ =
    GetTemporaryGlueTableCredentials'
      { $sel:auditContext:GetTemporaryGlueTableCredentials' :: Maybe AuditContext
auditContext =
          forall a. Maybe a
Prelude.Nothing,
        $sel:durationSeconds:GetTemporaryGlueTableCredentials' :: Maybe Natural
durationSeconds = forall a. Maybe a
Prelude.Nothing,
        $sel:permissions:GetTemporaryGlueTableCredentials' :: Maybe [Permission]
permissions = forall a. Maybe a
Prelude.Nothing,
        $sel:tableArn:GetTemporaryGlueTableCredentials' :: Text
tableArn = Text
pTableArn_,
        $sel:supportedPermissionTypes:GetTemporaryGlueTableCredentials' :: NonEmpty PermissionType
supportedPermissionTypes =
          forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
            forall t b. AReview t b -> b -> t
Lens.# NonEmpty PermissionType
pSupportedPermissionTypes_
      }

-- | A structure representing context to access a resource (column names,
-- query ID, etc).
getTemporaryGlueTableCredentials_auditContext :: Lens.Lens' GetTemporaryGlueTableCredentials (Prelude.Maybe AuditContext)
getTemporaryGlueTableCredentials_auditContext :: Lens' GetTemporaryGlueTableCredentials (Maybe AuditContext)
getTemporaryGlueTableCredentials_auditContext = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentials' {Maybe AuditContext
auditContext :: Maybe AuditContext
$sel:auditContext:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe AuditContext
auditContext} -> Maybe AuditContext
auditContext) (\s :: GetTemporaryGlueTableCredentials
s@GetTemporaryGlueTableCredentials' {} Maybe AuditContext
a -> GetTemporaryGlueTableCredentials
s {$sel:auditContext:GetTemporaryGlueTableCredentials' :: Maybe AuditContext
auditContext = Maybe AuditContext
a} :: GetTemporaryGlueTableCredentials)

-- | The time period, between 900 and 21,600 seconds, for the timeout of the
-- temporary credentials.
getTemporaryGlueTableCredentials_durationSeconds :: Lens.Lens' GetTemporaryGlueTableCredentials (Prelude.Maybe Prelude.Natural)
getTemporaryGlueTableCredentials_durationSeconds :: Lens' GetTemporaryGlueTableCredentials (Maybe Natural)
getTemporaryGlueTableCredentials_durationSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentials' {Maybe Natural
durationSeconds :: Maybe Natural
$sel:durationSeconds:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe Natural
durationSeconds} -> Maybe Natural
durationSeconds) (\s :: GetTemporaryGlueTableCredentials
s@GetTemporaryGlueTableCredentials' {} Maybe Natural
a -> GetTemporaryGlueTableCredentials
s {$sel:durationSeconds:GetTemporaryGlueTableCredentials' :: Maybe Natural
durationSeconds = Maybe Natural
a} :: GetTemporaryGlueTableCredentials)

-- | Filters the request based on the user having been granted a list of
-- specified permissions on the requested resource(s).
getTemporaryGlueTableCredentials_permissions :: Lens.Lens' GetTemporaryGlueTableCredentials (Prelude.Maybe [Permission])
getTemporaryGlueTableCredentials_permissions :: Lens' GetTemporaryGlueTableCredentials (Maybe [Permission])
getTemporaryGlueTableCredentials_permissions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentials' {Maybe [Permission]
permissions :: Maybe [Permission]
$sel:permissions:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe [Permission]
permissions} -> Maybe [Permission]
permissions) (\s :: GetTemporaryGlueTableCredentials
s@GetTemporaryGlueTableCredentials' {} Maybe [Permission]
a -> GetTemporaryGlueTableCredentials
s {$sel:permissions:GetTemporaryGlueTableCredentials' :: Maybe [Permission]
permissions = Maybe [Permission]
a} :: GetTemporaryGlueTableCredentials) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ARN identifying a table in the Data Catalog for the temporary
-- credentials request.
getTemporaryGlueTableCredentials_tableArn :: Lens.Lens' GetTemporaryGlueTableCredentials Prelude.Text
getTemporaryGlueTableCredentials_tableArn :: Lens' GetTemporaryGlueTableCredentials Text
getTemporaryGlueTableCredentials_tableArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentials' {Text
tableArn :: Text
$sel:tableArn:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Text
tableArn} -> Text
tableArn) (\s :: GetTemporaryGlueTableCredentials
s@GetTemporaryGlueTableCredentials' {} Text
a -> GetTemporaryGlueTableCredentials
s {$sel:tableArn:GetTemporaryGlueTableCredentials' :: Text
tableArn = Text
a} :: GetTemporaryGlueTableCredentials)

-- | A list of supported permission types for the table. Valid values are
-- @COLUMN_PERMISSION@ and @CELL_FILTER_PERMISSION@.
getTemporaryGlueTableCredentials_supportedPermissionTypes :: Lens.Lens' GetTemporaryGlueTableCredentials (Prelude.NonEmpty PermissionType)
getTemporaryGlueTableCredentials_supportedPermissionTypes :: Lens' GetTemporaryGlueTableCredentials (NonEmpty PermissionType)
getTemporaryGlueTableCredentials_supportedPermissionTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentials' {NonEmpty PermissionType
supportedPermissionTypes :: NonEmpty PermissionType
$sel:supportedPermissionTypes:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> NonEmpty PermissionType
supportedPermissionTypes} -> NonEmpty PermissionType
supportedPermissionTypes) (\s :: GetTemporaryGlueTableCredentials
s@GetTemporaryGlueTableCredentials' {} NonEmpty PermissionType
a -> GetTemporaryGlueTableCredentials
s {$sel:supportedPermissionTypes:GetTemporaryGlueTableCredentials' :: NonEmpty PermissionType
supportedPermissionTypes = NonEmpty PermissionType
a} :: GetTemporaryGlueTableCredentials) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Core.AWSRequest
    GetTemporaryGlueTableCredentials
  where
  type
    AWSResponse GetTemporaryGlueTableCredentials =
      GetTemporaryGlueTableCredentialsResponse
  request :: (Service -> Service)
-> GetTemporaryGlueTableCredentials
-> Request GetTemporaryGlueTableCredentials
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 GetTemporaryGlueTableCredentials
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetTemporaryGlueTableCredentials)))
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 POSIX
-> Maybe Text
-> Maybe Text
-> Int
-> GetTemporaryGlueTableCredentialsResponse
GetTemporaryGlueTableCredentialsResponse'
            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
"AccessKeyId")
            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
"Expiration")
            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
"SecretAccessKey")
            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
"SessionToken")
            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
    GetTemporaryGlueTableCredentials
  where
  hashWithSalt :: Int -> GetTemporaryGlueTableCredentials -> Int
hashWithSalt
    Int
_salt
    GetTemporaryGlueTableCredentials' {Maybe Natural
Maybe [Permission]
Maybe AuditContext
NonEmpty PermissionType
Text
supportedPermissionTypes :: NonEmpty PermissionType
tableArn :: Text
permissions :: Maybe [Permission]
durationSeconds :: Maybe Natural
auditContext :: Maybe AuditContext
$sel:supportedPermissionTypes:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> NonEmpty PermissionType
$sel:tableArn:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Text
$sel:permissions:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe [Permission]
$sel:durationSeconds:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe Natural
$sel:auditContext:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe AuditContext
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AuditContext
auditContext
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
durationSeconds
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Permission]
permissions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
tableArn
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty PermissionType
supportedPermissionTypes

instance
  Prelude.NFData
    GetTemporaryGlueTableCredentials
  where
  rnf :: GetTemporaryGlueTableCredentials -> ()
rnf GetTemporaryGlueTableCredentials' {Maybe Natural
Maybe [Permission]
Maybe AuditContext
NonEmpty PermissionType
Text
supportedPermissionTypes :: NonEmpty PermissionType
tableArn :: Text
permissions :: Maybe [Permission]
durationSeconds :: Maybe Natural
auditContext :: Maybe AuditContext
$sel:supportedPermissionTypes:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> NonEmpty PermissionType
$sel:tableArn:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Text
$sel:permissions:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe [Permission]
$sel:durationSeconds:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe Natural
$sel:auditContext:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe AuditContext
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AuditContext
auditContext
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
durationSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Permission]
permissions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
tableArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty PermissionType
supportedPermissionTypes

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

instance Data.ToJSON GetTemporaryGlueTableCredentials where
  toJSON :: GetTemporaryGlueTableCredentials -> Value
toJSON GetTemporaryGlueTableCredentials' {Maybe Natural
Maybe [Permission]
Maybe AuditContext
NonEmpty PermissionType
Text
supportedPermissionTypes :: NonEmpty PermissionType
tableArn :: Text
permissions :: Maybe [Permission]
durationSeconds :: Maybe Natural
auditContext :: Maybe AuditContext
$sel:supportedPermissionTypes:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> NonEmpty PermissionType
$sel:tableArn:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Text
$sel:permissions:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe [Permission]
$sel:durationSeconds:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe Natural
$sel:auditContext:GetTemporaryGlueTableCredentials' :: GetTemporaryGlueTableCredentials -> Maybe AuditContext
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AuditContext" 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 AuditContext
auditContext,
            (Key
"DurationSeconds" 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 Natural
durationSeconds,
            (Key
"Permissions" 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 [Permission]
permissions,
            forall a. a -> Maybe a
Prelude.Just (Key
"TableArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
tableArn),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"SupportedPermissionTypes"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty PermissionType
supportedPermissionTypes
              )
          ]
      )

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

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

-- | /See:/ 'newGetTemporaryGlueTableCredentialsResponse' smart constructor.
data GetTemporaryGlueTableCredentialsResponse = GetTemporaryGlueTableCredentialsResponse'
  { -- | The access key ID for the temporary credentials.
    GetTemporaryGlueTableCredentialsResponse -> Maybe Text
accessKeyId :: Prelude.Maybe Prelude.Text,
    -- | The date and time when the temporary credentials expire.
    GetTemporaryGlueTableCredentialsResponse -> Maybe POSIX
expiration :: Prelude.Maybe Data.POSIX,
    -- | The secret key for the temporary credentials.
    GetTemporaryGlueTableCredentialsResponse -> Maybe Text
secretAccessKey :: Prelude.Maybe Prelude.Text,
    -- | The session token for the temporary credentials.
    GetTemporaryGlueTableCredentialsResponse -> Maybe Text
sessionToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetTemporaryGlueTableCredentialsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetTemporaryGlueTableCredentialsResponse
-> GetTemporaryGlueTableCredentialsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetTemporaryGlueTableCredentialsResponse
-> GetTemporaryGlueTableCredentialsResponse -> Bool
$c/= :: GetTemporaryGlueTableCredentialsResponse
-> GetTemporaryGlueTableCredentialsResponse -> Bool
== :: GetTemporaryGlueTableCredentialsResponse
-> GetTemporaryGlueTableCredentialsResponse -> Bool
$c== :: GetTemporaryGlueTableCredentialsResponse
-> GetTemporaryGlueTableCredentialsResponse -> Bool
Prelude.Eq, ReadPrec [GetTemporaryGlueTableCredentialsResponse]
ReadPrec GetTemporaryGlueTableCredentialsResponse
Int -> ReadS GetTemporaryGlueTableCredentialsResponse
ReadS [GetTemporaryGlueTableCredentialsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetTemporaryGlueTableCredentialsResponse]
$creadListPrec :: ReadPrec [GetTemporaryGlueTableCredentialsResponse]
readPrec :: ReadPrec GetTemporaryGlueTableCredentialsResponse
$creadPrec :: ReadPrec GetTemporaryGlueTableCredentialsResponse
readList :: ReadS [GetTemporaryGlueTableCredentialsResponse]
$creadList :: ReadS [GetTemporaryGlueTableCredentialsResponse]
readsPrec :: Int -> ReadS GetTemporaryGlueTableCredentialsResponse
$creadsPrec :: Int -> ReadS GetTemporaryGlueTableCredentialsResponse
Prelude.Read, Int -> GetTemporaryGlueTableCredentialsResponse -> ShowS
[GetTemporaryGlueTableCredentialsResponse] -> ShowS
GetTemporaryGlueTableCredentialsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetTemporaryGlueTableCredentialsResponse] -> ShowS
$cshowList :: [GetTemporaryGlueTableCredentialsResponse] -> ShowS
show :: GetTemporaryGlueTableCredentialsResponse -> String
$cshow :: GetTemporaryGlueTableCredentialsResponse -> String
showsPrec :: Int -> GetTemporaryGlueTableCredentialsResponse -> ShowS
$cshowsPrec :: Int -> GetTemporaryGlueTableCredentialsResponse -> ShowS
Prelude.Show, forall x.
Rep GetTemporaryGlueTableCredentialsResponse x
-> GetTemporaryGlueTableCredentialsResponse
forall x.
GetTemporaryGlueTableCredentialsResponse
-> Rep GetTemporaryGlueTableCredentialsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetTemporaryGlueTableCredentialsResponse x
-> GetTemporaryGlueTableCredentialsResponse
$cfrom :: forall x.
GetTemporaryGlueTableCredentialsResponse
-> Rep GetTemporaryGlueTableCredentialsResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetTemporaryGlueTableCredentialsResponse' 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:
--
-- 'accessKeyId', 'getTemporaryGlueTableCredentialsResponse_accessKeyId' - The access key ID for the temporary credentials.
--
-- 'expiration', 'getTemporaryGlueTableCredentialsResponse_expiration' - The date and time when the temporary credentials expire.
--
-- 'secretAccessKey', 'getTemporaryGlueTableCredentialsResponse_secretAccessKey' - The secret key for the temporary credentials.
--
-- 'sessionToken', 'getTemporaryGlueTableCredentialsResponse_sessionToken' - The session token for the temporary credentials.
--
-- 'httpStatus', 'getTemporaryGlueTableCredentialsResponse_httpStatus' - The response's http status code.
newGetTemporaryGlueTableCredentialsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetTemporaryGlueTableCredentialsResponse
newGetTemporaryGlueTableCredentialsResponse :: Int -> GetTemporaryGlueTableCredentialsResponse
newGetTemporaryGlueTableCredentialsResponse
  Int
pHttpStatus_ =
    GetTemporaryGlueTableCredentialsResponse'
      { $sel:accessKeyId:GetTemporaryGlueTableCredentialsResponse' :: Maybe Text
accessKeyId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:expiration:GetTemporaryGlueTableCredentialsResponse' :: Maybe POSIX
expiration = forall a. Maybe a
Prelude.Nothing,
        $sel:secretAccessKey:GetTemporaryGlueTableCredentialsResponse' :: Maybe Text
secretAccessKey = forall a. Maybe a
Prelude.Nothing,
        $sel:sessionToken:GetTemporaryGlueTableCredentialsResponse' :: Maybe Text
sessionToken = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetTemporaryGlueTableCredentialsResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The access key ID for the temporary credentials.
getTemporaryGlueTableCredentialsResponse_accessKeyId :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse (Prelude.Maybe Prelude.Text)
getTemporaryGlueTableCredentialsResponse_accessKeyId :: Lens' GetTemporaryGlueTableCredentialsResponse (Maybe Text)
getTemporaryGlueTableCredentialsResponse_accessKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {Maybe Text
accessKeyId :: Maybe Text
$sel:accessKeyId:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Maybe Text
accessKeyId} -> Maybe Text
accessKeyId) (\s :: GetTemporaryGlueTableCredentialsResponse
s@GetTemporaryGlueTableCredentialsResponse' {} Maybe Text
a -> GetTemporaryGlueTableCredentialsResponse
s {$sel:accessKeyId:GetTemporaryGlueTableCredentialsResponse' :: Maybe Text
accessKeyId = Maybe Text
a} :: GetTemporaryGlueTableCredentialsResponse)

-- | The date and time when the temporary credentials expire.
getTemporaryGlueTableCredentialsResponse_expiration :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse (Prelude.Maybe Prelude.UTCTime)
getTemporaryGlueTableCredentialsResponse_expiration :: Lens' GetTemporaryGlueTableCredentialsResponse (Maybe UTCTime)
getTemporaryGlueTableCredentialsResponse_expiration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {Maybe POSIX
expiration :: Maybe POSIX
$sel:expiration:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Maybe POSIX
expiration} -> Maybe POSIX
expiration) (\s :: GetTemporaryGlueTableCredentialsResponse
s@GetTemporaryGlueTableCredentialsResponse' {} Maybe POSIX
a -> GetTemporaryGlueTableCredentialsResponse
s {$sel:expiration:GetTemporaryGlueTableCredentialsResponse' :: Maybe POSIX
expiration = Maybe POSIX
a} :: GetTemporaryGlueTableCredentialsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The secret key for the temporary credentials.
getTemporaryGlueTableCredentialsResponse_secretAccessKey :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse (Prelude.Maybe Prelude.Text)
getTemporaryGlueTableCredentialsResponse_secretAccessKey :: Lens' GetTemporaryGlueTableCredentialsResponse (Maybe Text)
getTemporaryGlueTableCredentialsResponse_secretAccessKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {Maybe Text
secretAccessKey :: Maybe Text
$sel:secretAccessKey:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Maybe Text
secretAccessKey} -> Maybe Text
secretAccessKey) (\s :: GetTemporaryGlueTableCredentialsResponse
s@GetTemporaryGlueTableCredentialsResponse' {} Maybe Text
a -> GetTemporaryGlueTableCredentialsResponse
s {$sel:secretAccessKey:GetTemporaryGlueTableCredentialsResponse' :: Maybe Text
secretAccessKey = Maybe Text
a} :: GetTemporaryGlueTableCredentialsResponse)

-- | The session token for the temporary credentials.
getTemporaryGlueTableCredentialsResponse_sessionToken :: Lens.Lens' GetTemporaryGlueTableCredentialsResponse (Prelude.Maybe Prelude.Text)
getTemporaryGlueTableCredentialsResponse_sessionToken :: Lens' GetTemporaryGlueTableCredentialsResponse (Maybe Text)
getTemporaryGlueTableCredentialsResponse_sessionToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetTemporaryGlueTableCredentialsResponse' {Maybe Text
sessionToken :: Maybe Text
$sel:sessionToken:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Maybe Text
sessionToken} -> Maybe Text
sessionToken) (\s :: GetTemporaryGlueTableCredentialsResponse
s@GetTemporaryGlueTableCredentialsResponse' {} Maybe Text
a -> GetTemporaryGlueTableCredentialsResponse
s {$sel:sessionToken:GetTemporaryGlueTableCredentialsResponse' :: Maybe Text
sessionToken = Maybe Text
a} :: GetTemporaryGlueTableCredentialsResponse)

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

instance
  Prelude.NFData
    GetTemporaryGlueTableCredentialsResponse
  where
  rnf :: GetTemporaryGlueTableCredentialsResponse -> ()
rnf GetTemporaryGlueTableCredentialsResponse' {Int
Maybe Text
Maybe POSIX
httpStatus :: Int
sessionToken :: Maybe Text
secretAccessKey :: Maybe Text
expiration :: Maybe POSIX
accessKeyId :: Maybe Text
$sel:httpStatus:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Int
$sel:sessionToken:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Maybe Text
$sel:secretAccessKey:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Maybe Text
$sel:expiration:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Maybe POSIX
$sel:accessKeyId:GetTemporaryGlueTableCredentialsResponse' :: GetTemporaryGlueTableCredentialsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accessKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
expiration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
secretAccessKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sessionToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus