{-# 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.IoTDeviceAdvisor.CreateSuiteDefinition
-- 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 Device Advisor test suite.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions CreateSuiteDefinition>
-- action.
module Amazonka.IoTDeviceAdvisor.CreateSuiteDefinition
  ( -- * Creating a Request
    CreateSuiteDefinition (..),
    newCreateSuiteDefinition,

    -- * Request Lenses
    createSuiteDefinition_tags,
    createSuiteDefinition_suiteDefinitionConfiguration,

    -- * Destructuring the Response
    CreateSuiteDefinitionResponse (..),
    newCreateSuiteDefinitionResponse,

    -- * Response Lenses
    createSuiteDefinitionResponse_createdAt,
    createSuiteDefinitionResponse_suiteDefinitionArn,
    createSuiteDefinitionResponse_suiteDefinitionId,
    createSuiteDefinitionResponse_suiteDefinitionName,
    createSuiteDefinitionResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateSuiteDefinition' smart constructor.
data CreateSuiteDefinition = CreateSuiteDefinition'
  { -- | The tags to be attached to the suite definition.
    CreateSuiteDefinition -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Creates a Device Advisor test suite with suite definition configuration.
    CreateSuiteDefinition -> SuiteDefinitionConfiguration
suiteDefinitionConfiguration :: SuiteDefinitionConfiguration
  }
  deriving (CreateSuiteDefinition -> CreateSuiteDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateSuiteDefinition -> CreateSuiteDefinition -> Bool
$c/= :: CreateSuiteDefinition -> CreateSuiteDefinition -> Bool
== :: CreateSuiteDefinition -> CreateSuiteDefinition -> Bool
$c== :: CreateSuiteDefinition -> CreateSuiteDefinition -> Bool
Prelude.Eq, ReadPrec [CreateSuiteDefinition]
ReadPrec CreateSuiteDefinition
Int -> ReadS CreateSuiteDefinition
ReadS [CreateSuiteDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateSuiteDefinition]
$creadListPrec :: ReadPrec [CreateSuiteDefinition]
readPrec :: ReadPrec CreateSuiteDefinition
$creadPrec :: ReadPrec CreateSuiteDefinition
readList :: ReadS [CreateSuiteDefinition]
$creadList :: ReadS [CreateSuiteDefinition]
readsPrec :: Int -> ReadS CreateSuiteDefinition
$creadsPrec :: Int -> ReadS CreateSuiteDefinition
Prelude.Read, Int -> CreateSuiteDefinition -> ShowS
[CreateSuiteDefinition] -> ShowS
CreateSuiteDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateSuiteDefinition] -> ShowS
$cshowList :: [CreateSuiteDefinition] -> ShowS
show :: CreateSuiteDefinition -> String
$cshow :: CreateSuiteDefinition -> String
showsPrec :: Int -> CreateSuiteDefinition -> ShowS
$cshowsPrec :: Int -> CreateSuiteDefinition -> ShowS
Prelude.Show, forall x. Rep CreateSuiteDefinition x -> CreateSuiteDefinition
forall x. CreateSuiteDefinition -> Rep CreateSuiteDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateSuiteDefinition x -> CreateSuiteDefinition
$cfrom :: forall x. CreateSuiteDefinition -> Rep CreateSuiteDefinition x
Prelude.Generic)

-- |
-- Create a value of 'CreateSuiteDefinition' 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', 'createSuiteDefinition_tags' - The tags to be attached to the suite definition.
--
-- 'suiteDefinitionConfiguration', 'createSuiteDefinition_suiteDefinitionConfiguration' - Creates a Device Advisor test suite with suite definition configuration.
newCreateSuiteDefinition ::
  -- | 'suiteDefinitionConfiguration'
  SuiteDefinitionConfiguration ->
  CreateSuiteDefinition
newCreateSuiteDefinition :: SuiteDefinitionConfiguration -> CreateSuiteDefinition
newCreateSuiteDefinition
  SuiteDefinitionConfiguration
pSuiteDefinitionConfiguration_ =
    CreateSuiteDefinition'
      { $sel:tags:CreateSuiteDefinition' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:suiteDefinitionConfiguration:CreateSuiteDefinition' :: SuiteDefinitionConfiguration
suiteDefinitionConfiguration =
          SuiteDefinitionConfiguration
pSuiteDefinitionConfiguration_
      }

-- | The tags to be attached to the suite definition.
createSuiteDefinition_tags :: Lens.Lens' CreateSuiteDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createSuiteDefinition_tags :: Lens' CreateSuiteDefinition (Maybe (HashMap Text Text))
createSuiteDefinition_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSuiteDefinition' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateSuiteDefinition' :: CreateSuiteDefinition -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateSuiteDefinition
s@CreateSuiteDefinition' {} Maybe (HashMap Text Text)
a -> CreateSuiteDefinition
s {$sel:tags:CreateSuiteDefinition' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateSuiteDefinition) 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

-- | Creates a Device Advisor test suite with suite definition configuration.
createSuiteDefinition_suiteDefinitionConfiguration :: Lens.Lens' CreateSuiteDefinition SuiteDefinitionConfiguration
createSuiteDefinition_suiteDefinitionConfiguration :: Lens' CreateSuiteDefinition SuiteDefinitionConfiguration
createSuiteDefinition_suiteDefinitionConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSuiteDefinition' {SuiteDefinitionConfiguration
suiteDefinitionConfiguration :: SuiteDefinitionConfiguration
$sel:suiteDefinitionConfiguration:CreateSuiteDefinition' :: CreateSuiteDefinition -> SuiteDefinitionConfiguration
suiteDefinitionConfiguration} -> SuiteDefinitionConfiguration
suiteDefinitionConfiguration) (\s :: CreateSuiteDefinition
s@CreateSuiteDefinition' {} SuiteDefinitionConfiguration
a -> CreateSuiteDefinition
s {$sel:suiteDefinitionConfiguration:CreateSuiteDefinition' :: SuiteDefinitionConfiguration
suiteDefinitionConfiguration = SuiteDefinitionConfiguration
a} :: CreateSuiteDefinition)

