{-# 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.QuickSight.GenerateEmbedUrlForRegisteredUser
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Generates an embed URL that you can use to embed an Amazon QuickSight
-- experience in your website. This action can be used for any type of user
-- registered in an Amazon QuickSight account. Before you use this action,
-- make sure that you have configured the relevant Amazon QuickSight
-- resource and permissions.
--
-- The following rules apply to the generated URL:
--
-- -   It contains a temporary bearer token. It is valid for 5 minutes
--     after it is generated. Once redeemed within this period, it cannot
--     be re-used again.
--
-- -   The URL validity period should not be confused with the actual
--     session lifetime that can be customized using the
--     @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html#QS-GenerateEmbedUrlForRegisteredUser-request-SessionLifetimeInMinutes SessionLifetimeInMinutes>@ @
--     parameter.
--
--     The resulting user session is valid for 15 minutes (minimum) to 10
--     hours (maximum). The default session duration is 10 hours.
--
-- -   You are charged only when the URL is used or there is interaction
--     with Amazon QuickSight.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html Embedded Analytics>
-- in the /Amazon QuickSight User Guide/.
--
-- For more information about the high-level steps for embedding and for an
-- interactive demo of the ways you can customize embedding, visit the
-- <https://docs.aws.amazon.com/quicksight/latest/user/quicksight-dev-portal.html Amazon QuickSight Developer Portal>.
module Amazonka.QuickSight.GenerateEmbedUrlForRegisteredUser
  ( -- * Creating a Request
    GenerateEmbedUrlForRegisteredUser (..),
    newGenerateEmbedUrlForRegisteredUser,

    -- * Request Lenses
    generateEmbedUrlForRegisteredUser_allowedDomains,
    generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes,
    generateEmbedUrlForRegisteredUser_awsAccountId,
    generateEmbedUrlForRegisteredUser_userArn,
    generateEmbedUrlForRegisteredUser_experienceConfiguration,

    -- * Destructuring the Response
    GenerateEmbedUrlForRegisteredUserResponse (..),
    newGenerateEmbedUrlForRegisteredUserResponse,

    -- * Response Lenses
    generateEmbedUrlForRegisteredUserResponse_status,
    generateEmbedUrlForRegisteredUserResponse_embedUrl,
    generateEmbedUrlForRegisteredUserResponse_requestId,
  )
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 Amazonka.QuickSight.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newGenerateEmbedUrlForRegisteredUser' smart constructor.
data GenerateEmbedUrlForRegisteredUser = GenerateEmbedUrlForRegisteredUser'
  { -- | The domains that you want to add to the allow list for access to the
    -- generated URL that is then embedded. This optional parameter overrides
    -- the static domains that are configured in the Manage QuickSight menu in
    -- the Amazon QuickSight console. Instead, it allows only the domains that
    -- you include in this parameter. You can list up to three domains or
    -- subdomains in each API call.
    --
    -- To include all subdomains under a specific domain to the allow list, use
    -- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
    -- under @https:\/\/sapp.amazon.com@.
    GenerateEmbedUrlForRegisteredUser -> Maybe [Text]
allowedDomains :: Prelude.Maybe [Prelude.Text],
    -- | How many minutes the session is valid. The session lifetime must be in
    -- [15-600] minutes range.
    GenerateEmbedUrlForRegisteredUser -> Maybe Natural
sessionLifetimeInMinutes :: Prelude.Maybe Prelude.Natural,
    -- | The ID for the Amazon Web Services account that contains the dashboard
    -- that you\'re embedding.
    GenerateEmbedUrlForRegisteredUser -> Text
awsAccountId :: Prelude.Text,
    -- | The Amazon Resource Name for the registered user.
    GenerateEmbedUrlForRegisteredUser -> Text
userArn :: Prelude.Text,
    -- | The experience you are embedding. For registered users, you can embed
    -- Amazon QuickSight dashboards, Amazon QuickSight visuals, the Amazon
    -- QuickSight Q search bar, or the entire Amazon QuickSight console.
    GenerateEmbedUrlForRegisteredUser
-> RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration :: RegisteredUserEmbeddingExperienceConfiguration
  }
  deriving (GenerateEmbedUrlForRegisteredUser
-> GenerateEmbedUrlForRegisteredUser -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GenerateEmbedUrlForRegisteredUser
-> GenerateEmbedUrlForRegisteredUser -> Bool
$c/= :: GenerateEmbedUrlForRegisteredUser
-> GenerateEmbedUrlForRegisteredUser -> Bool
== :: GenerateEmbedUrlForRegisteredUser
-> GenerateEmbedUrlForRegisteredUser -> Bool
$c== :: GenerateEmbedUrlForRegisteredUser
-> GenerateEmbedUrlForRegisteredUser -> Bool
Prelude.Eq, ReadPrec [GenerateEmbedUrlForRegisteredUser]
ReadPrec GenerateEmbedUrlForRegisteredUser
Int -> ReadS GenerateEmbedUrlForRegisteredUser
ReadS [GenerateEmbedUrlForRegisteredUser]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GenerateEmbedUrlForRegisteredUser]
$creadListPrec :: ReadPrec [GenerateEmbedUrlForRegisteredUser]
readPrec :: ReadPrec GenerateEmbedUrlForRegisteredUser
$creadPrec :: ReadPrec GenerateEmbedUrlForRegisteredUser
readList :: ReadS [GenerateEmbedUrlForRegisteredUser]
$creadList :: ReadS [GenerateEmbedUrlForRegisteredUser]
readsPrec :: Int -> ReadS GenerateEmbedUrlForRegisteredUser
$creadsPrec :: Int -> ReadS GenerateEmbedUrlForRegisteredUser
Prelude.Read, Int -> GenerateEmbedUrlForRegisteredUser -> ShowS
[GenerateEmbedUrlForRegisteredUser] -> ShowS
GenerateEmbedUrlForRegisteredUser -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GenerateEmbedUrlForRegisteredUser] -> ShowS
$cshowList :: [GenerateEmbedUrlForRegisteredUser] -> ShowS
show :: GenerateEmbedUrlForRegisteredUser -> String
$cshow :: GenerateEmbedUrlForRegisteredUser -> String
showsPrec :: Int -> GenerateEmbedUrlForRegisteredUser -> ShowS
$cshowsPrec :: Int -> GenerateEmbedUrlForRegisteredUser -> ShowS
Prelude.Show, forall x.
Rep GenerateEmbedUrlForRegisteredUser x
-> GenerateEmbedUrlForRegisteredUser
forall x.
GenerateEmbedUrlForRegisteredUser
-> Rep GenerateEmbedUrlForRegisteredUser x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GenerateEmbedUrlForRegisteredUser x
-> GenerateEmbedUrlForRegisteredUser
$cfrom :: forall x.
GenerateEmbedUrlForRegisteredUser
-> Rep GenerateEmbedUrlForRegisteredUser x
Prelude.Generic)

