{-# 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.Organizations.CreateOrganizationalUnit
-- 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 an organizational unit (OU) within a root or parent OU. An OU is
-- a container for accounts that enables you to organize your accounts to
-- apply policies according to your business requirements. The number of
-- levels deep that you can nest OUs is dependent upon the policy types
-- enabled for that root. For service control policies, the limit is five.
--
-- For more information about OUs, see
-- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html Managing Organizational Units>
-- in the /Organizations User Guide./
--
-- If the request includes tags, then the requester must have the
-- @organizations:TagResource@ permission.
--
-- This operation can be called only from the organization\'s management
-- account.
module Amazonka.Organizations.CreateOrganizationalUnit
  ( -- * Creating a Request
    CreateOrganizationalUnit (..),
    newCreateOrganizationalUnit,

    -- * Request Lenses
    createOrganizationalUnit_tags,
    createOrganizationalUnit_parentId,
    createOrganizationalUnit_name,

    -- * Destructuring the Response
    CreateOrganizationalUnitResponse (..),
    newCreateOrganizationalUnitResponse,

    -- * Response Lenses
    createOrganizationalUnitResponse_organizationalUnit,
    createOrganizationalUnitResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateOrganizationalUnit' smart constructor.
data CreateOrganizationalUnit = CreateOrganizationalUnit'
  { -- | A list of tags that you want to attach to the newly created OU. For each
    -- tag in the list, you must specify both a tag key and a value. You can
    -- set the value to an empty string, but you can\'t set it to @null@. For
    -- more information about tagging, see
    -- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tagging.html Tagging Organizations resources>
    -- in the Organizations User Guide.
    --
    -- If any one of the tags is invalid or if you exceed the allowed number of
    -- tags for an OU, then the entire request fails and the OU is not created.
    CreateOrganizationalUnit -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The unique identifier (ID) of the parent root or OU that you want to
    -- create the new OU in.
    --
    -- The <http://wikipedia.org/wiki/regex regex pattern> for a parent ID
    -- string requires one of the following:
    --
    -- -   __Root__ - A string that begins with \"r-\" followed by from 4 to 32
    --     lowercase letters or digits.
    --
    -- -   __Organizational unit (OU)__ - A string that begins with \"ou-\"
    --     followed by from 4 to 32 lowercase letters or digits (the ID of the
    --     root that the OU is in). This string is followed by a second \"-\"
    --     dash and from 8 to 32 additional lowercase letters or digits.
    CreateOrganizationalUnit -> Text
parentId :: Prelude.Text,
    -- | The friendly name to assign to the new OU.
    CreateOrganizationalUnit -> Text
name :: Prelude.Text
  }
  deriving (CreateOrganizationalUnit -> CreateOrganizationalUnit -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateOrganizationalUnit -> CreateOrganizationalUnit -> Bool
$c/= :: CreateOrganizationalUnit -> CreateOrganizationalUnit -> Bool
== :: CreateOrganizationalUnit -> CreateOrganizationalUnit -> Bool
$c== :: CreateOrganizationalUnit -> CreateOrganizationalUnit -> Bool
Prelude.Eq, ReadPrec [CreateOrganizationalUnit]
ReadPrec CreateOrganizationalUnit
Int -> ReadS CreateOrganizationalUnit
ReadS [CreateOrganizationalUnit]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateOrganizationalUnit]
$creadListPrec :: ReadPrec [CreateOrganizationalUnit]
readPrec :: ReadPrec CreateOrganizationalUnit
$creadPrec :: ReadPrec CreateOrganizationalUnit
readList :: ReadS [CreateOrganizationalUnit]
$creadList :: ReadS [CreateOrganizationalUnit]
readsPrec :: Int -> ReadS CreateOrganizationalUnit
$creadsPrec :: Int -> ReadS CreateOrganizationalUnit
Prelude.Read, Int -> CreateOrganizationalUnit -> ShowS
[CreateOrganizationalUnit] -> ShowS
CreateOrganizationalUnit -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateOrganizationalUnit] -> ShowS
$cshowList :: [CreateOrganizationalUnit] -> ShowS
show :: CreateOrganizationalUnit -> String
$cshow :: CreateOrganizationalUnit -> String
showsPrec :: Int -> CreateOrganizationalUnit -> ShowS
$cshowsPrec :: Int -> CreateOrganizationalUnit -> ShowS
Prelude.Show, forall x.
Rep CreateOrganizationalUnit x -> CreateOrganizationalUnit
forall x.
CreateOrganizationalUnit -> Rep CreateOrganizationalUnit x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateOrganizationalUnit x -> CreateOrganizationalUnit
$cfrom :: forall x.
CreateOrganizationalUnit -> Rep CreateOrganizationalUnit x
Prelude.Generic)