instance Core.AWSRequest CreateSuiteDefinition where
  type
    AWSResponse CreateSuiteDefinition =
      CreateSuiteDefinitionResponse
  request :: (Service -> Service)
-> CreateSuiteDefinition -> Request CreateSuiteDefinition
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 CreateSuiteDefinition
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateSuiteDefinition)))
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 POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> CreateSuiteDefinitionResponse
CreateSuiteDefinitionResponse'
            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
"createdAt")
            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
"suiteDefinitionArn")
            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
"suiteDefinitionId")
            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
"suiteDefinitionName")
            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 CreateSuiteDefinition where
  hashWithSalt :: Int -> CreateSuiteDefinition -> Int
hashWithSalt Int
_salt CreateSuiteDefinition' {Maybe (HashMap Text Text)
SuiteDefinitionConfiguration
suiteDefinitionConfiguration :: SuiteDefinitionConfiguration
tags :: Maybe (HashMap Text Text)
$sel:suiteDefinitionConfiguration:CreateSuiteDefinition' :: CreateSuiteDefinition -> SuiteDefinitionConfiguration
$sel:tags:CreateSuiteDefinition' :: CreateSuiteDefinition -> Maybe (HashMap Text Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` SuiteDefinitionConfiguration
suiteDefinitionConfiguration

instance Prelude.NFData CreateSuiteDefinition where
  rnf :: CreateSuiteDefinition -> ()
rnf CreateSuiteDefinition' {Maybe (HashMap Text Text)
SuiteDefinitionConfiguration
suiteDefinitionConfiguration :: SuiteDefinitionConfiguration
tags :: Maybe (HashMap Text Text)
$sel:suiteDefinitionConfiguration:CreateSuiteDefinition' :: CreateSuiteDefinition -> SuiteDefinitionConfiguration
$sel:tags:CreateSuiteDefinition' :: CreateSuiteDefinition -> Maybe (HashMap Text Text)
..} =
    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 SuiteDefinitionConfiguration
suiteDefinitionConfiguration

instance Data.ToHeaders CreateSuiteDefinition where
  toHeaders :: CreateSuiteDefinition -> 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 CreateSuiteDefinition where
  toJSON :: CreateSuiteDefinition -> Value
toJSON CreateSuiteDefinition' {Maybe (HashMap Text Text)
SuiteDefinitionConfiguration
suiteDefinitionConfiguration :: SuiteDefinitionConfiguration
tags :: Maybe (HashMap Text Text)
$sel:suiteDefinitionConfiguration:CreateSuiteDefinition' :: CreateSuiteDefinition -> SuiteDefinitionConfiguration
$sel:tags:CreateSuiteDefinition' :: CreateSuiteDefinition -> Maybe (HashMap Text Text)
..} =
    [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 (HashMap Text Text)
tags,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"suiteDefinitionConfiguration"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= SuiteDefinitionConfiguration
suiteDefinitionConfiguration
              )
          ]
      )

instance Data.ToPath CreateSuiteDefinition where
  toPath :: CreateSuiteDefinition -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/suiteDefinitions"

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

-- | /See:/ 'newCreateSuiteDefinitionResponse' smart constructor.
data CreateSuiteDefinitionResponse = CreateSuiteDefinitionResponse'
  { -- | The timestamp of when the test suite was created.
    CreateSuiteDefinitionResponse -> Maybe POSIX
createdAt :: Prelude.Maybe Data.POSIX,
    -- | The Amazon Resource Name (ARN) of the test suite.
    CreateSuiteDefinitionResponse -> Maybe Text
suiteDefinitionArn :: Prelude.Maybe Prelude.Text,
    -- | The UUID of the test suite created.
    CreateSuiteDefinitionResponse -> Maybe Text
suiteDefinitionId :: Prelude.Maybe Prelude.Text,
    -- | The suite definition name of the test suite. This is a required
    -- parameter.
    CreateSuiteDefinitionResponse -> Maybe Text
suiteDefinitionName :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateSuiteDefinitionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateSuiteDefinitionResponse
-> CreateSuiteDefinitionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateSuiteDefinitionResponse
-> CreateSuiteDefinitionResponse -> Bool
$c/= :: CreateSuiteDefinitionResponse
-> CreateSuiteDefinitionResponse -> Bool
== :: CreateSuiteDefinitionResponse
-> CreateSuiteDefinitionResponse -> Bool
$c== :: CreateSuiteDefinitionResponse
-> CreateSuiteDefinitionResponse -> Bool
Prelude.Eq, ReadPrec [CreateSuiteDefinitionResponse]
ReadPrec CreateSuiteDefinitionResponse
Int -> ReadS CreateSuiteDefinitionResponse
ReadS [CreateSuiteDefinitionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateSuiteDefinitionResponse]
$creadListPrec :: ReadPrec [CreateSuiteDefinitionResponse]
readPrec :: ReadPrec CreateSuiteDefinitionResponse
$creadPrec :: ReadPrec CreateSuiteDefinitionResponse
readList :: ReadS [CreateSuiteDefinitionResponse]
$creadList :: ReadS [CreateSuiteDefinitionResponse]
readsPrec :: Int -> ReadS CreateSuiteDefinitionResponse
$creadsPrec :: Int -> ReadS CreateSuiteDefinitionResponse
Prelude.Read, Int -> CreateSuiteDefinitionResponse -> ShowS
[CreateSuiteDefinitionResponse] -> ShowS
CreateSuiteDefinitionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateSuiteDefinitionResponse] -> ShowS
$cshowList :: [CreateSuiteDefinitionResponse] -> ShowS
show :: CreateSuiteDefinitionResponse -> String
$cshow :: CreateSuiteDefinitionResponse -> String
showsPrec :: Int -> CreateSuiteDefinitionResponse -> ShowS
$cshowsPrec :: Int -> CreateSuiteDefinitionResponse -> ShowS
Prelude.Show, forall x.
Rep CreateSuiteDefinitionResponse x
-> CreateSuiteDefinitionResponse
forall x.
CreateSuiteDefinitionResponse
-> Rep CreateSuiteDefinitionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateSuiteDefinitionResponse x
-> CreateSuiteDefinitionResponse
$cfrom :: forall x.
CreateSuiteDefinitionResponse
-> Rep CreateSuiteDefinitionResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateSuiteDefinitionResponse' 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:
--
-- 'createdAt', 'createSuiteDefinitionResponse_createdAt' - The timestamp of when the test suite was created.
--
-- 'suiteDefinitionArn', 'createSuiteDefinitionResponse_suiteDefinitionArn' - The Amazon Resource Name (ARN) of the test suite.
--
-- 'suiteDefinitionId', 'createSuiteDefinitionResponse_suiteDefinitionId' - The UUID of the test suite created.
--
-- 'suiteDefinitionName', 'createSuiteDefinitionResponse_suiteDefinitionName' - The suite definition name of the test suite. This is a required
-- parameter.
--
-- 'httpStatus', 'createSuiteDefinitionResponse_httpStatus' - The response's http status code.
newCreateSuiteDefinitionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateSuiteDefinitionResponse
newCreateSuiteDefinitionResponse :: Int -> CreateSuiteDefinitionResponse
newCreateSuiteDefinitionResponse Int
pHttpStatus_ =
  CreateSuiteDefinitionResponse'
    { $sel:createdAt:CreateSuiteDefinitionResponse' :: Maybe POSIX
createdAt =
        forall a. Maybe a
Prelude.Nothing,
      $sel:suiteDefinitionArn:CreateSuiteDefinitionResponse' :: Maybe Text
suiteDefinitionArn = forall a. Maybe a
Prelude.Nothing,
      $sel:suiteDefinitionId:CreateSuiteDefinitionResponse' :: Maybe Text
suiteDefinitionId = forall a. Maybe a
Prelude.Nothing,
      $sel:suiteDefinitionName:CreateSuiteDefinitionResponse' :: Maybe Text
suiteDefinitionName = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateSuiteDefinitionResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The timestamp of when the test suite was created.
createSuiteDefinitionResponse_createdAt :: Lens.Lens' CreateSuiteDefinitionResponse (Prelude.Maybe Prelude.UTCTime)
createSuiteDefinitionResponse_createdAt :: Lens' CreateSuiteDefinitionResponse (Maybe UTCTime)
createSuiteDefinitionResponse_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSuiteDefinitionResponse' {Maybe POSIX
createdAt :: Maybe POSIX
$sel:createdAt:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Maybe POSIX
createdAt} -> Maybe POSIX
createdAt) (\s :: CreateSuiteDefinitionResponse
s@CreateSuiteDefinitionResponse' {} Maybe POSIX
a -> CreateSuiteDefinitionResponse
s {$sel:createdAt:CreateSuiteDefinitionResponse' :: Maybe POSIX
createdAt = Maybe POSIX
a} :: CreateSuiteDefinitionResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The Amazon Resource Name (ARN) of the test suite.
createSuiteDefinitionResponse_suiteDefinitionArn :: Lens.Lens' CreateSuiteDefinitionResponse (Prelude.Maybe Prelude.Text)
createSuiteDefinitionResponse_suiteDefinitionArn :: Lens' CreateSuiteDefinitionResponse (Maybe Text)
createSuiteDefinitionResponse_suiteDefinitionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSuiteDefinitionResponse' {Maybe Text
suiteDefinitionArn :: Maybe Text
$sel:suiteDefinitionArn:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Maybe Text
suiteDefinitionArn} -> Maybe Text
suiteDefinitionArn) (\s :: CreateSuiteDefinitionResponse
s@CreateSuiteDefinitionResponse' {} Maybe Text
a -> CreateSuiteDefinitionResponse
s {$sel:suiteDefinitionArn:CreateSuiteDefinitionResponse' :: Maybe Text
suiteDefinitionArn = Maybe Text
a} :: CreateSuiteDefinitionResponse)

-- | The UUID of the test suite created.
createSuiteDefinitionResponse_suiteDefinitionId :: Lens.Lens' CreateSuiteDefinitionResponse (Prelude.Maybe Prelude.Text)
createSuiteDefinitionResponse_suiteDefinitionId :: Lens' CreateSuiteDefinitionResponse (Maybe Text)
createSuiteDefinitionResponse_suiteDefinitionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSuiteDefinitionResponse' {Maybe Text
suiteDefinitionId :: Maybe Text
$sel:suiteDefinitionId:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Maybe Text
suiteDefinitionId} -> Maybe Text
suiteDefinitionId) (\s :: CreateSuiteDefinitionResponse
s@CreateSuiteDefinitionResponse' {} Maybe Text
a -> CreateSuiteDefinitionResponse
s {$sel:suiteDefinitionId:CreateSuiteDefinitionResponse' :: Maybe Text
suiteDefinitionId = Maybe Text
a} :: CreateSuiteDefinitionResponse)

-- | The suite definition name of the test suite. This is a required
-- parameter.
createSuiteDefinitionResponse_suiteDefinitionName :: Lens.Lens' CreateSuiteDefinitionResponse (Prelude.Maybe Prelude.Text)
createSuiteDefinitionResponse_suiteDefinitionName :: Lens' CreateSuiteDefinitionResponse (Maybe Text)
createSuiteDefinitionResponse_suiteDefinitionName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateSuiteDefinitionResponse' {Maybe Text
suiteDefinitionName :: Maybe Text
$sel:suiteDefinitionName:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Maybe Text
suiteDefinitionName} -> Maybe Text
suiteDefinitionName) (\s :: CreateSuiteDefinitionResponse
s@CreateSuiteDefinitionResponse' {} Maybe Text
a -> CreateSuiteDefinitionResponse
s {$sel:suiteDefinitionName:CreateSuiteDefinitionResponse' :: Maybe Text
suiteDefinitionName = Maybe Text
a} :: CreateSuiteDefinitionResponse)

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

instance Prelude.NFData CreateSuiteDefinitionResponse where
  rnf :: CreateSuiteDefinitionResponse -> ()
rnf CreateSuiteDefinitionResponse' {Int
Maybe Text
Maybe POSIX
httpStatus :: Int
suiteDefinitionName :: Maybe Text
suiteDefinitionId :: Maybe Text
suiteDefinitionArn :: Maybe Text
createdAt :: Maybe POSIX
$sel:httpStatus:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Int
$sel:suiteDefinitionName:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Maybe Text
$sel:suiteDefinitionId:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Maybe Text
$sel:suiteDefinitionArn:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Maybe Text
$sel:createdAt:CreateSuiteDefinitionResponse' :: CreateSuiteDefinitionResponse -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
suiteDefinitionArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
suiteDefinitionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
suiteDefinitionName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus