{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.StudioComponent
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Nimble.Types.StudioComponent where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.Nimble.Types.ScriptParameterKeyValue
import Amazonka.Nimble.Types.StudioComponentConfiguration
import Amazonka.Nimble.Types.StudioComponentInitializationScript
import Amazonka.Nimble.Types.StudioComponentState
import Amazonka.Nimble.Types.StudioComponentStatusCode
import Amazonka.Nimble.Types.StudioComponentSubtype
import Amazonka.Nimble.Types.StudioComponentType
import qualified Amazonka.Prelude as Prelude

-- | A network that is used by a studio’s users and workflows, including
-- render farm, Active Directory, licensing, and file system.
--
-- /See:/ 'newStudioComponent' smart constructor.
data StudioComponent = StudioComponent'
  { -- | Initialization scripts for studio components.
    StudioComponent -> Maybe [StudioComponentInitializationScript]
initializationScripts :: Prelude.Maybe [StudioComponentInitializationScript],
    -- | The current state.
    StudioComponent -> Maybe StudioComponentState
state :: Prelude.Maybe StudioComponentState,
    -- | The unique identifier for a studio component resource.
    StudioComponent -> Maybe Text
studioComponentId :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the resource.
    StudioComponent -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The Unix epoch timestamp in seconds for when the resource was created.
    StudioComponent -> Maybe POSIX
createdAt :: Prelude.Maybe Core.POSIX,
    -- | The user ID of the user that created the studio component.
    StudioComponent -> Maybe Text
createdBy :: Prelude.Maybe Prelude.Text,
    -- | The EC2 security groups that control access to the studio component.
    StudioComponent -> Maybe (NonEmpty Text)
ec2SecurityGroupIds :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The user ID of the user that most recently updated the resource.
    StudioComponent -> Maybe Text
updatedBy :: Prelude.Maybe Prelude.Text,
    -- | The specific subtype of a studio component.
    StudioComponent -> Maybe StudioComponentSubtype
subtype :: Prelude.Maybe StudioComponentSubtype,
    -- | A friendly name for the studio component resource.
    StudioComponent -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The status message for the studio component.
    StudioComponent -> Maybe Text
statusMessage :: Prelude.Maybe Prelude.Text,
    -- | Parameters for the studio component scripts.
    StudioComponent -> Maybe [ScriptParameterKeyValue]
scriptParameters :: Prelude.Maybe [ScriptParameterKeyValue],
    -- | The Unix epoch timestamp in seconds for when the resource was updated.
    StudioComponent -> Maybe POSIX
updatedAt :: Prelude.Maybe Core.POSIX,
    -- | The type of the studio component.
    StudioComponent -> Maybe StudioComponentType
type' :: Prelude.Maybe StudioComponentType,
    -- | The configuration of the studio component, based on component type.
    StudioComponent -> Maybe StudioComponentConfiguration
configuration :: Prelude.Maybe StudioComponentConfiguration,
    -- | A human-readable description for the studio component resource.
    StudioComponent -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | A collection of labels, in the form of key:value pairs, that apply to
    -- this resource.
    StudioComponent -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The status code.
    StudioComponent -> Maybe StudioComponentStatusCode
statusCode :: Prelude.Maybe StudioComponentStatusCode
  }
  deriving (StudioComponent -> StudioComponent -> Bool
(StudioComponent -> StudioComponent -> Bool)
-> (StudioComponent -> StudioComponent -> Bool)
-> Eq StudioComponent
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StudioComponent -> StudioComponent -> Bool
$c/= :: StudioComponent -> StudioComponent -> Bool
== :: StudioComponent -> StudioComponent -> Bool
$c== :: StudioComponent -> StudioComponent -> Bool
Prelude.Eq, ReadPrec [StudioComponent]
ReadPrec StudioComponent
Int -> ReadS StudioComponent
ReadS [StudioComponent]
(Int -> ReadS StudioComponent)
-> ReadS [StudioComponent]
-> ReadPrec StudioComponent
-> ReadPrec [StudioComponent]
-> Read StudioComponent
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StudioComponent]
$creadListPrec :: ReadPrec [StudioComponent]
readPrec :: ReadPrec StudioComponent
$creadPrec :: ReadPrec StudioComponent
readList :: ReadS [StudioComponent]
$creadList :: ReadS [StudioComponent]
readsPrec :: Int -> ReadS StudioComponent
$creadsPrec :: Int -> ReadS StudioComponent
Prelude.Read, Int -> StudioComponent -> ShowS
[StudioComponent] -> ShowS
StudioComponent -> String
(Int -> StudioComponent -> ShowS)
-> (StudioComponent -> String)
-> ([StudioComponent] -> ShowS)
-> Show StudioComponent
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StudioComponent] -> ShowS
$cshowList :: [StudioComponent] -> ShowS
show :: StudioComponent -> String
$cshow :: StudioComponent -> String
showsPrec :: Int -> StudioComponent -> ShowS
$cshowsPrec :: Int -> StudioComponent -> ShowS
Prelude.Show, (forall x. StudioComponent -> Rep StudioComponent x)
-> (forall x. Rep StudioComponent x -> StudioComponent)
-> Generic StudioComponent
forall x. Rep StudioComponent x -> StudioComponent
forall x. StudioComponent -> Rep StudioComponent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep StudioComponent x -> StudioComponent
$cfrom :: forall x. StudioComponent -> Rep StudioComponent x
Prelude.Generic)

-- |
-- Create a value of 'StudioComponent' 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:
--
-- 'initializationScripts', 'studioComponent_initializationScripts' - Initialization scripts for studio components.
--
-- 'state', 'studioComponent_state' - The current state.
--
-- 'studioComponentId', 'studioComponent_studioComponentId' - The unique identifier for a studio component resource.
--
-- 'arn', 'studioComponent_arn' - The ARN of the resource.
--
-- 'createdAt', 'studioComponent_createdAt' - The Unix epoch timestamp in seconds for when the resource was created.
--
-- 'createdBy', 'studioComponent_createdBy' - The user ID of the user that created the studio component.
--
-- 'ec2SecurityGroupIds', 'studioComponent_ec2SecurityGroupIds' - The EC2 security groups that control access to the studio component.
--
-- 'updatedBy', 'studioComponent_updatedBy' - The user ID of the user that most recently updated the resource.
--
-- 'subtype', 'studioComponent_subtype' - The specific subtype of a studio component.
--
-- 'name', 'studioComponent_name' - A friendly name for the studio component resource.
--
-- 'statusMessage', 'studioComponent_statusMessage' - The status message for the studio component.
--
-- 'scriptParameters', 'studioComponent_scriptParameters' - Parameters for the studio component scripts.
--
-- 'updatedAt', 'studioComponent_updatedAt' - The Unix epoch timestamp in seconds for when the resource was updated.
--
-- 'type'', 'studioComponent_type' - The type of the studio component.
--
-- 'configuration', 'studioComponent_configuration' - The configuration of the studio component, based on component type.
--
-- 'description', 'studioComponent_description' - A human-readable description for the studio component resource.
--
-- 'tags', 'studioComponent_tags' - A collection of labels, in the form of key:value pairs, that apply to
-- this resource.
--
-- 'statusCode', 'studioComponent_statusCode' - The status code.
newStudioComponent ::
  StudioComponent
newStudioComponent :: StudioComponent
newStudioComponent =
  StudioComponent' :: Maybe [StudioComponentInitializationScript]
