{-# 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.Nimble.UpdateStudioComponent
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a studio component resource.
module Amazonka.Nimble.UpdateStudioComponent
  ( -- * Creating a Request
    UpdateStudioComponent (..),
    newUpdateStudioComponent,

    -- * Request Lenses
    updateStudioComponent_clientToken,
    updateStudioComponent_configuration,
    updateStudioComponent_description,
    updateStudioComponent_ec2SecurityGroupIds,
    updateStudioComponent_initializationScripts,
    updateStudioComponent_name,
    updateStudioComponent_runtimeRoleArn,
    updateStudioComponent_scriptParameters,
    updateStudioComponent_secureInitializationRoleArn,
    updateStudioComponent_subtype,
    updateStudioComponent_type,
    updateStudioComponent_studioComponentId,
    updateStudioComponent_studioId,

    -- * Destructuring the Response
    UpdateStudioComponentResponse (..),
    newUpdateStudioComponentResponse,

    -- * Response Lenses
    updateStudioComponentResponse_studioComponent,
    updateStudioComponentResponse_httpStatus,
  )
where

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

-- | /See:/ 'newUpdateStudioComponent' smart constructor.
data UpdateStudioComponent = UpdateStudioComponent'
  { -- | Unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request. If you don’t specify a client token, the
    -- Amazon Web Services SDK automatically generates a client token and uses
    -- it for the request to ensure idempotency.
    UpdateStudioComponent -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The configuration of the studio component, based on component type.
    UpdateStudioComponent -> Maybe StudioComponentConfiguration
configuration :: Prelude.Maybe StudioComponentConfiguration,
    -- | The description.
    UpdateStudioComponent -> Maybe (Sensitive Text)
description :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The EC2 security groups that control access to the studio component.
    UpdateStudioComponent -> Maybe [Text]
ec2SecurityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | Initialization scripts for studio components.
    UpdateStudioComponent
-> Maybe [StudioComponentInitializationScript]
initializationScripts :: Prelude.Maybe [StudioComponentInitializationScript],
    -- | The name for the studio component.
    UpdateStudioComponent -> Maybe (Sensitive Text)
name :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | An IAM role attached to a Studio Component that gives the studio
    -- component access to Amazon Web Services resources at anytime while the
    -- instance is running.
    UpdateStudioComponent -> Maybe Text
runtimeRoleArn :: Prelude.Maybe Prelude.Text,
    -- | Parameters for the studio component scripts.
    UpdateStudioComponent
-> Maybe (Sensitive [ScriptParameterKeyValue])
scriptParameters :: Prelude.Maybe (Data.Sensitive [ScriptParameterKeyValue]),
    -- | An IAM role attached to Studio Component when the system initialization
    -- script runs which give the studio component access to Amazon Web
    -- Services resources when the system initialization script runs.
    UpdateStudioComponent -> Maybe Text
secureInitializationRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The specific subtype of a studio component.
    UpdateStudioComponent -> Maybe StudioComponentSubtype
subtype :: Prelude.Maybe StudioComponentSubtype,
    -- | The type of the studio component.
    UpdateStudioComponent -> Maybe StudioComponentType
type' :: Prelude.Maybe StudioComponentType,
    -- | The studio component ID.
    UpdateStudioComponent -> Text
studioComponentId :: Prelude.Text,
    -- | The studio ID.
    UpdateStudioComponent -> Text
studioId :: Prelude.Text
  }
  deriving (UpdateStudioComponent -> UpdateStudioComponent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateStudioComponent -> UpdateStudioComponent -> Bool
$c/= :: UpdateStudioComponent -> UpdateStudioComponent -> Bool
== :: UpdateStudioComponent -> UpdateStudioComponent -> Bool
$c== :: UpdateStudioComponent -> UpdateStudioComponent -> Bool
Prelude.Eq, Int -> UpdateStudioComponent -> ShowS
[UpdateStudioComponent] -> ShowS
UpdateStudioComponent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateStudioComponent] -> ShowS
$cshowList :: [UpdateStudioComponent] -> ShowS
show :: UpdateStudioComponent -> String
$cshow :: UpdateStudioComponent -> String
showsPrec :: Int -> UpdateStudioComponent -> ShowS
$cshowsPrec :: Int -> UpdateStudioComponent -> ShowS
Prelude.Show, forall x. Rep UpdateStudioComponent x -> UpdateStudioComponent
forall x. UpdateStudioComponent -> Rep UpdateStudioComponent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateStudioComponent x -> UpdateStudioComponent
$cfrom :: forall x. UpdateStudioComponent -> Rep UpdateStudioComponent x
Prelude.Generic)