-- |
-- Create a value of 'GenerateEmbedUrlForRegisteredUser' 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:
--
-- 'allowedDomains', 'generateEmbedUrlForRegisteredUser_allowedDomains' - The domains that you want to add to the allow list for access to the
-- generated URL that is then embedded. This optional parameter overrides
-- the static domains that are configured in the Manage QuickSight menu in
-- the Amazon QuickSight console. Instead, it allows only the domains that
-- you include in this parameter. You can list up to three domains or
-- subdomains in each API call.
--
-- To include all subdomains under a specific domain to the allow list, use
-- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
-- under @https:\/\/sapp.amazon.com@.
--
-- 'sessionLifetimeInMinutes', 'generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes' - How many minutes the session is valid. The session lifetime must be in
-- [15-600] minutes range.
--
-- 'awsAccountId', 'generateEmbedUrlForRegisteredUser_awsAccountId' - The ID for the Amazon Web Services account that contains the dashboard
-- that you\'re embedding.
--
-- 'userArn', 'generateEmbedUrlForRegisteredUser_userArn' - The Amazon Resource Name for the registered user.
--
-- 'experienceConfiguration', 'generateEmbedUrlForRegisteredUser_experienceConfiguration' - The experience you are embedding. For registered users, you can embed
-- Amazon QuickSight dashboards, Amazon QuickSight visuals, the Amazon
-- QuickSight Q search bar, or the entire Amazon QuickSight console.
newGenerateEmbedUrlForRegisteredUser ::
  -- | 'awsAccountId'
  Prelude.Text ->
  -- | 'userArn'
  Prelude.Text ->
  -- | 'experienceConfiguration'
  RegisteredUserEmbeddingExperienceConfiguration ->
  GenerateEmbedUrlForRegisteredUser
