{-# 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.Connect.CreateUserHierarchyGroup
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a new user hierarchy group.
module Amazonka.Connect.CreateUserHierarchyGroup
  ( -- * Creating a Request
    CreateUserHierarchyGroup (..),
    newCreateUserHierarchyGroup,

    -- * Request Lenses
    createUserHierarchyGroup_parentGroupId,
    createUserHierarchyGroup_tags,
    createUserHierarchyGroup_name,
    createUserHierarchyGroup_instanceId,

    -- * Destructuring the Response
    CreateUserHierarchyGroupResponse (..),
    newCreateUserHierarchyGroupResponse,

    -- * Response Lenses
    createUserHierarchyGroupResponse_hierarchyGroupArn,
    createUserHierarchyGroupResponse_hierarchyGroupId,
    createUserHierarchyGroupResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateUserHierarchyGroup' smart constructor.
data CreateUserHierarchyGroup = CreateUserHierarchyGroup'
  { -- | The identifier for the parent hierarchy group. The user hierarchy is
    -- created at level one if the parent group ID is null.
    CreateUserHierarchyGroup -> Maybe Text
parentGroupId :: Prelude.Maybe Prelude.Text,
    -- | The tags used to organize, track, or control access for this resource.
    -- For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }.
    CreateUserHierarchyGroup -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The name of the user hierarchy group. Must not be more than 100
    -- characters.
    CreateUserHierarchyGroup -> Text
name :: Prelude.Text,
    -- | The identifier of the Amazon Connect instance. You can find the
    -- instanceId in the ARN of the instance.
    CreateUserHierarchyGroup -> Text
instanceId :: Prelude.Text
  }
  deriving (CreateUserHierarchyGroup -> CreateUserHierarchyGroup -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateUserHierarchyGroup -> CreateUserHierarchyGroup -> Bool
$c/= :: CreateUserHierarchyGroup -> CreateUserHierarchyGroup -> Bool
== :: CreateUserHierarchyGroup -> CreateUserHierarchyGroup -> Bool
$c== :: CreateUserHierarchyGroup -> CreateUserHierarchyGroup -> Bool
Prelude.Eq, ReadPrec [CreateUserHierarchyGroup]
ReadPrec CreateUserHierarchyGroup
Int -> ReadS CreateUserHierarchyGroup
ReadS [CreateUserHierarchyGroup]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateUserHierarchyGroup]
$creadListPrec :: ReadPrec [CreateUserHierarchyGroup]
readPrec :: ReadPrec CreateUserHierarchyGroup
$creadPrec :: ReadPrec CreateUserHierarchyGroup
readList :: ReadS [CreateUserHierarchyGroup]
$creadList :: ReadS [CreateUserHierarchyGroup]
readsPrec :: Int -> ReadS CreateUserHierarchyGroup
$creadsPrec :: Int -> ReadS CreateUserHierarchyGroup
Prelude.Read, Int -> CreateUserHierarchyGroup -> ShowS
[CreateUserHierarchyGroup] -> ShowS
CreateUserHierarchyGroup -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateUserHierarchyGroup] -> ShowS
$cshowList :: [CreateUserHierarchyGroup] -> ShowS
show :: CreateUserHierarchyGroup -> String
$cshow :: CreateUserHierarchyGroup -> String
showsPrec :: Int -> CreateUserHierarchyGroup -> ShowS
$cshowsPrec :: Int -> CreateUserHierarchyGroup -> ShowS
Prelude.Show, forall x.
Rep CreateUserHierarchyGroup x -> CreateUserHierarchyGroup
forall x.
CreateUserHierarchyGroup -> Rep CreateUserHierarchyGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateUserHierarchyGroup x -> CreateUserHierarchyGroup
$cfrom :: forall x.
CreateUserHierarchyGroup -> Rep CreateUserHierarchyGroup x
Prelude.Generic)

-- |
-- Create a value of 'CreateUserHierarchyGroup' 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:
--
-- 'parentGroupId', 'createUserHierarchyGroup_parentGroupId' - The identifier for the parent hierarchy group. The user hierarchy is
-- created at level one if the parent group ID is null.
--
-- 'tags', 'createUserHierarchyGroup_tags' - The tags used to organize, track, or control access for this resource.
-- For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }.
--
-- 'name', 'createUserHierarchyGroup_name' - The name of the user hierarchy group. Must not be more than 100
-- characters.
--
-- 'instanceId', 'createUserHierarchyGroup_instanceId' - The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
newCreateUserHierarchyGroup ::
  -- | 'name'
  Prelude.Text ->
  -- | 'instanceId'
  Prelude.Text ->
  CreateUserHierarchyGroup
newCreateUserHierarchyGroup :: Text -> Text -> CreateUserHierarchyGroup
newCreateUserHierarchyGroup Text
pName_ Text
pInstanceId_ =
  CreateUserHierarchyGroup'
    { $sel:parentGroupId:CreateUserHierarchyGroup' :: Maybe Text
parentGroupId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateUserHierarchyGroup' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:name:CreateUserHierarchyGroup' :: Text
name = Text
pName_,
      $sel:instanceId:CreateUserHierarchyGroup' :: Text
instanceId = Text
pInstanceId_
    }

-- | The identifier for the parent hierarchy group. The user hierarchy is
-- created at level one if the parent group ID is null.
createUserHierarchyGroup_parentGroupId :: Lens.Lens' CreateUserHierarchyGroup (Prelude.Maybe Prelude.Text)
createUserHierarchyGroup_parentGroupId :: Lens' CreateUserHierarchyGroup (Maybe Text)
createUserHierarchyGroup_parentGroupId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateUserHierarchyGroup' {Maybe Text
parentGroupId :: Maybe Text
$sel:parentGroupId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe Text
parentGroupId} -> Maybe Text
parentGroupId) (\s :: CreateUserHierarchyGroup
s@CreateUserHierarchyGroup' {} Maybe Text
a -> CreateUserHierarchyGroup
s {$sel:parentGroupId:CreateUserHierarchyGroup' :: Maybe Text
parentGroupId = Maybe Text
a} :: CreateUserHierarchyGroup)

-- | The tags used to organize, track, or control access for this resource.
-- For example, { \"tags\": {\"key1\":\"value1\", \"key2\":\"value2\"} }.
createUserHierarchyGroup_tags :: Lens.Lens' CreateUserHierarchyGroup (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createUserHierarchyGroup_tags :: Lens' CreateUserHierarchyGroup (Maybe (HashMap Text Text))
createUserHierarchyGroup_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateUserHierarchyGroup' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateUserHierarchyGroup
s@CreateUserHierarchyGroup' {} Maybe (HashMap Text Text)
a -> CreateUserHierarchyGroup
s {$sel:tags:CreateUserHierarchyGroup' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateUserHierarchyGroup) 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 of the user hierarchy group. Must not be more than 100
-- characters.
createUserHierarchyGroup_name :: Lens.Lens' CreateUserHierarchyGroup Prelude.Text
createUserHierarchyGroup_name :: Lens' CreateUserHierarchyGroup Text
createUserHierarchyGroup_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateUserHierarchyGroup' {Text
name :: Text
$sel:name:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
name} -> Text
name) (\s :: CreateUserHierarchyGroup
s@CreateUserHierarchyGroup' {} Text
a -> CreateUserHierarchyGroup
s {$sel:name:CreateUserHierarchyGroup' :: Text
name = Text
a} :: CreateUserHierarchyGroup)

-- | The identifier of the Amazon Connect instance. You can find the
-- instanceId in the ARN of the instance.
createUserHierarchyGroup_instanceId :: Lens.Lens' CreateUserHierarchyGroup Prelude.Text
createUserHierarchyGroup_instanceId :: Lens' CreateUserHierarchyGroup Text
createUserHierarchyGroup_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateUserHierarchyGroup' {Text
instanceId :: Text
$sel:instanceId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
instanceId} -> Text
instanceId) (\s :: CreateUserHierarchyGroup
s@CreateUserHierarchyGroup' {} Text
a -> CreateUserHierarchyGroup
s {$sel:instanceId:CreateUserHierarchyGroup' :: Text
instanceId = Text
a} :: CreateUserHierarchyGroup)

instance Core.AWSRequest CreateUserHierarchyGroup where
  type
    AWSResponse CreateUserHierarchyGroup =
      CreateUserHierarchyGroupResponse
  request :: (Service -> Service)
-> CreateUserHierarchyGroup -> Request CreateUserHierarchyGroup
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateUserHierarchyGroup
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateUserHierarchyGroup)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Maybe Text -> Int -> CreateUserHierarchyGroupResponse
CreateUserHierarchyGroupResponse'
            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
"HierarchyGroupArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"HierarchyGroupId")
            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 CreateUserHierarchyGroup where
  hashWithSalt :: Int -> CreateUserHierarchyGroup -> Int
hashWithSalt Int
_salt CreateUserHierarchyGroup' {Maybe Text
Maybe (HashMap Text Text)
Text
instanceId :: Text
name :: Text
tags :: Maybe (HashMap Text Text)
parentGroupId :: Maybe Text
$sel:instanceId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
$sel:name:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
$sel:tags:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe (HashMap Text Text)
$sel:parentGroupId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
parentGroupId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceId

instance Prelude.NFData CreateUserHierarchyGroup where
  rnf :: CreateUserHierarchyGroup -> ()
rnf CreateUserHierarchyGroup' {Maybe Text
Maybe (HashMap Text Text)
Text
instanceId :: Text
name :: Text
tags :: Maybe (HashMap Text Text)
parentGroupId :: Maybe Text
$sel:instanceId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
$sel:name:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
$sel:tags:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe (HashMap Text Text)
$sel:parentGroupId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
parentGroupId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
instanceId

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

instance Data.ToJSON CreateUserHierarchyGroup where
  toJSON :: CreateUserHierarchyGroup -> Value
toJSON CreateUserHierarchyGroup' {Maybe Text
Maybe (HashMap Text Text)
Text
instanceId :: Text
name :: Text
tags :: Maybe (HashMap Text Text)
parentGroupId :: Maybe Text
$sel:instanceId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
$sel:name:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
$sel:tags:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe (HashMap Text Text)
$sel:parentGroupId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ParentGroupId" 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
parentGroupId,
            (Key
"Tags" 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 (HashMap Text Text)
tags,
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name)
          ]
      )

instance Data.ToPath CreateUserHierarchyGroup where
  toPath :: CreateUserHierarchyGroup -> ByteString
toPath CreateUserHierarchyGroup' {Maybe Text
Maybe (HashMap Text Text)
Text
instanceId :: Text
name :: Text
tags :: Maybe (HashMap Text Text)
parentGroupId :: Maybe Text
$sel:instanceId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
$sel:name:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Text
$sel:tags:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe (HashMap Text Text)
$sel:parentGroupId:CreateUserHierarchyGroup' :: CreateUserHierarchyGroup -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/user-hierarchy-groups/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
instanceId]

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

-- | /See:/ 'newCreateUserHierarchyGroupResponse' smart constructor.
data CreateUserHierarchyGroupResponse = CreateUserHierarchyGroupResponse'
  { -- | The Amazon Resource Name (ARN) of the hierarchy group.
    CreateUserHierarchyGroupResponse -> Maybe Text
hierarchyGroupArn :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the hierarchy group.
    CreateUserHierarchyGroupResponse -> Maybe Text
hierarchyGroupId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateUserHierarchyGroupResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateUserHierarchyGroupResponse
-> CreateUserHierarchyGroupResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateUserHierarchyGroupResponse
-> CreateUserHierarchyGroupResponse -> Bool
$c/= :: CreateUserHierarchyGroupResponse
-> CreateUserHierarchyGroupResponse -> Bool
== :: CreateUserHierarchyGroupResponse
-> CreateUserHierarchyGroupResponse -> Bool
$c== :: CreateUserHierarchyGroupResponse
-> CreateUserHierarchyGroupResponse -> Bool
Prelude.Eq, ReadPrec [CreateUserHierarchyGroupResponse]
ReadPrec CreateUserHierarchyGroupResponse
Int -> ReadS CreateUserHierarchyGroupResponse
ReadS [CreateUserHierarchyGroupResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateUserHierarchyGroupResponse]
$creadListPrec :: ReadPrec [CreateUserHierarchyGroupResponse]
readPrec :: ReadPrec CreateUserHierarchyGroupResponse
$creadPrec :: ReadPrec CreateUserHierarchyGroupResponse
readList :: ReadS [CreateUserHierarchyGroupResponse]
$creadList :: ReadS [CreateUserHierarchyGroupResponse]
readsPrec :: Int -> ReadS CreateUserHierarchyGroupResponse
$creadsPrec :: Int -> ReadS CreateUserHierarchyGroupResponse
Prelude.Read, Int -> CreateUserHierarchyGroupResponse -> ShowS
[CreateUserHierarchyGroupResponse] -> ShowS
CreateUserHierarchyGroupResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateUserHierarchyGroupResponse] -> ShowS
$cshowList :: [CreateUserHierarchyGroupResponse] -> ShowS
show :: CreateUserHierarchyGroupResponse -> String
$cshow :: CreateUserHierarchyGroupResponse -> String
showsPrec :: Int -> CreateUserHierarchyGroupResponse -> ShowS
$cshowsPrec :: Int -> CreateUserHierarchyGroupResponse -> ShowS
Prelude.Show, forall x.
Rep CreateUserHierarchyGroupResponse x
-> CreateUserHierarchyGroupResponse
forall x.
CreateUserHierarchyGroupResponse
-> Rep CreateUserHierarchyGroupResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateUserHierarchyGroupResponse x
-> CreateUserHierarchyGroupResponse
$cfrom :: forall x.
CreateUserHierarchyGroupResponse
-> Rep CreateUserHierarchyGroupResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateUserHierarchyGroupResponse' 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:
--
-- 'hierarchyGroupArn', 'createUserHierarchyGroupResponse_hierarchyGroupArn' - The Amazon Resource Name (ARN) of the hierarchy group.
--
-- 'hierarchyGroupId', 'createUserHierarchyGroupResponse_hierarchyGroupId' - The identifier of the hierarchy group.
--
-- 'httpStatus', 'createUserHierarchyGroupResponse_httpStatus' - The response's http status code.
newCreateUserHierarchyGroupResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateUserHierarchyGroupResponse
newCreateUserHierarchyGroupResponse :: Int -> CreateUserHierarchyGroupResponse
newCreateUserHierarchyGroupResponse Int
pHttpStatus_ =
  CreateUserHierarchyGroupResponse'
    { $sel:hierarchyGroupArn:CreateUserHierarchyGroupResponse' :: Maybe Text
hierarchyGroupArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:hierarchyGroupId:CreateUserHierarchyGroupResponse' :: Maybe Text
hierarchyGroupId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateUserHierarchyGroupResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) of the hierarchy group.
createUserHierarchyGroupResponse_hierarchyGroupArn :: Lens.Lens' CreateUserHierarchyGroupResponse (Prelude.Maybe Prelude.Text)
createUserHierarchyGroupResponse_hierarchyGroupArn :: Lens' CreateUserHierarchyGroupResponse (Maybe Text)
createUserHierarchyGroupResponse_hierarchyGroupArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateUserHierarchyGroupResponse' {Maybe Text
hierarchyGroupArn :: Maybe Text
$sel:hierarchyGroupArn:CreateUserHierarchyGroupResponse' :: CreateUserHierarchyGroupResponse -> Maybe Text
hierarchyGroupArn} -> Maybe Text
hierarchyGroupArn) (\s :: CreateUserHierarchyGroupResponse
s@CreateUserHierarchyGroupResponse' {} Maybe Text
a -> CreateUserHierarchyGroupResponse
s {$sel:hierarchyGroupArn:CreateUserHierarchyGroupResponse' :: Maybe Text
hierarchyGroupArn = Maybe Text
a} :: CreateUserHierarchyGroupResponse)

-- | The identifier of the hierarchy group.
createUserHierarchyGroupResponse_hierarchyGroupId :: Lens.Lens' CreateUserHierarchyGroupResponse (Prelude.Maybe Prelude.Text)
createUserHierarchyGroupResponse_hierarchyGroupId :: Lens' CreateUserHierarchyGroupResponse (Maybe Text)
createUserHierarchyGroupResponse_hierarchyGroupId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateUserHierarchyGroupResponse' {Maybe Text
hierarchyGroupId :: Maybe Text
$sel:hierarchyGroupId:CreateUserHierarchyGroupResponse' :: CreateUserHierarchyGroupResponse -> Maybe Text
hierarchyGroupId} -> Maybe Text
hierarchyGroupId) (\s :: CreateUserHierarchyGroupResponse
s@CreateUserHierarchyGroupResponse' {} Maybe Text
a -> CreateUserHierarchyGroupResponse
s {$sel:hierarchyGroupId:CreateUserHierarchyGroupResponse' :: Maybe Text
hierarchyGroupId = Maybe Text
a} :: CreateUserHierarchyGroupResponse)

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

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