-- |
-- Create a value of 'UpdateStudioComponent' 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:
--
-- 'clientToken', 'updateStudioComponent_clientToken' - Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. If you don’t specify a client token, the
-- Amazon Web Services SDK automatically generates a client token and uses
-- it for the request to ensure idempotency.
--
-- 'configuration', 'updateStudioComponent_configuration' - The configuration of the studio component, based on component type.
--
-- 'description', 'updateStudioComponent_description' - The description.
--
-- 'ec2SecurityGroupIds', 'updateStudioComponent_ec2SecurityGroupIds' - The EC2 security groups that control access to the studio component.
--
-- 'initializationScripts', 'updateStudioComponent_initializationScripts' - Initialization scripts for studio components.
--
-- 'name', 'updateStudioComponent_name' - The name for the studio component.
--
-- 'runtimeRoleArn', 'updateStudioComponent_runtimeRoleArn' - An IAM role attached to a Studio Component that gives the studio
-- component access to Amazon Web Services resources at anytime while the
-- instance is running.
--
-- 'scriptParameters', 'updateStudioComponent_scriptParameters' - Parameters for the studio component scripts.
--
-- 'secureInitializationRoleArn', 'updateStudioComponent_secureInitializationRoleArn' - An IAM role attached to Studio Component when the system initialization
-- script runs which give the studio component access to Amazon Web
-- Services resources when the system initialization script runs.
--
-- 'subtype', 'updateStudioComponent_subtype' - The specific subtype of a studio component.
--
-- 'type'', 'updateStudioComponent_type' - The type of the studio component.
--
-- 'studioComponentId', 'updateStudioComponent_studioComponentId' - The studio component ID.
--
-- 'studioId', 'updateStudioComponent_studioId' - The studio ID.
newUpdateStudioComponent ::
  -- | 'studioComponentId'
  Prelude.Text ->
  -- | 'studioId'
  Prelude.Text ->
  UpdateStudioComponent
newUpdateStudioComponent :: Text -> Text -> UpdateStudioComponent
newUpdateStudioComponent
  Text
pStudioComponentId_
  Text
pStudioId_ =
    UpdateStudioComponent'
      { $sel:clientToken:UpdateStudioComponent' :: Maybe Text
clientToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:configuration:UpdateStudioComponent' :: Maybe StudioComponentConfiguration
configuration = forall a. Maybe a
Prelude.Nothing,
        $sel:description:UpdateStudioComponent' :: Maybe (Sensitive Text)
description = forall a. Maybe a
Prelude.Nothing,
        $sel:ec2SecurityGroupIds:UpdateStudioComponent' :: Maybe [Text]
ec2SecurityGroupIds = forall a. Maybe a
Prelude.Nothing,
        $sel:initializationScripts:UpdateStudioComponent' :: Maybe [StudioComponentInitializationScript]
initializationScripts = forall a. Maybe a
Prelude.Nothing,
        $sel:name:UpdateStudioComponent' :: Maybe (Sensitive Text)
name = forall a. Maybe a
Prelude.Nothing,
        $sel:runtimeRoleArn:UpdateStudioComponent' :: Maybe Text
runtimeRoleArn = forall a. Maybe a
Prelude.Nothing,
        $sel:scriptParameters:UpdateStudioComponent' :: Maybe (Sensitive [ScriptParameterKeyValue])
scriptParameters = forall a. Maybe a
Prelude.Nothing,
        $sel:secureInitializationRoleArn:UpdateStudioComponent' :: Maybe Text
secureInitializationRoleArn = forall a. Maybe a
Prelude.Nothing,
        $sel:subtype:UpdateStudioComponent' :: Maybe StudioComponentSubtype
subtype = forall a. Maybe a
Prelude.Nothing,
        $sel:type':UpdateStudioComponent' :: Maybe StudioComponentType
type' = forall a. Maybe a
Prelude.Nothing,
        $sel:studioComponentId:UpdateStudioComponent' :: Text
studioComponentId = Text
pStudioComponentId_,
        $sel:studioId:UpdateStudioComponent' :: Text
studioId = Text
pStudioId_
      }

-- | Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request. If you don’t specify a client token, the
-- Amazon Web Services SDK automatically generates a client token and uses
-- it for the request to ensure idempotency.
updateStudioComponent_clientToken :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe Prelude.Text)
updateStudioComponent_clientToken :: Lens' UpdateStudioComponent (Maybe Text)
updateStudioComponent_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe Text
a -> UpdateStudioComponent
s {$sel:clientToken:UpdateStudioComponent' :: Maybe Text
clientToken = Maybe Text
a} :: UpdateStudioComponent)

-- | The configuration of the studio component, based on component type.
updateStudioComponent_configuration :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe StudioComponentConfiguration)
updateStudioComponent_configuration :: Lens' UpdateStudioComponent (Maybe StudioComponentConfiguration)
updateStudioComponent_configuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe StudioComponentConfiguration
configuration :: Maybe StudioComponentConfiguration
$sel:configuration:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentConfiguration
configuration} -> Maybe StudioComponentConfiguration
configuration) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe StudioComponentConfiguration
a -> UpdateStudioComponent
s {$sel:configuration:UpdateStudioComponent' :: Maybe StudioComponentConfiguration
configuration = Maybe StudioComponentConfiguration
a} :: UpdateStudioComponent)

-- | The description.
updateStudioComponent_description :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe Prelude.Text)
updateStudioComponent_description :: Lens' UpdateStudioComponent (Maybe Text)
updateStudioComponent_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe (Sensitive Text)
description :: Maybe (Sensitive Text)
$sel:description:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
description} -> Maybe (Sensitive Text)
description) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe (Sensitive Text)
a -> UpdateStudioComponent
s {$sel:description:UpdateStudioComponent' :: Maybe (Sensitive Text)
description = Maybe (Sensitive Text)
a} :: UpdateStudioComponent) 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. Iso' (Sensitive a) a
Data._Sensitive

-- | The EC2 security groups that control access to the studio component.
updateStudioComponent_ec2SecurityGroupIds :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe [Prelude.Text])
updateStudioComponent_ec2SecurityGroupIds :: Lens' UpdateStudioComponent (Maybe [Text])
updateStudioComponent_ec2SecurityGroupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe [Text]
ec2SecurityGroupIds :: Maybe [Text]
$sel:ec2SecurityGroupIds:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe [Text]
ec2SecurityGroupIds} -> Maybe [Text]
ec2SecurityGroupIds) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe [Text]
a -> UpdateStudioComponent
s {$sel:ec2SecurityGroupIds:UpdateStudioComponent' :: Maybe [Text]
ec2SecurityGroupIds = Maybe [Text]
a} :: UpdateStudioComponent) 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

-- | Initialization scripts for studio components.
updateStudioComponent_initializationScripts :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe [StudioComponentInitializationScript])
updateStudioComponent_initializationScripts :: Lens'
  UpdateStudioComponent (Maybe [StudioComponentInitializationScript])