newGenerateEmbedUrlForRegisteredUser :: Text
-> Text
-> RegisteredUserEmbeddingExperienceConfiguration
-> GenerateEmbedUrlForRegisteredUser
newGenerateEmbedUrlForRegisteredUser
  Text
pAwsAccountId_
  Text
pUserArn_
  RegisteredUserEmbeddingExperienceConfiguration
pExperienceConfiguration_ =
    GenerateEmbedUrlForRegisteredUser'
      { $sel:allowedDomains:GenerateEmbedUrlForRegisteredUser' :: Maybe [Text]
allowedDomains =
          forall a. Maybe a
Prelude.Nothing,
        $sel:sessionLifetimeInMinutes:GenerateEmbedUrlForRegisteredUser' :: Maybe Natural
sessionLifetimeInMinutes =
          forall a. Maybe a
Prelude.Nothing,
        $sel:awsAccountId:GenerateEmbedUrlForRegisteredUser' :: Text
awsAccountId = Text
pAwsAccountId_,
        $sel:userArn:GenerateEmbedUrlForRegisteredUser' :: Text
userArn = Text
pUserArn_,
        $sel:experienceConfiguration:GenerateEmbedUrlForRegisteredUser' :: RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration =
          RegisteredUserEmbeddingExperienceConfiguration
pExperienceConfiguration_
      }

-- | The domains that you want to add to the allow list for access to the
-- generated URL that is then embedded. This optional parameter overrides
-- the static domains that are configured in the Manage QuickSight menu in
-- the Amazon QuickSight console. Instead, it allows only the domains that
-- you include in this parameter. You can list up to three domains or
-- subdomains in each API call.
--
-- To include all subdomains under a specific domain to the allow list, use
-- @*@. For example, @https:\/\/*.sapp.amazon.com@ includes all subdomains
-- under @https:\/\/sapp.amazon.com@.
generateEmbedUrlForRegisteredUser_allowedDomains :: Lens.Lens' GenerateEmbedUrlForRegisteredUser (Prelude.Maybe [Prelude.Text])
generateEmbedUrlForRegisteredUser_allowedDomains :: Lens' GenerateEmbedUrlForRegisteredUser (Maybe [Text])
generateEmbedUrlForRegisteredUser_allowedDomains = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GenerateEmbedUrlForRegisteredUser' {Maybe [Text]
allowedDomains :: Maybe [Text]
$sel:allowedDomains:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe [Text]
allowedDomains} -> Maybe [Text]
allowedDomains) (\s :: GenerateEmbedUrlForRegisteredUser
s@GenerateEmbedUrlForRegisteredUser' {} Maybe [Text]
a -> GenerateEmbedUrlForRegisteredUser
s {$sel:allowedDomains:GenerateEmbedUrlForRegisteredUser' :: Maybe [Text]
allowedDomains = Maybe [Text]
a} :: GenerateEmbedUrlForRegisteredUser) 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

-- | How many minutes the session is valid. The session lifetime must be in
-- [15-600] minutes range.
generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes :: Lens.Lens' GenerateEmbedUrlForRegisteredUser (Prelude.Maybe Prelude.Natural)
generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes :: Lens' GenerateEmbedUrlForRegisteredUser (Maybe Natural)
generateEmbedUrlForRegisteredUser_sessionLifetimeInMinutes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GenerateEmbedUrlForRegisteredUser' {Maybe Natural
sessionLifetimeInMinutes :: Maybe Natural
$sel:sessionLifetimeInMinutes:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe Natural
sessionLifetimeInMinutes} -> Maybe Natural
sessionLifetimeInMinutes) (\s :: GenerateEmbedUrlForRegisteredUser
s@GenerateEmbedUrlForRegisteredUser' {} Maybe Natural
a -> GenerateEmbedUrlForRegisteredUser
s {$sel:sessionLifetimeInMinutes:GenerateEmbedUrlForRegisteredUser' :: Maybe Natural
sessionLifetimeInMinutes = Maybe Natural
a} :: GenerateEmbedUrlForRegisteredUser)

-- | The ID for the Amazon Web Services account that contains the dashboard
-- that you\'re embedding.
generateEmbedUrlForRegisteredUser_awsAccountId :: Lens.Lens' GenerateEmbedUrlForRegisteredUser Prelude.Text
generateEmbedUrlForRegisteredUser_awsAccountId :: Lens' GenerateEmbedUrlForRegisteredUser Text
generateEmbedUrlForRegisteredUser_awsAccountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GenerateEmbedUrlForRegisteredUser' {Text
awsAccountId :: Text
$sel:awsAccountId:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
awsAccountId} -> Text
awsAccountId) (\s :: GenerateEmbedUrlForRegisteredUser
s@GenerateEmbedUrlForRegisteredUser' {} Text
a -> GenerateEmbedUrlForRegisteredUser
s {$sel:awsAccountId:GenerateEmbedUrlForRegisteredUser' :: Text
awsAccountId = Text
a} :: GenerateEmbedUrlForRegisteredUser)

-- | The Amazon Resource Name for the registered user.
generateEmbedUrlForRegisteredUser_userArn :: Lens.Lens' GenerateEmbedUrlForRegisteredUser Prelude.Text
generateEmbedUrlForRegisteredUser_userArn :: Lens' GenerateEmbedUrlForRegisteredUser Text
generateEmbedUrlForRegisteredUser_userArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GenerateEmbedUrlForRegisteredUser' {Text
userArn :: Text
$sel:userArn:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
userArn} -> Text
userArn) (\s :: GenerateEmbedUrlForRegisteredUser
s@GenerateEmbedUrlForRegisteredUser' {} Text
a -> GenerateEmbedUrlForRegisteredUser
s {$sel:userArn:GenerateEmbedUrlForRegisteredUser' :: Text
userArn = Text
a} :: GenerateEmbedUrlForRegisteredUser)

-- | The experience you are embedding. For registered users, you can embed
-- Amazon QuickSight dashboards, Amazon QuickSight visuals, the Amazon
-- QuickSight Q search bar, or the entire Amazon QuickSight console.
generateEmbedUrlForRegisteredUser_experienceConfiguration :: Lens.Lens' GenerateEmbedUrlForRegisteredUser RegisteredUserEmbeddingExperienceConfiguration
generateEmbedUrlForRegisteredUser_experienceConfiguration :: Lens'
  GenerateEmbedUrlForRegisteredUser
  RegisteredUserEmbeddingExperienceConfiguration
generateEmbedUrlForRegisteredUser_experienceConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GenerateEmbedUrlForRegisteredUser' {RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration :: RegisteredUserEmbeddingExperienceConfiguration
$sel:experienceConfiguration:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser
-> RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration} -> RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration) (\s :: GenerateEmbedUrlForRegisteredUser
s@GenerateEmbedUrlForRegisteredUser' {} RegisteredUserEmbeddingExperienceConfiguration
a -> GenerateEmbedUrlForRegisteredUser
s {$sel:experienceConfiguration:GenerateEmbedUrlForRegisteredUser' :: RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration = RegisteredUserEmbeddingExperienceConfiguration
a} :: GenerateEmbedUrlForRegisteredUser)

instance
  Core.AWSRequest
    GenerateEmbedUrlForRegisteredUser
  where
  type
    AWSResponse GenerateEmbedUrlForRegisteredUser =
      GenerateEmbedUrlForRegisteredUserResponse
  request :: (Service -> Service)
-> GenerateEmbedUrlForRegisteredUser
-> Request GenerateEmbedUrlForRegisteredUser
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 GenerateEmbedUrlForRegisteredUser
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GenerateEmbedUrlForRegisteredUser)))
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
-> Sensitive Text
-> Text
-> GenerateEmbedUrlForRegisteredUserResponse
GenerateEmbedUrlForRegisteredUserResponse'
            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
"EmbedUrl")
            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
"RequestId")
      )

instance
  Prelude.Hashable
    GenerateEmbedUrlForRegisteredUser
  where
  hashWithSalt :: Int -> GenerateEmbedUrlForRegisteredUser -> Int
hashWithSalt
    Int
_salt
    GenerateEmbedUrlForRegisteredUser' {Maybe Natural
Maybe [Text]
Text
RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration :: RegisteredUserEmbeddingExperienceConfiguration
userArn :: Text
awsAccountId :: Text
sessionLifetimeInMinutes :: Maybe Natural
allowedDomains :: Maybe [Text]
$sel:experienceConfiguration:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser
-> RegisteredUserEmbeddingExperienceConfiguration
$sel:userArn:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
$sel:awsAccountId:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
$sel:sessionLifetimeInMinutes:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe Natural
$sel:allowedDomains:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe [Text]
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
allowedDomains
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
sessionLifetimeInMinutes
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
awsAccountId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
userArn
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration

instance
  Prelude.NFData
    GenerateEmbedUrlForRegisteredUser
  where
  rnf :: GenerateEmbedUrlForRegisteredUser -> ()
rnf GenerateEmbedUrlForRegisteredUser' {Maybe Natural
Maybe [Text]
Text
RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration :: RegisteredUserEmbeddingExperienceConfiguration
userArn :: Text
awsAccountId :: Text
sessionLifetimeInMinutes :: Maybe Natural
allowedDomains :: Maybe [Text]
$sel:experienceConfiguration:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser
-> RegisteredUserEmbeddingExperienceConfiguration
$sel:userArn:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
$sel:awsAccountId:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
$sel:sessionLifetimeInMinutes:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe Natural
$sel:allowedDomains:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
allowedDomains
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
sessionLifetimeInMinutes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
awsAccountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
userArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration

instance
  Data.ToHeaders
    GenerateEmbedUrlForRegisteredUser
  where
  toHeaders :: GenerateEmbedUrlForRegisteredUser -> 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.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    GenerateEmbedUrlForRegisteredUser
  where
  toJSON :: GenerateEmbedUrlForRegisteredUser -> Value
toJSON GenerateEmbedUrlForRegisteredUser' {Maybe Natural
Maybe [Text]
Text
RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration :: RegisteredUserEmbeddingExperienceConfiguration
userArn :: Text
awsAccountId :: Text
sessionLifetimeInMinutes :: Maybe Natural
allowedDomains :: Maybe [Text]
$sel:experienceConfiguration:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser
-> RegisteredUserEmbeddingExperienceConfiguration
$sel:userArn:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
$sel:awsAccountId:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
$sel:sessionLifetimeInMinutes:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe Natural
$sel:allowedDomains:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe [Text]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AllowedDomains" 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]
allowedDomains,
            (Key
"SessionLifetimeInMinutes" 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
sessionLifetimeInMinutes,
            forall a. a -> Maybe a
Prelude.Just (Key
"UserArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
userArn),
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"ExperienceConfiguration"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration
              )
          ]
      )

instance
  Data.ToPath
    GenerateEmbedUrlForRegisteredUser
  where
  toPath :: GenerateEmbedUrlForRegisteredUser -> ByteString
toPath GenerateEmbedUrlForRegisteredUser' {Maybe Natural
Maybe [Text]
Text
RegisteredUserEmbeddingExperienceConfiguration
experienceConfiguration :: RegisteredUserEmbeddingExperienceConfiguration
userArn :: Text
awsAccountId :: Text
sessionLifetimeInMinutes :: Maybe Natural
allowedDomains :: Maybe [Text]
$sel:experienceConfiguration:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser
-> RegisteredUserEmbeddingExperienceConfiguration
$sel:userArn:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
$sel:awsAccountId:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Text
$sel:sessionLifetimeInMinutes:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe Natural
$sel:allowedDomains:GenerateEmbedUrlForRegisteredUser' :: GenerateEmbedUrlForRegisteredUser -> Maybe [Text]
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/accounts/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
awsAccountId,
        ByteString
"/embed-url/registered-user"
      ]

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

-- | /See:/ 'newGenerateEmbedUrlForRegisteredUserResponse' smart constructor.
data GenerateEmbedUrlForRegisteredUserResponse = GenerateEmbedUrlForRegisteredUserResponse'
  { -- | The HTTP status of the request.
    GenerateEmbedUrlForRegisteredUserResponse -> Int
status :: Prelude.Int,
    -- | The embed URL for the Amazon QuickSight dashboard, visual, Q search bar,
    -- or console.
    GenerateEmbedUrlForRegisteredUserResponse -> Sensitive Text
embedUrl :: Data.Sensitive Prelude.Text,
    -- | The Amazon Web Services request ID for this operation.
    GenerateEmbedUrlForRegisteredUserResponse -> Text
requestId :: Prelude.Text
  }
  deriving (GenerateEmbedUrlForRegisteredUserResponse
-> GenerateEmbedUrlForRegisteredUserResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GenerateEmbedUrlForRegisteredUserResponse
-> GenerateEmbedUrlForRegisteredUserResponse -> Bool
$c/= :: GenerateEmbedUrlForRegisteredUserResponse
-> GenerateEmbedUrlForRegisteredUserResponse -> Bool
== :: GenerateEmbedUrlForRegisteredUserResponse
-> GenerateEmbedUrlForRegisteredUserResponse -> Bool
$c== :: GenerateEmbedUrlForRegisteredUserResponse
-> GenerateEmbedUrlForRegisteredUserResponse -> Bool
Prelude.Eq, Int -> GenerateEmbedUrlForRegisteredUserResponse -> ShowS
[GenerateEmbedUrlForRegisteredUserResponse] -> ShowS
GenerateEmbedUrlForRegisteredUserResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GenerateEmbedUrlForRegisteredUserResponse] -> ShowS
$cshowList :: [GenerateEmbedUrlForRegisteredUserResponse] -> ShowS
show :: GenerateEmbedUrlForRegisteredUserResponse -> String
$cshow :: GenerateEmbedUrlForRegisteredUserResponse -> String
showsPrec :: Int -> GenerateEmbedUrlForRegisteredUserResponse -> ShowS
$cshowsPrec :: Int -> GenerateEmbedUrlForRegisteredUserResponse -> ShowS
Prelude.Show, forall x.
Rep GenerateEmbedUrlForRegisteredUserResponse x
-> GenerateEmbedUrlForRegisteredUserResponse
forall x.
GenerateEmbedUrlForRegisteredUserResponse
-> Rep GenerateEmbedUrlForRegisteredUserResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GenerateEmbedUrlForRegisteredUserResponse x
-> GenerateEmbedUrlForRegisteredUserResponse
$cfrom :: forall x.
GenerateEmbedUrlForRegisteredUserResponse
-> Rep GenerateEmbedUrlForRegisteredUserResponse x
Prelude.Generic)

-- |
-- Create a value of 'GenerateEmbedUrlForRegisteredUserResponse' 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:
--
-- 'status', 'generateEmbedUrlForRegisteredUserResponse_status' - The HTTP status of the request.
--
-- 'embedUrl', 'generateEmbedUrlForRegisteredUserResponse_embedUrl' - The embed URL for the Amazon QuickSight dashboard, visual, Q search bar,
-- or console.
--
-- 'requestId', 'generateEmbedUrlForRegisteredUserResponse_requestId' - The Amazon Web Services request ID for this operation.
newGenerateEmbedUrlForRegisteredUserResponse ::
  -- | 'status'
  Prelude.Int ->
  -- | 'embedUrl'
  Prelude.Text ->
  -- | 'requestId'
  Prelude.Text ->
  GenerateEmbedUrlForRegisteredUserResponse
newGenerateEmbedUrlForRegisteredUserResponse :: Int -> Text -> Text -> GenerateEmbedUrlForRegisteredUserResponse
newGenerateEmbedUrlForRegisteredUserResponse
  Int
pStatus_
  Text
pEmbedUrl_
  Text
pRequestId_ =
    GenerateEmbedUrlForRegisteredUserResponse'
      { $sel:status:GenerateEmbedUrlForRegisteredUserResponse' :: Int
status =
          Int
pStatus_,
        $sel:embedUrl:GenerateEmbedUrlForRegisteredUserResponse' :: Sensitive Text
embedUrl =
          forall a. Iso' (Sensitive a) a
Data._Sensitive
            forall t b. AReview t b -> b -> t
Lens.# Text
pEmbedUrl_,
        $sel:requestId:GenerateEmbedUrlForRegisteredUserResponse' :: Text
requestId = Text
pRequestId_
      }

-- | The HTTP status of the request.
generateEmbedUrlForRegisteredUserResponse_status :: Lens.Lens' GenerateEmbedUrlForRegisteredUserResponse Prelude.Int
generateEmbedUrlForRegisteredUserResponse_status :: Lens' GenerateEmbedUrlForRegisteredUserResponse Int
generateEmbedUrlForRegisteredUserResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GenerateEmbedUrlForRegisteredUserResponse' {Int
status :: Int
$sel:status:GenerateEmbedUrlForRegisteredUserResponse' :: GenerateEmbedUrlForRegisteredUserResponse -> Int
status} -> Int
status) (\s :: GenerateEmbedUrlForRegisteredUserResponse
s@GenerateEmbedUrlForRegisteredUserResponse' {} Int
a -> GenerateEmbedUrlForRegisteredUserResponse
s {$sel:status:GenerateEmbedUrlForRegisteredUserResponse' :: Int
status = Int
a} :: GenerateEmbedUrlForRegisteredUserResponse)

-- | The embed URL for the Amazon QuickSight dashboard, visual, Q search bar,
-- or console.
generateEmbedUrlForRegisteredUserResponse_embedUrl :: Lens.Lens' GenerateEmbedUrlForRegisteredUserResponse Prelude.Text
generateEmbedUrlForRegisteredUserResponse_embedUrl :: Lens' GenerateEmbedUrlForRegisteredUserResponse Text
generateEmbedUrlForRegisteredUserResponse_embedUrl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GenerateEmbedUrlForRegisteredUserResponse' {Sensitive Text
embedUrl :: Sensitive Text
$sel:embedUrl:GenerateEmbedUrlForRegisteredUserResponse' :: GenerateEmbedUrlForRegisteredUserResponse -> Sensitive Text
embedUrl} -> Sensitive Text
embedUrl) (\s :: GenerateEmbedUrlForRegisteredUserResponse
s@GenerateEmbedUrlForRegisteredUserResponse' {} Sensitive Text
a -> GenerateEmbedUrlForRegisteredUserResponse
s {$sel:embedUrl:GenerateEmbedUrlForRegisteredUserResponse' :: Sensitive Text
embedUrl = Sensitive Text
a} :: GenerateEmbedUrlForRegisteredUserResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The Amazon Web Services request ID for this operation.
generateEmbedUrlForRegisteredUserResponse_requestId :: Lens.Lens' GenerateEmbedUrlForRegisteredUserResponse Prelude.Text
generateEmbedUrlForRegisteredUserResponse_requestId :: Lens' GenerateEmbedUrlForRegisteredUserResponse Text
generateEmbedUrlForRegisteredUserResponse_requestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GenerateEmbedUrlForRegisteredUserResponse' {Text
requestId :: Text
$sel:requestId:GenerateEmbedUrlForRegisteredUserResponse' :: GenerateEmbedUrlForRegisteredUserResponse -> Text
requestId} -> Text
requestId) (\s :: GenerateEmbedUrlForRegisteredUserResponse
s@GenerateEmbedUrlForRegisteredUserResponse' {} Text
a -> GenerateEmbedUrlForRegisteredUserResponse
s {$sel:requestId:GenerateEmbedUrlForRegisteredUserResponse' :: Text
requestId = Text
a} :: GenerateEmbedUrlForRegisteredUserResponse)

instance
  Prelude.NFData
    GenerateEmbedUrlForRegisteredUserResponse
  where
  rnf :: GenerateEmbedUrlForRegisteredUserResponse -> ()
rnf GenerateEmbedUrlForRegisteredUserResponse' {Int
Text
Sensitive Text
requestId :: Text
embedUrl :: Sensitive Text
status :: Int
$sel:requestId:GenerateEmbedUrlForRegisteredUserResponse' :: GenerateEmbedUrlForRegisteredUserResponse -> Text
$sel:embedUrl:GenerateEmbedUrlForRegisteredUserResponse' :: GenerateEmbedUrlForRegisteredUserResponse -> Sensitive Text
$sel:status:GenerateEmbedUrlForRegisteredUserResponse' :: GenerateEmbedUrlForRegisteredUserResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive Text
embedUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
requestId