-> Maybe StudioComponentState
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe (NonEmpty Text)
-> Maybe Text
-> Maybe StudioComponentSubtype
-> Maybe Text
-> Maybe Text
-> Maybe [ScriptParameterKeyValue]
-> Maybe POSIX
-> Maybe StudioComponentType
-> Maybe StudioComponentConfiguration
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe StudioComponentStatusCode
-> StudioComponent
StudioComponent'
    { $sel:initializationScripts:StudioComponent' :: Maybe [StudioComponentInitializationScript]
initializationScripts =
        Maybe [StudioComponentInitializationScript]
forall a. Maybe a
Prelude.Nothing,
      $sel:state:StudioComponent' :: Maybe StudioComponentState
state = Maybe StudioComponentState
forall a. Maybe a
Prelude.Nothing,
      $sel:studioComponentId:StudioComponent' :: Maybe Text
studioComponentId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:StudioComponent' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:createdAt:StudioComponent' :: Maybe POSIX
createdAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:createdBy:StudioComponent' :: Maybe Text
createdBy = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ec2SecurityGroupIds:StudioComponent' :: Maybe (NonEmpty Text)
ec2SecurityGroupIds = Maybe (NonEmpty Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:updatedBy:StudioComponent' :: Maybe Text
updatedBy = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:subtype:StudioComponent' :: Maybe StudioComponentSubtype
subtype = Maybe StudioComponentSubtype
forall a. Maybe a
Prelude.Nothing,
      $sel:name:StudioComponent' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:statusMessage:StudioComponent' :: Maybe Text
statusMessage = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:scriptParameters:StudioComponent' :: Maybe [ScriptParameterKeyValue]
scriptParameters = Maybe [ScriptParameterKeyValue]
forall a. Maybe a
Prelude.Nothing,
      $sel:updatedAt:StudioComponent' :: Maybe POSIX
updatedAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:type':StudioComponent' :: Maybe StudioComponentType
type' = Maybe StudioComponentType
forall a. Maybe a
Prelude.Nothing,
      $sel:configuration:StudioComponent' :: Maybe StudioComponentConfiguration
configuration = Maybe StudioComponentConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:description:StudioComponent' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:StudioComponent' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:statusCode:StudioComponent' :: Maybe StudioComponentStatusCode
statusCode = Maybe StudioComponentStatusCode
forall a. Maybe a
Prelude.Nothing
    }

-- | Initialization scripts for studio components.
studioComponent_initializationScripts :: Lens.Lens' StudioComponent (Prelude.Maybe [StudioComponentInitializationScript])
studioComponent_initializationScripts :: (Maybe [StudioComponentInitializationScript]
 -> f (Maybe [StudioComponentInitializationScript]))
-> StudioComponent -> f StudioComponent
studioComponent_initializationScripts = (StudioComponent -> Maybe [StudioComponentInitializationScript])
-> (StudioComponent
    -> Maybe [StudioComponentInitializationScript] -> StudioComponent)
-> Lens
     StudioComponent
     StudioComponent
     (Maybe [StudioComponentInitializationScript])
     (Maybe [StudioComponentInitializationScript])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe [StudioComponentInitializationScript]
initializationScripts :: Maybe [StudioComponentInitializationScript]
$sel:initializationScripts:StudioComponent' :: StudioComponent -> Maybe [StudioComponentInitializationScript]
initializationScripts} -> Maybe [StudioComponentInitializationScript]
initializationScripts) (\s :: StudioComponent
s@StudioComponent' {} Maybe [StudioComponentInitializationScript]
a -> StudioComponent
s {$sel:initializationScripts:StudioComponent' :: Maybe [StudioComponentInitializationScript]
initializationScripts = Maybe [StudioComponentInitializationScript]
a} :: StudioComponent) ((Maybe [StudioComponentInitializationScript]
  -> f (Maybe [StudioComponentInitializationScript]))
 -> StudioComponent -> f StudioComponent)
-> ((Maybe [StudioComponentInitializationScript]
     -> f (Maybe [StudioComponentInitializationScript]))
    -> Maybe [StudioComponentInitializationScript]
    -> f (Maybe [StudioComponentInitializationScript]))
-> (Maybe [StudioComponentInitializationScript]
    -> f (Maybe [StudioComponentInitializationScript]))
-> StudioComponent
-> f StudioComponent
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [StudioComponentInitializationScript]
  [StudioComponentInitializationScript]
  [StudioComponentInitializationScript]
  [StudioComponentInitializationScript]
-> Iso
     (Maybe [StudioComponentInitializationScript])
     (Maybe [StudioComponentInitializationScript])
     (Maybe [StudioComponentInitializationScript])
     (Maybe [StudioComponentInitializationScript])
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 AnIso
  [StudioComponentInitializationScript]
  [StudioComponentInitializationScript]
  [StudioComponentInitializationScript]
  [StudioComponentInitializationScript]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The current state.
studioComponent_state :: Lens.Lens' StudioComponent (Prelude.Maybe StudioComponentState)
studioComponent_state :: (Maybe StudioComponentState -> f (Maybe StudioComponentState))
-> StudioComponent -> f StudioComponent
studioComponent_state = (StudioComponent -> Maybe StudioComponentState)
-> (StudioComponent
    -> Maybe StudioComponentState -> StudioComponent)
-> Lens
     StudioComponent
     StudioComponent
     (Maybe StudioComponentState)
     (Maybe StudioComponentState)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe StudioComponentState
state :: Maybe StudioComponentState
$sel:state:StudioComponent' :: StudioComponent -> Maybe StudioComponentState
state} -> Maybe StudioComponentState
state) (\s :: StudioComponent
s@StudioComponent' {} Maybe StudioComponentState
a -> StudioComponent
s {$sel:state:StudioComponent' :: Maybe StudioComponentState
state = Maybe StudioComponentState
a} :: StudioComponent)

-- | The unique identifier for a studio component resource.
studioComponent_studioComponentId :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.Text)
studioComponent_studioComponentId :: (Maybe Text -> f (Maybe Text))
-> StudioComponent -> f StudioComponent
studioComponent_studioComponentId = (StudioComponent -> Maybe Text)
-> (StudioComponent -> Maybe Text -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe Text
studioComponentId :: Maybe Text
$sel:studioComponentId:StudioComponent' :: StudioComponent -> Maybe Text
studioComponentId} -> Maybe Text
studioComponentId) (\s :: StudioComponent
s@StudioComponent' {} Maybe Text
a -> StudioComponent
s {$sel:studioComponentId:StudioComponent' :: Maybe Text
studioComponentId = Maybe Text
a} :: StudioComponent)

-- | The ARN of the resource.
studioComponent_arn :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.Text)
studioComponent_arn :: (Maybe Text -> f (Maybe Text))
-> StudioComponent -> f StudioComponent
studioComponent_arn = (StudioComponent -> Maybe Text)
-> (StudioComponent -> Maybe Text -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe Text
arn :: Maybe Text
$sel:arn:StudioComponent' :: StudioComponent -> Maybe Text
arn} -> Maybe Text
arn) (\s :: StudioComponent
s@StudioComponent' {} Maybe Text
a -> StudioComponent
s {$sel:arn:StudioComponent' :: Maybe Text
arn = Maybe Text
a} :: StudioComponent)

-- | The Unix epoch timestamp in seconds for when the resource was created.
studioComponent_createdAt :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.UTCTime)
studioComponent_createdAt :: (Maybe UTCTime -> f (Maybe UTCTime))
-> StudioComponent -> f StudioComponent
studioComponent_createdAt = (StudioComponent -> Maybe POSIX)
-> (StudioComponent -> Maybe POSIX -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:StudioComponent' :: StudioComponent -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: StudioComponent
s@StudioComponent' {} Maybe POSIX
a -> StudioComponent
s {$sel:createdAt:StudioComponent' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: StudioComponent) ((Maybe POSIX -> f (Maybe POSIX))
 -> StudioComponent -> f StudioComponent)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> StudioComponent
-> f StudioComponent
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The user ID of the user that created the studio component.
studioComponent_createdBy :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.Text)
studioComponent_createdBy :: (Maybe Text -> f (Maybe Text))
-> StudioComponent -> f StudioComponent
studioComponent_createdBy = (StudioComponent -> Maybe Text)
-> (StudioComponent -> Maybe Text -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe Text
createdBy :: Maybe Text
$sel:createdBy:StudioComponent' :: StudioComponent -> Maybe Text
createdBy} -> Maybe Text
createdBy) (\s :: StudioComponent
s@StudioComponent' {} Maybe Text
a -> StudioComponent
s {$sel:createdBy:StudioComponent' :: Maybe Text
createdBy = Maybe Text
a} :: StudioComponent)

-- | The EC2 security groups that control access to the studio component.
studioComponent_ec2SecurityGroupIds :: Lens.Lens' StudioComponent (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
studioComponent_ec2SecurityGroupIds :: (Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
-> StudioComponent -> f StudioComponent
studioComponent_ec2SecurityGroupIds = (StudioComponent -> Maybe (NonEmpty Text))
-> (StudioComponent -> Maybe (NonEmpty Text) -> StudioComponent)
-> Lens
     StudioComponent
     StudioComponent
     (Maybe (NonEmpty Text))
     (Maybe (NonEmpty Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe (NonEmpty Text)
ec2SecurityGroupIds :: Maybe (NonEmpty Text)
$sel:ec2SecurityGroupIds:StudioComponent' :: StudioComponent -> Maybe (NonEmpty Text)
ec2SecurityGroupIds} -> Maybe (NonEmpty Text)
ec2SecurityGroupIds) (\s :: StudioComponent
s@StudioComponent' {} Maybe (NonEmpty Text)
a -> StudioComponent
s {$sel:ec2SecurityGroupIds:StudioComponent' :: Maybe (NonEmpty Text)
ec2SecurityGroupIds = Maybe (NonEmpty Text)
a} :: StudioComponent) ((Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
 -> StudioComponent -> f StudioComponent)
-> ((Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
    -> Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
-> (Maybe (NonEmpty Text) -> f (Maybe (NonEmpty Text)))
-> StudioComponent
-> f StudioComponent
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty Text) (NonEmpty Text) (NonEmpty Text) (NonEmpty Text)
-> Iso
     (Maybe (NonEmpty Text))
     (Maybe (NonEmpty Text))
     (Maybe (NonEmpty Text))
     (Maybe (NonEmpty Text))
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 AnIso
  (NonEmpty Text) (NonEmpty Text) (NonEmpty Text) (NonEmpty Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The user ID of the user that most recently updated the resource.
studioComponent_updatedBy :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.Text)
studioComponent_updatedBy :: (Maybe Text -> f (Maybe Text))
-> StudioComponent -> f StudioComponent
studioComponent_updatedBy = (StudioComponent -> Maybe Text)
-> (StudioComponent -> Maybe Text -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe Text
updatedBy :: Maybe Text
$sel:updatedBy:StudioComponent' :: StudioComponent -> Maybe Text
updatedBy} -> Maybe Text
updatedBy) (\s :: StudioComponent
s@StudioComponent' {} Maybe Text
a -> StudioComponent
s {$sel:updatedBy:StudioComponent' :: Maybe Text
updatedBy = Maybe Text
a} :: StudioComponent)

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

-- | A friendly name for the studio component resource.
studioComponent_name :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.Text)
studioComponent_name :: (Maybe Text -> f (Maybe Text))
-> StudioComponent -> f StudioComponent
studioComponent_name = (StudioComponent -> Maybe Text)
-> (StudioComponent -> Maybe Text -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe Text
name :: Maybe Text
$sel:name:StudioComponent' :: StudioComponent -> Maybe Text
name} -> Maybe Text
name) (\s :: StudioComponent
s@StudioComponent' {} Maybe Text
a -> StudioComponent
s {$sel:name:StudioComponent' :: Maybe Text
name = Maybe Text
a} :: StudioComponent)

-- | The status message for the studio component.
studioComponent_statusMessage :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.Text)
studioComponent_statusMessage :: (Maybe Text -> f (Maybe Text))
-> StudioComponent -> f StudioComponent
studioComponent_statusMessage = (StudioComponent -> Maybe Text)
-> (StudioComponent -> Maybe Text -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe Text
statusMessage :: Maybe Text
$sel:statusMessage:StudioComponent' :: StudioComponent -> Maybe Text
statusMessage} -> Maybe Text
statusMessage) (\s :: StudioComponent
s@StudioComponent' {} Maybe Text
a -> StudioComponent
s {$sel:statusMessage:StudioComponent' :: Maybe Text
statusMessage = Maybe Text
a} :: StudioComponent)

-- | Parameters for the studio component scripts.
studioComponent_scriptParameters :: Lens.Lens' StudioComponent (Prelude.Maybe [ScriptParameterKeyValue])
studioComponent_scriptParameters :: (Maybe [ScriptParameterKeyValue]
 -> f (Maybe [ScriptParameterKeyValue]))
-> StudioComponent -> f StudioComponent
studioComponent_scriptParameters = (StudioComponent -> Maybe [ScriptParameterKeyValue])
-> (StudioComponent
    -> Maybe [ScriptParameterKeyValue] -> StudioComponent)
-> Lens
     StudioComponent
     StudioComponent
     (Maybe [ScriptParameterKeyValue])
     (Maybe [ScriptParameterKeyValue])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe [ScriptParameterKeyValue]
scriptParameters :: Maybe [ScriptParameterKeyValue]
$sel:scriptParameters:StudioComponent' :: StudioComponent -> Maybe [ScriptParameterKeyValue]
scriptParameters} -> Maybe [ScriptParameterKeyValue]
scriptParameters) (\s :: StudioComponent
s@StudioComponent' {} Maybe [ScriptParameterKeyValue]
a -> StudioComponent
s {$sel:scriptParameters:StudioComponent' :: Maybe [ScriptParameterKeyValue]
scriptParameters = Maybe [ScriptParameterKeyValue]
a} :: StudioComponent) ((Maybe [ScriptParameterKeyValue]
  -> f (Maybe [ScriptParameterKeyValue]))
 -> StudioComponent -> f StudioComponent)
-> ((Maybe [ScriptParameterKeyValue]
     -> f (Maybe [ScriptParameterKeyValue]))
    -> Maybe [ScriptParameterKeyValue]
    -> f (Maybe [ScriptParameterKeyValue]))
-> (Maybe [ScriptParameterKeyValue]
    -> f (Maybe [ScriptParameterKeyValue]))
-> StudioComponent
-> f StudioComponent
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ScriptParameterKeyValue]
  [ScriptParameterKeyValue]
  [ScriptParameterKeyValue]
  [ScriptParameterKeyValue]
-> Iso
     (Maybe [ScriptParameterKeyValue])
     (Maybe [ScriptParameterKeyValue])
     (Maybe [ScriptParameterKeyValue])
     (Maybe [ScriptParameterKeyValue])
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 AnIso
  [ScriptParameterKeyValue]
  [ScriptParameterKeyValue]
  [ScriptParameterKeyValue]
  [ScriptParameterKeyValue]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Unix epoch timestamp in seconds for when the resource was updated.
studioComponent_updatedAt :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.UTCTime)
studioComponent_updatedAt :: (Maybe UTCTime -> f (Maybe UTCTime))
-> StudioComponent -> f StudioComponent
studioComponent_updatedAt = (StudioComponent -> Maybe POSIX)
-> (StudioComponent -> Maybe POSIX -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe POSIX
updatedAt :: Maybe POSIX
$sel:updatedAt:StudioComponent' :: StudioComponent -> Maybe POSIX
updatedAt} -> Maybe POSIX
updatedAt) (\s :: StudioComponent
s@StudioComponent' {} Maybe POSIX
a -> StudioComponent
s {$sel:updatedAt:StudioComponent' :: Maybe POSIX
updatedAt = Maybe POSIX
a} :: StudioComponent) ((Maybe POSIX -> f (Maybe POSIX))
 -> StudioComponent -> f StudioComponent)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> StudioComponent
-> f StudioComponent
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

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

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

-- | A human-readable description for the studio component resource.
studioComponent_description :: Lens.Lens' StudioComponent (Prelude.Maybe Prelude.Text)
studioComponent_description :: (Maybe Text -> f (Maybe Text))
-> StudioComponent -> f StudioComponent
studioComponent_description = (StudioComponent -> Maybe Text)
-> (StudioComponent -> Maybe Text -> StudioComponent)
-> Lens StudioComponent StudioComponent (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe Text
description :: Maybe Text
$sel:description:StudioComponent' :: StudioComponent -> Maybe Text
description} -> Maybe Text
description) (\s :: StudioComponent
s@StudioComponent' {} Maybe Text
a -> StudioComponent
s {$sel:description:StudioComponent' :: Maybe Text
description = Maybe Text
a} :: StudioComponent)

-- | A collection of labels, in the form of key:value pairs, that apply to
-- this resource.
studioComponent_tags :: Lens.Lens' StudioComponent (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
studioComponent_tags :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> StudioComponent -> f StudioComponent
studioComponent_tags = (StudioComponent -> Maybe (HashMap Text Text))
-> (StudioComponent
    -> Maybe (HashMap Text Text) -> StudioComponent)
-> Lens
     StudioComponent
     StudioComponent
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:StudioComponent' :: StudioComponent -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: StudioComponent
s@StudioComponent' {} Maybe (HashMap Text Text)
a -> StudioComponent
s {$sel:tags:StudioComponent' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: StudioComponent) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> StudioComponent -> f StudioComponent)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> StudioComponent
-> f StudioComponent
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The status code.
studioComponent_statusCode :: Lens.Lens' StudioComponent (Prelude.Maybe StudioComponentStatusCode)
studioComponent_statusCode :: (Maybe StudioComponentStatusCode
 -> f (Maybe StudioComponentStatusCode))
-> StudioComponent -> f StudioComponent
studioComponent_statusCode = (StudioComponent -> Maybe StudioComponentStatusCode)
-> (StudioComponent
    -> Maybe StudioComponentStatusCode -> StudioComponent)
-> Lens
     StudioComponent
     StudioComponent
     (Maybe StudioComponentStatusCode)
     (Maybe StudioComponentStatusCode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\StudioComponent' {Maybe StudioComponentStatusCode
statusCode :: Maybe StudioComponentStatusCode
$sel:statusCode:StudioComponent' :: StudioComponent -> Maybe StudioComponentStatusCode
statusCode} -> Maybe StudioComponentStatusCode
statusCode) (\s :: StudioComponent
s@StudioComponent' {} Maybe StudioComponentStatusCode
a -> StudioComponent
s {$sel:statusCode:StudioComponent' :: Maybe StudioComponentStatusCode
statusCode = Maybe StudioComponentStatusCode
a} :: StudioComponent)

instance Core.FromJSON StudioComponent where
  parseJSON :: Value -> Parser StudioComponent
parseJSON =
    String
-> (Object -> Parser StudioComponent)
-> Value
-> Parser StudioComponent
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"StudioComponent"
      ( \Object
x ->
          Maybe [StudioComponentInitializationScript]
-> Maybe StudioComponentState
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe (NonEmpty Text)
-> Maybe Text
-> Maybe StudioComponentSubtype
-> Maybe Text
-> Maybe Text
-> Maybe [ScriptParameterKeyValue]
-> Maybe POSIX
-> Maybe StudioComponentType
-> Maybe StudioComponentConfiguration
-> Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe StudioComponentStatusCode
-> StudioComponent
StudioComponent'
            (Maybe [StudioComponentInitializationScript]
 -> Maybe StudioComponentState
 -> Maybe Text
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe (NonEmpty Text)
 -> Maybe Text
 -> Maybe StudioComponentSubtype
 -> Maybe Text
 -> Maybe Text
 -> Maybe [ScriptParameterKeyValue]
 -> Maybe POSIX
 -> Maybe StudioComponentType
 -> Maybe StudioComponentConfiguration
 -> Maybe Text
 -> Maybe (HashMap Text Text)
 -> Maybe StudioComponentStatusCode
 -> StudioComponent)
-> Parser (Maybe [StudioComponentInitializationScript])
-> Parser
     (Maybe StudioComponentState
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> Maybe StudioComponentSubtype
      -> Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( Object
x Object
-> Text
-> Parser (Maybe (Maybe [StudioComponentInitializationScript]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"initializationScripts"
                            Parser (Maybe (Maybe [StudioComponentInitializationScript]))
-> Maybe [StudioComponentInitializationScript]
-> Parser (Maybe [StudioComponentInitializationScript])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [StudioComponentInitializationScript]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe StudioComponentState
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> Maybe StudioComponentSubtype
   -> Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe StudioComponentState)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> Maybe StudioComponentSubtype
      -> Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StudioComponentState)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"state")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> Maybe StudioComponentSubtype
   -> Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> Maybe StudioComponentSubtype
      -> Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"studioComponentId")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> Maybe StudioComponentSubtype
   -> Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> Maybe StudioComponentSubtype
      -> Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"arn")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> Maybe StudioComponentSubtype
   -> Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe (NonEmpty Text)
      -> Maybe Text
      -> Maybe StudioComponentSubtype
      -> Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"createdAt")
            Parser
  (Maybe Text
   -> Maybe (NonEmpty Text)
   -> Maybe Text
   -> Maybe StudioComponentSubtype
   -> Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe Text)
-> Parser
     (Maybe (NonEmpty Text)
      -> Maybe Text
      -> Maybe StudioComponentSubtype
      -> Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"createdBy")
            Parser
  (Maybe (NonEmpty Text)
   -> Maybe Text
   -> Maybe StudioComponentSubtype
   -> Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe (NonEmpty Text))
-> Parser
     (Maybe Text
      -> Maybe StudioComponentSubtype
      -> Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty Text))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ec2SecurityGroupIds")
            Parser
  (Maybe Text
   -> Maybe StudioComponentSubtype
   -> Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe Text)
-> Parser
     (Maybe StudioComponentSubtype
      -> Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"updatedBy")
            Parser
  (Maybe StudioComponentSubtype
   -> Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe StudioComponentSubtype)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StudioComponentSubtype)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"subtype")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"name")
            Parser
  (Maybe Text
   -> Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe Text)
-> Parser
     (Maybe [ScriptParameterKeyValue]
      -> Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"statusMessage")
            Parser
  (Maybe [ScriptParameterKeyValue]
   -> Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe [ScriptParameterKeyValue])
-> Parser
     (Maybe POSIX
      -> Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [ScriptParameterKeyValue]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"scriptParameters"
                            Parser (Maybe (Maybe [ScriptParameterKeyValue]))
-> Maybe [ScriptParameterKeyValue]
-> Parser (Maybe [ScriptParameterKeyValue])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [ScriptParameterKeyValue]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe POSIX
   -> Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe StudioComponentType
      -> Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"updatedAt")
            Parser
  (Maybe StudioComponentType
   -> Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe StudioComponentType)
-> Parser
     (Maybe StudioComponentConfiguration
      -> Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StudioComponentType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"type")
            Parser
  (Maybe StudioComponentConfiguration
   -> Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe StudioComponentConfiguration)
-> Parser
     (Maybe Text
      -> Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode
      -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StudioComponentConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"configuration")
            Parser
  (Maybe Text
   -> Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode
   -> StudioComponent)
-> Parser (Maybe Text)
-> Parser
     (Maybe (HashMap Text Text)
      -> Maybe StudioComponentStatusCode -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"description")
            Parser
  (Maybe (HashMap Text Text)
   -> Maybe StudioComponentStatusCode -> StudioComponent)
-> Parser (Maybe (HashMap Text Text))
-> Parser (Maybe StudioComponentStatusCode -> StudioComponent)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tags" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe StudioComponentStatusCode -> StudioComponent)
-> Parser (Maybe StudioComponentStatusCode)
-> Parser StudioComponent
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StudioComponentStatusCode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"statusCode")
      )

instance Prelude.Hashable StudioComponent

instance Prelude.NFData StudioComponent