updateStudioComponent_initializationScripts = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe [StudioComponentInitializationScript]
initializationScripts :: Maybe [StudioComponentInitializationScript]
$sel:initializationScripts:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe [StudioComponentInitializationScript]
initializationScripts} -> Maybe [StudioComponentInitializationScript]
initializationScripts) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe [StudioComponentInitializationScript]
a -> UpdateStudioComponent
s {$sel:initializationScripts:UpdateStudioComponent' :: Maybe [StudioComponentInitializationScript]
initializationScripts = Maybe [StudioComponentInitializationScript]
a} :: UpdateStudioComponent) 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 name for the studio component.
updateStudioComponent_name :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe Prelude.Text)
updateStudioComponent_name :: Lens' UpdateStudioComponent (Maybe Text)
updateStudioComponent_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe (Sensitive Text)
name :: Maybe (Sensitive Text)
$sel:name:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
name} -> Maybe (Sensitive Text)
name) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe (Sensitive Text)
a -> UpdateStudioComponent
s {$sel:name:UpdateStudioComponent' :: Maybe (Sensitive Text)
name = Maybe (Sensitive Text)
a} :: UpdateStudioComponent) 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. Iso' (Sensitive a) a
Data._Sensitive

-- | An IAM role attached to a Studio Component that gives the studio
-- component access to Amazon Web Services resources at anytime while the
-- instance is running.
updateStudioComponent_runtimeRoleArn :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe Prelude.Text)
updateStudioComponent_runtimeRoleArn :: Lens' UpdateStudioComponent (Maybe Text)
updateStudioComponent_runtimeRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe Text
runtimeRoleArn :: Maybe Text
$sel:runtimeRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
runtimeRoleArn} -> Maybe Text
runtimeRoleArn) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe Text
a -> UpdateStudioComponent
s {$sel:runtimeRoleArn:UpdateStudioComponent' :: Maybe Text
runtimeRoleArn = Maybe Text
a} :: UpdateStudioComponent)

-- | Parameters for the studio component scripts.
updateStudioComponent_scriptParameters :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe [ScriptParameterKeyValue])
updateStudioComponent_scriptParameters :: Lens' UpdateStudioComponent (Maybe [ScriptParameterKeyValue])
updateStudioComponent_scriptParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe (Sensitive [ScriptParameterKeyValue])
scriptParameters :: Maybe (Sensitive [ScriptParameterKeyValue])
$sel:scriptParameters:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe (Sensitive [ScriptParameterKeyValue])
scriptParameters} -> Maybe (Sensitive [ScriptParameterKeyValue])
scriptParameters) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe (Sensitive [ScriptParameterKeyValue])
a -> UpdateStudioComponent
s {$sel:scriptParameters:UpdateStudioComponent' :: Maybe (Sensitive [ScriptParameterKeyValue])
scriptParameters = Maybe (Sensitive [ScriptParameterKeyValue])
a} :: UpdateStudioComponent) 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. Iso' (Sensitive a) a
Data._Sensitive 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)

-- | An IAM role attached to Studio Component when the system initialization
-- script runs which give the studio component access to Amazon Web
-- Services resources when the system initialization script runs.
updateStudioComponent_secureInitializationRoleArn :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe Prelude.Text)
updateStudioComponent_secureInitializationRoleArn :: Lens' UpdateStudioComponent (Maybe Text)
updateStudioComponent_secureInitializationRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe Text
secureInitializationRoleArn :: Maybe Text
$sel:secureInitializationRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
secureInitializationRoleArn} -> Maybe Text
secureInitializationRoleArn) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe Text
a -> UpdateStudioComponent
s {$sel:secureInitializationRoleArn:UpdateStudioComponent' :: Maybe Text
secureInitializationRoleArn = Maybe Text
a} :: UpdateStudioComponent)

-- | The specific subtype of a studio component.
updateStudioComponent_subtype :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe StudioComponentSubtype)
updateStudioComponent_subtype :: Lens' UpdateStudioComponent (Maybe StudioComponentSubtype)
updateStudioComponent_subtype = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe StudioComponentSubtype
subtype :: Maybe StudioComponentSubtype
$sel:subtype:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentSubtype
subtype} -> Maybe StudioComponentSubtype
subtype) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe StudioComponentSubtype
a -> UpdateStudioComponent
s {$sel:subtype:UpdateStudioComponent' :: Maybe StudioComponentSubtype
subtype = Maybe StudioComponentSubtype
a} :: UpdateStudioComponent)