-- |
-- Create a value of 'CreateOrganizationalUnit' 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:
--
-- 'tags', 'createOrganizationalUnit_tags' - A list of tags that you want to attach to the newly created OU. For each
-- tag in the list, you must specify both a tag key and a value. You can
-- set the value to an empty string, but you can\'t set it to @null@. For
-- more information about tagging, see
-- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tagging.html Tagging Organizations resources>
-- in the Organizations User Guide.
--
-- If any one of the tags is invalid or if you exceed the allowed number of
-- tags for an OU, then the entire request fails and the OU is not created.
--
-- 'parentId', 'createOrganizationalUnit_parentId' - The unique identifier (ID) of the parent root or OU that you want to
-- create the new OU in.
--
-- The <http://wikipedia.org/wiki/regex regex pattern> for a parent ID
-- string requires one of the following:
--
-- -   __Root__ - A string that begins with \"r-\" followed by from 4 to 32
--     lowercase letters or digits.
--
-- -   __Organizational unit (OU)__ - A string that begins with \"ou-\"
--     followed by from 4 to 32 lowercase letters or digits (the ID of the
--     root that the OU is in). This string is followed by a second \"-\"
--     dash and from 8 to 32 additional lowercase letters or digits.
--
-- 'name', 'createOrganizationalUnit_name' - The friendly name to assign to the new OU.
newCreateOrganizationalUnit ::
  -- | 'parentId'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  CreateOrganizationalUnit
newCreateOrganizationalUnit :: Text -> Text -> CreateOrganizationalUnit
newCreateOrganizationalUnit Text
pParentId_ Text
pName_ =
  CreateOrganizationalUnit'
    { $sel:tags:CreateOrganizationalUnit' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:parentId:CreateOrganizationalUnit' :: Text
parentId = Text
pParentId_,
      $sel:name:CreateOrganizationalUnit' :: Text
name = Text
pName_
    }

-- | A list of tags that you want to attach to the newly created OU. For each
-- tag in the list, you must specify both a tag key and a value. You can
-- set the value to an empty string, but you can\'t set it to @null@. For
-- more information about tagging, see
-- <https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tagging.html Tagging Organizations resources>
-- in the Organizations User Guide.
--
-- If any one of the tags is invalid or if you exceed the allowed number of
-- tags for an OU, then the entire request fails and the OU is not created.
createOrganizationalUnit_tags :: Lens.Lens' CreateOrganizationalUnit (Prelude.Maybe [Tag])
createOrganizationalUnit_tags :: Lens' CreateOrganizationalUnit (Maybe [Tag])
createOrganizationalUnit_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateOrganizationalUnit' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateOrganizationalUnit
s@CreateOrganizationalUnit' {} Maybe [Tag]
a -> CreateOrganizationalUnit
s {$sel:tags:CreateOrganizationalUnit' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateOrganizationalUnit) 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 unique identifier (ID) of the parent root or OU that you want to
-- create the new OU in.
--
-- The <http://wikipedia.org/wiki/regex regex pattern> for a parent ID
-- string requires one of the following:
--
-- -   __Root__ - A string that begins with \"r-\" followed by from 4 to 32
--     lowercase letters or digits.
--
-- -   __Organizational unit (OU)__ - A string that begins with \"ou-\"
--     followed by from 4 to 32 lowercase letters or digits (the ID of the
--     root that the OU is in). This string is followed by a second \"-\"
--     dash and from 8 to 32 additional lowercase letters or digits.
createOrganizationalUnit_parentId :: Lens.Lens' CreateOrganizationalUnit Prelude.Text
createOrganizationalUnit_parentId :: Lens' CreateOrganizationalUnit Text
createOrganizationalUnit_parentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateOrganizationalUnit' {Text
parentId :: Text
$sel:parentId:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Text
parentId} -> Text
parentId) (\s :: CreateOrganizationalUnit
s@CreateOrganizationalUnit' {} Text
a -> CreateOrganizationalUnit
s {$sel:parentId:CreateOrganizationalUnit' :: Text
parentId = Text
a} :: CreateOrganizationalUnit)

-- | The friendly name to assign to the new OU.
createOrganizationalUnit_name :: Lens.Lens' CreateOrganizationalUnit Prelude.Text
createOrganizationalUnit_name :: Lens' CreateOrganizationalUnit Text
createOrganizationalUnit_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateOrganizationalUnit' {Text
name :: Text
$sel:name:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Text
name} -> Text
name) (\s :: CreateOrganizationalUnit
s@CreateOrganizationalUnit' {} Text
a -> CreateOrganizationalUnit
s {$sel:name:CreateOrganizationalUnit' :: Text
name = Text
a} :: CreateOrganizationalUnit)

instance Core.AWSRequest CreateOrganizationalUnit where
  type
    AWSResponse CreateOrganizationalUnit =
      CreateOrganizationalUnitResponse
  request :: (Service -> Service)
-> CreateOrganizationalUnit -> Request CreateOrganizationalUnit
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateOrganizationalUnit
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateOrganizationalUnit)))
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 OrganizationalUnit -> Int -> CreateOrganizationalUnitResponse
CreateOrganizationalUnitResponse'
            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
"OrganizationalUnit")
            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 CreateOrganizationalUnit where
  hashWithSalt :: Int -> CreateOrganizationalUnit -> Int
hashWithSalt Int
_salt CreateOrganizationalUnit' {Maybe [Tag]
Text
name :: Text
parentId :: Text
tags :: Maybe [Tag]
$sel:name:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Text
$sel:parentId:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Text
$sel:tags:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Maybe [Tag]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
parentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData CreateOrganizationalUnit where
  rnf :: CreateOrganizationalUnit -> ()
rnf CreateOrganizationalUnit' {Maybe [Tag]
Text
name :: Text
parentId :: Text
tags :: Maybe [Tag]
$sel:name:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Text
$sel:parentId:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Text
$sel:tags:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Maybe [Tag]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
parentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name

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

instance Data.ToJSON CreateOrganizationalUnit where
  toJSON :: CreateOrganizationalUnit -> Value
toJSON CreateOrganizationalUnit' {Maybe [Tag]
Text
name :: Text
parentId :: Text
tags :: Maybe [Tag]
$sel:name:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Text
$sel:parentId:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Text
$sel:tags:CreateOrganizationalUnit' :: CreateOrganizationalUnit -> Maybe [Tag]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (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 [Tag]
tags,
            forall a. a -> Maybe a
Prelude.Just (Key
"ParentId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
parentId),
            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 CreateOrganizationalUnit where
  toPath :: CreateOrganizationalUnit -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newCreateOrganizationalUnitResponse' smart constructor.
data CreateOrganizationalUnitResponse = CreateOrganizationalUnitResponse'
  { -- | A structure that contains details about the newly created OU.
    CreateOrganizationalUnitResponse -> Maybe OrganizationalUnit
organizationalUnit :: Prelude.Maybe OrganizationalUnit,
    -- | The response's http status code.
    CreateOrganizationalUnitResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateOrganizationalUnitResponse
-> CreateOrganizationalUnitResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateOrganizationalUnitResponse
-> CreateOrganizationalUnitResponse -> Bool
$c/= :: CreateOrganizationalUnitResponse
-> CreateOrganizationalUnitResponse -> Bool
== :: CreateOrganizationalUnitResponse
-> CreateOrganizationalUnitResponse -> Bool
$c== :: CreateOrganizationalUnitResponse
-> CreateOrganizationalUnitResponse -> Bool
Prelude.Eq, ReadPrec [CreateOrganizationalUnitResponse]
ReadPrec CreateOrganizationalUnitResponse
Int -> ReadS CreateOrganizationalUnitResponse
ReadS [CreateOrganizationalUnitResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateOrganizationalUnitResponse]
$creadListPrec :: ReadPrec [CreateOrganizationalUnitResponse]
readPrec :: ReadPrec CreateOrganizationalUnitResponse
$creadPrec :: ReadPrec CreateOrganizationalUnitResponse
readList :: ReadS [CreateOrganizationalUnitResponse]
$creadList :: ReadS [CreateOrganizationalUnitResponse]
readsPrec :: Int -> ReadS CreateOrganizationalUnitResponse
$creadsPrec :: Int -> ReadS CreateOrganizationalUnitResponse
Prelude.Read, Int -> CreateOrganizationalUnitResponse -> ShowS
[CreateOrganizationalUnitResponse] -> ShowS
CreateOrganizationalUnitResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateOrganizationalUnitResponse] -> ShowS
$cshowList :: [CreateOrganizationalUnitResponse] -> ShowS
show :: CreateOrganizationalUnitResponse -> String
$cshow :: CreateOrganizationalUnitResponse -> String
showsPrec :: Int -> CreateOrganizationalUnitResponse -> ShowS
$cshowsPrec :: Int -> CreateOrganizationalUnitResponse -> ShowS
Prelude.Show, forall x.
Rep CreateOrganizationalUnitResponse x
-> CreateOrganizationalUnitResponse
forall x.
CreateOrganizationalUnitResponse
-> Rep CreateOrganizationalUnitResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateOrganizationalUnitResponse x
-> CreateOrganizationalUnitResponse
$cfrom :: forall x.
CreateOrganizationalUnitResponse
-> Rep CreateOrganizationalUnitResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateOrganizationalUnitResponse' 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:
--
-- 'organizationalUnit', 'createOrganizationalUnitResponse_organizationalUnit' - A structure that contains details about the newly created OU.
--
-- 'httpStatus', 'createOrganizationalUnitResponse_httpStatus' - The response's http status code.
newCreateOrganizationalUnitResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateOrganizationalUnitResponse
newCreateOrganizationalUnitResponse :: Int -> CreateOrganizationalUnitResponse
newCreateOrganizationalUnitResponse Int
pHttpStatus_ =
  CreateOrganizationalUnitResponse'
    { $sel:organizationalUnit:CreateOrganizationalUnitResponse' :: Maybe OrganizationalUnit
organizationalUnit =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateOrganizationalUnitResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A structure that contains details about the newly created OU.
createOrganizationalUnitResponse_organizationalUnit :: Lens.Lens' CreateOrganizationalUnitResponse (Prelude.Maybe OrganizationalUnit)
createOrganizationalUnitResponse_organizationalUnit :: Lens' CreateOrganizationalUnitResponse (Maybe OrganizationalUnit)
createOrganizationalUnitResponse_organizationalUnit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateOrganizationalUnitResponse' {Maybe OrganizationalUnit
organizationalUnit :: Maybe OrganizationalUnit
$sel:organizationalUnit:CreateOrganizationalUnitResponse' :: CreateOrganizationalUnitResponse -> Maybe OrganizationalUnit
organizationalUnit} -> Maybe OrganizationalUnit
organizationalUnit) (\s :: CreateOrganizationalUnitResponse
s@CreateOrganizationalUnitResponse' {} Maybe OrganizationalUnit
a -> CreateOrganizationalUnitResponse
s {$sel:organizationalUnit:CreateOrganizationalUnitResponse' :: Maybe OrganizationalUnit
organizationalUnit = Maybe OrganizationalUnit
a} :: CreateOrganizationalUnitResponse)

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

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