-- | The type of the studio component.
updateStudioComponent_type :: Lens.Lens' UpdateStudioComponent (Prelude.Maybe StudioComponentType)
updateStudioComponent_type :: Lens' UpdateStudioComponent (Maybe StudioComponentType)
updateStudioComponent_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Maybe StudioComponentType
type' :: Maybe StudioComponentType
$sel:type':UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentType
type'} -> Maybe StudioComponentType
type') (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Maybe StudioComponentType
a -> UpdateStudioComponent
s {$sel:type':UpdateStudioComponent' :: Maybe StudioComponentType
type' = Maybe StudioComponentType
a} :: UpdateStudioComponent)

-- | The studio component ID.
updateStudioComponent_studioComponentId :: Lens.Lens' UpdateStudioComponent Prelude.Text
updateStudioComponent_studioComponentId :: Lens' UpdateStudioComponent Text
updateStudioComponent_studioComponentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Text
studioComponentId :: Text
$sel:studioComponentId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
studioComponentId} -> Text
studioComponentId) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Text
a -> UpdateStudioComponent
s {$sel:studioComponentId:UpdateStudioComponent' :: Text
studioComponentId = Text
a} :: UpdateStudioComponent)

-- | The studio ID.
updateStudioComponent_studioId :: Lens.Lens' UpdateStudioComponent Prelude.Text
updateStudioComponent_studioId :: Lens' UpdateStudioComponent Text
updateStudioComponent_studioId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponent' {Text
studioId :: Text
$sel:studioId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
studioId} -> Text
studioId) (\s :: UpdateStudioComponent
s@UpdateStudioComponent' {} Text
a -> UpdateStudioComponent
s {$sel:studioId:UpdateStudioComponent' :: Text
studioId = Text
a} :: UpdateStudioComponent)

instance Core.AWSRequest UpdateStudioComponent where
  type
    AWSResponse UpdateStudioComponent =
      UpdateStudioComponentResponse
  request :: (Service -> Service)
-> UpdateStudioComponent -> Request UpdateStudioComponent
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.patchJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateStudioComponent
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateStudioComponent)))
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 StudioComponent -> Int -> UpdateStudioComponentResponse
UpdateStudioComponentResponse'
            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
"studioComponent")
            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 UpdateStudioComponent where
  hashWithSalt :: Int -> UpdateStudioComponent -> Int
hashWithSalt Int
_salt UpdateStudioComponent' {Maybe [Text]
Maybe [StudioComponentInitializationScript]
Maybe Text
Maybe (Sensitive [ScriptParameterKeyValue])
Maybe (Sensitive Text)
Maybe StudioComponentConfiguration
Maybe StudioComponentSubtype
Maybe StudioComponentType
Text
studioId :: Text
studioComponentId :: Text
type' :: Maybe StudioComponentType
subtype :: Maybe StudioComponentSubtype
secureInitializationRoleArn :: Maybe Text
scriptParameters :: Maybe (Sensitive [ScriptParameterKeyValue])
runtimeRoleArn :: Maybe Text
name :: Maybe (Sensitive Text)
initializationScripts :: Maybe [StudioComponentInitializationScript]
ec2SecurityGroupIds :: Maybe [Text]
description :: Maybe (Sensitive Text)
configuration :: Maybe StudioComponentConfiguration
clientToken :: Maybe Text
$sel:studioId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:studioComponentId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:type':UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentType
$sel:subtype:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentSubtype
$sel:secureInitializationRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:scriptParameters:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe (Sensitive [ScriptParameterKeyValue])
$sel:runtimeRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:name:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:initializationScripts:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe [StudioComponentInitializationScript]
$sel:ec2SecurityGroupIds:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe [Text]
$sel:description:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:configuration:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentConfiguration
$sel:clientToken:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StudioComponentConfiguration
configuration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
ec2SecurityGroupIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [StudioComponentInitializationScript]
initializationScripts
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
runtimeRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive [ScriptParameterKeyValue])
scriptParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
secureInitializationRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StudioComponentSubtype
subtype
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StudioComponentType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
studioComponentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
studioId

instance Prelude.NFData UpdateStudioComponent where
  rnf :: UpdateStudioComponent -> ()
rnf UpdateStudioComponent' {Maybe [Text]
Maybe [StudioComponentInitializationScript]
Maybe Text
Maybe (Sensitive [ScriptParameterKeyValue])
Maybe (Sensitive Text)
Maybe StudioComponentConfiguration
Maybe StudioComponentSubtype
Maybe StudioComponentType
Text
studioId :: Text
studioComponentId :: Text
type' :: Maybe StudioComponentType
subtype :: Maybe StudioComponentSubtype
secureInitializationRoleArn :: Maybe Text
scriptParameters :: Maybe (Sensitive [ScriptParameterKeyValue])
runtimeRoleArn :: Maybe Text
name :: Maybe (Sensitive Text)
initializationScripts :: Maybe [StudioComponentInitializationScript]
ec2SecurityGroupIds :: Maybe [Text]
description :: Maybe (Sensitive Text)
configuration :: Maybe StudioComponentConfiguration
clientToken :: Maybe Text
$sel:studioId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:studioComponentId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:type':UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentType
$sel:subtype:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentSubtype
$sel:secureInitializationRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:scriptParameters:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe (Sensitive [ScriptParameterKeyValue])
$sel:runtimeRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:name:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:initializationScripts:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe [StudioComponentInitializationScript]
$sel:ec2SecurityGroupIds:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe [Text]
$sel:description:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:configuration:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentConfiguration
$sel:clientToken:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StudioComponentConfiguration
configuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
ec2SecurityGroupIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [StudioComponentInitializationScript]
initializationScripts
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
runtimeRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive [ScriptParameterKeyValue])
scriptParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
secureInitializationRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StudioComponentSubtype
subtype
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StudioComponentType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
studioComponentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
studioId

instance Data.ToHeaders UpdateStudioComponent where
  toHeaders :: UpdateStudioComponent -> ResponseHeaders
toHeaders UpdateStudioComponent' {Maybe [Text]
Maybe [StudioComponentInitializationScript]
Maybe Text
Maybe (Sensitive [ScriptParameterKeyValue])
Maybe (Sensitive Text)
Maybe StudioComponentConfiguration
Maybe StudioComponentSubtype
Maybe StudioComponentType
Text
studioId :: Text
studioComponentId :: Text
type' :: Maybe StudioComponentType
subtype :: Maybe StudioComponentSubtype
secureInitializationRoleArn :: Maybe Text
scriptParameters :: Maybe (Sensitive [ScriptParameterKeyValue])
runtimeRoleArn :: Maybe Text
name :: Maybe (Sensitive Text)
initializationScripts :: Maybe [StudioComponentInitializationScript]
ec2SecurityGroupIds :: Maybe [Text]
description :: Maybe (Sensitive Text)
configuration :: Maybe StudioComponentConfiguration
clientToken :: Maybe Text
$sel:studioId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:studioComponentId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:type':UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentType
$sel:subtype:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentSubtype
$sel:secureInitializationRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:scriptParameters:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe (Sensitive [ScriptParameterKeyValue])
$sel:runtimeRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:name:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:initializationScripts:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe [StudioComponentInitializationScript]
$sel:ec2SecurityGroupIds:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe [Text]
$sel:description:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:configuration:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentConfiguration
$sel:clientToken:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ HeaderName
"X-Amz-Client-Token" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe Text
clientToken,
        HeaderName
"Content-Type"
          forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# (ByteString
"application/x-amz-json-1.1" :: Prelude.ByteString)
      ]

instance Data.ToJSON UpdateStudioComponent where
  toJSON :: UpdateStudioComponent -> Value
toJSON UpdateStudioComponent' {Maybe [Text]
Maybe [StudioComponentInitializationScript]
Maybe Text
Maybe (Sensitive [ScriptParameterKeyValue])
Maybe (Sensitive Text)
Maybe StudioComponentConfiguration
Maybe StudioComponentSubtype
Maybe StudioComponentType
Text
studioId :: Text
studioComponentId :: Text
type' :: Maybe StudioComponentType
subtype :: Maybe StudioComponentSubtype
secureInitializationRoleArn :: Maybe Text
scriptParameters :: Maybe (Sensitive [ScriptParameterKeyValue])
runtimeRoleArn :: Maybe Text
name :: Maybe (Sensitive Text)
initializationScripts :: Maybe [StudioComponentInitializationScript]
ec2SecurityGroupIds :: Maybe [Text]
description :: Maybe (Sensitive Text)
configuration :: Maybe StudioComponentConfiguration
clientToken :: Maybe Text
$sel:studioId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:studioComponentId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:type':UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentType
$sel:subtype:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentSubtype
$sel:secureInitializationRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:scriptParameters:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe (Sensitive [ScriptParameterKeyValue])
$sel:runtimeRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:name:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:initializationScripts:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe [StudioComponentInitializationScript]
$sel:ec2SecurityGroupIds:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe [Text]
$sel:description:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:configuration:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentConfiguration
$sel:clientToken:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"configuration" 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 StudioComponentConfiguration
configuration,
            (Key
"description" 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 (Sensitive Text)
description,
            (Key
"ec2SecurityGroupIds" 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]
ec2SecurityGroupIds,
            (Key
"initializationScripts" 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 [StudioComponentInitializationScript]
initializationScripts,
            (Key
"name" 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 (Sensitive Text)
name,
            (Key
"runtimeRoleArn" 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
runtimeRoleArn,
            (Key
"scriptParameters" 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 (Sensitive [ScriptParameterKeyValue])
scriptParameters,
            (Key
"secureInitializationRoleArn" 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
secureInitializationRoleArn,
            (Key
"subtype" 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 StudioComponentSubtype
subtype,
            (Key
"type" 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 StudioComponentType
type'
          ]
      )

instance Data.ToPath UpdateStudioComponent where
  toPath :: UpdateStudioComponent -> ByteString
toPath UpdateStudioComponent' {Maybe [Text]
Maybe [StudioComponentInitializationScript]
Maybe Text
Maybe (Sensitive [ScriptParameterKeyValue])
Maybe (Sensitive Text)
Maybe StudioComponentConfiguration
Maybe StudioComponentSubtype
Maybe StudioComponentType
Text
studioId :: Text
studioComponentId :: Text
type' :: Maybe StudioComponentType
subtype :: Maybe StudioComponentSubtype
secureInitializationRoleArn :: Maybe Text
scriptParameters :: Maybe (Sensitive [ScriptParameterKeyValue])
runtimeRoleArn :: Maybe Text
name :: Maybe (Sensitive Text)
initializationScripts :: Maybe [StudioComponentInitializationScript]
ec2SecurityGroupIds :: Maybe [Text]
description :: Maybe (Sensitive Text)
configuration :: Maybe StudioComponentConfiguration
clientToken :: Maybe Text
$sel:studioId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:studioComponentId:UpdateStudioComponent' :: UpdateStudioComponent -> Text
$sel:type':UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentType
$sel:subtype:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentSubtype
$sel:secureInitializationRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:scriptParameters:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe (Sensitive [ScriptParameterKeyValue])
$sel:runtimeRoleArn:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
$sel:name:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:initializationScripts:UpdateStudioComponent' :: UpdateStudioComponent
-> Maybe [StudioComponentInitializationScript]
$sel:ec2SecurityGroupIds:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe [Text]
$sel:description:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe (Sensitive Text)
$sel:configuration:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe StudioComponentConfiguration
$sel:clientToken:UpdateStudioComponent' :: UpdateStudioComponent -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2020-08-01/studios/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
studioId,
        ByteString
"/studio-components/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
studioComponentId
      ]

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

-- | /See:/ 'newUpdateStudioComponentResponse' smart constructor.
data UpdateStudioComponentResponse = UpdateStudioComponentResponse'
  { -- | Information about the studio component.
    UpdateStudioComponentResponse -> Maybe StudioComponent
studioComponent :: Prelude.Maybe StudioComponent,
    -- | The response's http status code.
    UpdateStudioComponentResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateStudioComponentResponse
-> UpdateStudioComponentResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateStudioComponentResponse
-> UpdateStudioComponentResponse -> Bool
$c/= :: UpdateStudioComponentResponse
-> UpdateStudioComponentResponse -> Bool
== :: UpdateStudioComponentResponse
-> UpdateStudioComponentResponse -> Bool
$c== :: UpdateStudioComponentResponse
-> UpdateStudioComponentResponse -> Bool
Prelude.Eq, Int -> UpdateStudioComponentResponse -> ShowS
[UpdateStudioComponentResponse] -> ShowS
UpdateStudioComponentResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateStudioComponentResponse] -> ShowS
$cshowList :: [UpdateStudioComponentResponse] -> ShowS
show :: UpdateStudioComponentResponse -> String
$cshow :: UpdateStudioComponentResponse -> String
showsPrec :: Int -> UpdateStudioComponentResponse -> ShowS
$cshowsPrec :: Int -> UpdateStudioComponentResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateStudioComponentResponse x
-> UpdateStudioComponentResponse
forall x.
UpdateStudioComponentResponse
-> Rep UpdateStudioComponentResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateStudioComponentResponse x
-> UpdateStudioComponentResponse
$cfrom :: forall x.
UpdateStudioComponentResponse
-> Rep UpdateStudioComponentResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateStudioComponentResponse' 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:
--
-- 'studioComponent', 'updateStudioComponentResponse_studioComponent' - Information about the studio component.
--
-- 'httpStatus', 'updateStudioComponentResponse_httpStatus' - The response's http status code.
newUpdateStudioComponentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateStudioComponentResponse
newUpdateStudioComponentResponse :: Int -> UpdateStudioComponentResponse
newUpdateStudioComponentResponse Int
pHttpStatus_ =
  UpdateStudioComponentResponse'
    { $sel:studioComponent:UpdateStudioComponentResponse' :: Maybe StudioComponent
studioComponent =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateStudioComponentResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the studio component.
updateStudioComponentResponse_studioComponent :: Lens.Lens' UpdateStudioComponentResponse (Prelude.Maybe StudioComponent)
updateStudioComponentResponse_studioComponent :: Lens' UpdateStudioComponentResponse (Maybe StudioComponent)
updateStudioComponentResponse_studioComponent = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateStudioComponentResponse' {Maybe StudioComponent
studioComponent :: Maybe StudioComponent
$sel:studioComponent:UpdateStudioComponentResponse' :: UpdateStudioComponentResponse -> Maybe StudioComponent
studioComponent} -> Maybe StudioComponent
studioComponent) (\s :: UpdateStudioComponentResponse
s@UpdateStudioComponentResponse' {} Maybe StudioComponent
a -> UpdateStudioComponentResponse
s {$sel:studioComponent:UpdateStudioComponentResponse' :: Maybe StudioComponent
studioComponent = Maybe StudioComponent
a} :: UpdateStudioComponentResponse)

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

instance Prelude.NFData UpdateStudioComponentResponse where
  rnf :: UpdateStudioComponentResponse -> ()
rnf UpdateStudioComponentResponse' {Int
Maybe StudioComponent
httpStatus :: Int
studioComponent :: Maybe StudioComponent
$sel:httpStatus:UpdateStudioComponentResponse' :: UpdateStudioComponentResponse -> Int
$sel:studioComponent:UpdateStudioComponentResponse' :: UpdateStudioComponentResponse -> Maybe StudioComponent
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe StudioComponent
studioComponent
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus