{-# 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.IoTWireless.CreateWirelessGatewayTaskDefinition
-- 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 gateway task definition.
module Amazonka.IoTWireless.CreateWirelessGatewayTaskDefinition
  ( -- * Creating a Request
    CreateWirelessGatewayTaskDefinition (..),
    newCreateWirelessGatewayTaskDefinition,

    -- * Request Lenses
    createWirelessGatewayTaskDefinition_clientRequestToken,
    createWirelessGatewayTaskDefinition_name,
    createWirelessGatewayTaskDefinition_tags,
    createWirelessGatewayTaskDefinition_update,
    createWirelessGatewayTaskDefinition_autoCreateTasks,

    -- * Destructuring the Response
    CreateWirelessGatewayTaskDefinitionResponse (..),
    newCreateWirelessGatewayTaskDefinitionResponse,

    -- * Response Lenses
    createWirelessGatewayTaskDefinitionResponse_arn,
    createWirelessGatewayTaskDefinitionResponse_id,
    createWirelessGatewayTaskDefinitionResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateWirelessGatewayTaskDefinition' smart constructor.
data CreateWirelessGatewayTaskDefinition = CreateWirelessGatewayTaskDefinition'
  { -- | Each resource must have a unique client request token. If you try to
    -- create a new resource with the same token as a resource that already
    -- exists, an exception occurs. If you omit this value, AWS SDKs will
    -- automatically generate a unique client request.
    CreateWirelessGatewayTaskDefinition -> Maybe Text
clientRequestToken :: Prelude.Maybe Prelude.Text,
    -- | The name of the new resource.
    CreateWirelessGatewayTaskDefinition -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The tags to attach to the specified resource. Tags are metadata that you
    -- can use to manage a resource.
    CreateWirelessGatewayTaskDefinition -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | Information about the gateways to update.
    CreateWirelessGatewayTaskDefinition
-> Maybe UpdateWirelessGatewayTaskCreate
update :: Prelude.Maybe UpdateWirelessGatewayTaskCreate,
    -- | Whether to automatically create tasks using this task definition for all
    -- gateways with the specified current version. If @false@, the task must
    -- me created by calling @CreateWirelessGatewayTask@.
    CreateWirelessGatewayTaskDefinition -> Bool
autoCreateTasks :: Prelude.Bool
  }
  deriving (CreateWirelessGatewayTaskDefinition
-> CreateWirelessGatewayTaskDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateWirelessGatewayTaskDefinition
-> CreateWirelessGatewayTaskDefinition -> Bool
$c/= :: CreateWirelessGatewayTaskDefinition
-> CreateWirelessGatewayTaskDefinition -> Bool
== :: CreateWirelessGatewayTaskDefinition
-> CreateWirelessGatewayTaskDefinition -> Bool
$c== :: CreateWirelessGatewayTaskDefinition
-> CreateWirelessGatewayTaskDefinition -> Bool
Prelude.Eq, ReadPrec [CreateWirelessGatewayTaskDefinition]
ReadPrec CreateWirelessGatewayTaskDefinition
Int -> ReadS CreateWirelessGatewayTaskDefinition
ReadS [CreateWirelessGatewayTaskDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateWirelessGatewayTaskDefinition]
$creadListPrec :: ReadPrec [CreateWirelessGatewayTaskDefinition]
readPrec :: ReadPrec CreateWirelessGatewayTaskDefinition
$creadPrec :: ReadPrec CreateWirelessGatewayTaskDefinition
readList :: ReadS [CreateWirelessGatewayTaskDefinition]
$creadList :: ReadS [CreateWirelessGatewayTaskDefinition]
readsPrec :: Int -> ReadS CreateWirelessGatewayTaskDefinition
$creadsPrec :: Int -> ReadS CreateWirelessGatewayTaskDefinition
Prelude.Read, Int -> CreateWirelessGatewayTaskDefinition -> ShowS
[CreateWirelessGatewayTaskDefinition] -> ShowS
CreateWirelessGatewayTaskDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateWirelessGatewayTaskDefinition] -> ShowS
$cshowList :: [CreateWirelessGatewayTaskDefinition] -> ShowS
show :: CreateWirelessGatewayTaskDefinition -> String
$cshow :: CreateWirelessGatewayTaskDefinition -> String
showsPrec :: Int -> CreateWirelessGatewayTaskDefinition -> ShowS
$cshowsPrec :: Int -> CreateWirelessGatewayTaskDefinition -> ShowS
Prelude.Show, forall x.
Rep CreateWirelessGatewayTaskDefinition x
-> CreateWirelessGatewayTaskDefinition
forall x.
CreateWirelessGatewayTaskDefinition
-> Rep CreateWirelessGatewayTaskDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateWirelessGatewayTaskDefinition x
-> CreateWirelessGatewayTaskDefinition
$cfrom :: forall x.
CreateWirelessGatewayTaskDefinition
-> Rep CreateWirelessGatewayTaskDefinition x
Prelude.Generic)

-- |
-- Create a value of 'CreateWirelessGatewayTaskDefinition' 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:
--
-- 'clientRequestToken', 'createWirelessGatewayTaskDefinition_clientRequestToken' - Each resource must have a unique client request token. If you try to
-- create a new resource with the same token as a resource that already
-- exists, an exception occurs. If you omit this value, AWS SDKs will
-- automatically generate a unique client request.
--
-- 'name', 'createWirelessGatewayTaskDefinition_name' - The name of the new resource.
--
-- 'tags', 'createWirelessGatewayTaskDefinition_tags' - The tags to attach to the specified resource. Tags are metadata that you
-- can use to manage a resource.
--
-- 'update', 'createWirelessGatewayTaskDefinition_update' - Information about the gateways to update.
--
-- 'autoCreateTasks', 'createWirelessGatewayTaskDefinition_autoCreateTasks' - Whether to automatically create tasks using this task definition for all
-- gateways with the specified current version. If @false@, the task must
-- me created by calling @CreateWirelessGatewayTask@.
newCreateWirelessGatewayTaskDefinition ::
  -- | 'autoCreateTasks'
  Prelude.Bool ->
  CreateWirelessGatewayTaskDefinition
newCreateWirelessGatewayTaskDefinition :: Bool -> CreateWirelessGatewayTaskDefinition
newCreateWirelessGatewayTaskDefinition
  Bool
pAutoCreateTasks_ =
    CreateWirelessGatewayTaskDefinition'
      { $sel:clientRequestToken:CreateWirelessGatewayTaskDefinition' :: Maybe Text
clientRequestToken =
          forall a. Maybe a
Prelude.Nothing,
        $sel:name:CreateWirelessGatewayTaskDefinition' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateWirelessGatewayTaskDefinition' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:update:CreateWirelessGatewayTaskDefinition' :: Maybe UpdateWirelessGatewayTaskCreate
update = forall a. Maybe a
Prelude.Nothing,
        $sel:autoCreateTasks:CreateWirelessGatewayTaskDefinition' :: Bool
autoCreateTasks = Bool
pAutoCreateTasks_
      }

-- | Each resource must have a unique client request token. If you try to
-- create a new resource with the same token as a resource that already
-- exists, an exception occurs. If you omit this value, AWS SDKs will
-- automatically generate a unique client request.
createWirelessGatewayTaskDefinition_clientRequestToken :: Lens.Lens' CreateWirelessGatewayTaskDefinition (Prelude.Maybe Prelude.Text)
createWirelessGatewayTaskDefinition_clientRequestToken :: Lens' CreateWirelessGatewayTaskDefinition (Maybe Text)
createWirelessGatewayTaskDefinition_clientRequestToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateWirelessGatewayTaskDefinition' {Maybe Text
clientRequestToken :: Maybe Text
$sel:clientRequestToken:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe Text
clientRequestToken} -> Maybe Text
clientRequestToken) (\s :: CreateWirelessGatewayTaskDefinition
s@CreateWirelessGatewayTaskDefinition' {} Maybe Text
a -> CreateWirelessGatewayTaskDefinition
s {$sel:clientRequestToken:CreateWirelessGatewayTaskDefinition' :: Maybe Text
clientRequestToken = Maybe Text
a} :: CreateWirelessGatewayTaskDefinition)

-- | The name of the new resource.
createWirelessGatewayTaskDefinition_name :: Lens.Lens' CreateWirelessGatewayTaskDefinition (Prelude.Maybe Prelude.Text)
createWirelessGatewayTaskDefinition_name :: Lens' CreateWirelessGatewayTaskDefinition (Maybe Text)
createWirelessGatewayTaskDefinition_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateWirelessGatewayTaskDefinition' {Maybe Text
name :: Maybe Text
$sel:name:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe Text
name} -> Maybe Text
name) (\s :: CreateWirelessGatewayTaskDefinition
s@CreateWirelessGatewayTaskDefinition' {} Maybe Text
a -> CreateWirelessGatewayTaskDefinition
s {$sel:name:CreateWirelessGatewayTaskDefinition' :: Maybe Text
name = Maybe Text
a} :: CreateWirelessGatewayTaskDefinition)

-- | The tags to attach to the specified resource. Tags are metadata that you
-- can use to manage a resource.
createWirelessGatewayTaskDefinition_tags :: Lens.Lens' CreateWirelessGatewayTaskDefinition (Prelude.Maybe [Tag])
createWirelessGatewayTaskDefinition_tags :: Lens' CreateWirelessGatewayTaskDefinition (Maybe [Tag])
createWirelessGatewayTaskDefinition_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateWirelessGatewayTaskDefinition' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateWirelessGatewayTaskDefinition
s@CreateWirelessGatewayTaskDefinition' {} Maybe [Tag]
a -> CreateWirelessGatewayTaskDefinition
s {$sel:tags:CreateWirelessGatewayTaskDefinition' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateWirelessGatewayTaskDefinition) 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

-- | Information about the gateways to update.
createWirelessGatewayTaskDefinition_update :: Lens.Lens' CreateWirelessGatewayTaskDefinition (Prelude.Maybe UpdateWirelessGatewayTaskCreate)
createWirelessGatewayTaskDefinition_update :: Lens'
  CreateWirelessGatewayTaskDefinition
  (Maybe UpdateWirelessGatewayTaskCreate)
createWirelessGatewayTaskDefinition_update = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateWirelessGatewayTaskDefinition' {Maybe UpdateWirelessGatewayTaskCreate
update :: Maybe UpdateWirelessGatewayTaskCreate
$sel:update:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition
-> Maybe UpdateWirelessGatewayTaskCreate
update} -> Maybe UpdateWirelessGatewayTaskCreate
update) (\s :: CreateWirelessGatewayTaskDefinition
s@CreateWirelessGatewayTaskDefinition' {} Maybe UpdateWirelessGatewayTaskCreate
a -> CreateWirelessGatewayTaskDefinition
s {$sel:update:CreateWirelessGatewayTaskDefinition' :: Maybe UpdateWirelessGatewayTaskCreate
update = Maybe UpdateWirelessGatewayTaskCreate
a} :: CreateWirelessGatewayTaskDefinition)

-- | Whether to automatically create tasks using this task definition for all
-- gateways with the specified current version. If @false@, the task must
-- me created by calling @CreateWirelessGatewayTask@.
createWirelessGatewayTaskDefinition_autoCreateTasks :: Lens.Lens' CreateWirelessGatewayTaskDefinition Prelude.Bool
createWirelessGatewayTaskDefinition_autoCreateTasks :: Lens' CreateWirelessGatewayTaskDefinition Bool
createWirelessGatewayTaskDefinition_autoCreateTasks = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateWirelessGatewayTaskDefinition' {Bool
autoCreateTasks :: Bool
$sel:autoCreateTasks:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Bool
autoCreateTasks} -> Bool
autoCreateTasks) (\s :: CreateWirelessGatewayTaskDefinition
s@CreateWirelessGatewayTaskDefinition' {} Bool
a -> CreateWirelessGatewayTaskDefinition
s {$sel:autoCreateTasks:CreateWirelessGatewayTaskDefinition' :: Bool
autoCreateTasks = Bool
a} :: CreateWirelessGatewayTaskDefinition)

instance
  Core.AWSRequest
    CreateWirelessGatewayTaskDefinition
  where
  type
    AWSResponse CreateWirelessGatewayTaskDefinition =
      CreateWirelessGatewayTaskDefinitionResponse
  request :: (Service -> Service)
-> CreateWirelessGatewayTaskDefinition
-> Request CreateWirelessGatewayTaskDefinition
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 CreateWirelessGatewayTaskDefinition
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse CreateWirelessGatewayTaskDefinition)))
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 -> CreateWirelessGatewayTaskDefinitionResponse
CreateWirelessGatewayTaskDefinitionResponse'
            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
"Arn")
            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
"Id")
            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
    CreateWirelessGatewayTaskDefinition
  where
  hashWithSalt :: Int -> CreateWirelessGatewayTaskDefinition -> Int
hashWithSalt
    Int
_salt
    CreateWirelessGatewayTaskDefinition' {Bool
Maybe [Tag]
Maybe Text
Maybe UpdateWirelessGatewayTaskCreate
autoCreateTasks :: Bool
update :: Maybe UpdateWirelessGatewayTaskCreate
tags :: Maybe [Tag]
name :: Maybe Text
clientRequestToken :: Maybe Text
$sel:autoCreateTasks:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Bool
$sel:update:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition
-> Maybe UpdateWirelessGatewayTaskCreate
$sel:tags:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe [Tag]
$sel:name:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe Text
$sel:clientRequestToken:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientRequestToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe UpdateWirelessGatewayTaskCreate
update
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Bool
autoCreateTasks

instance
  Prelude.NFData
    CreateWirelessGatewayTaskDefinition
  where
  rnf :: CreateWirelessGatewayTaskDefinition -> ()
rnf CreateWirelessGatewayTaskDefinition' {Bool
Maybe [Tag]
Maybe Text
Maybe UpdateWirelessGatewayTaskCreate
autoCreateTasks :: Bool
update :: Maybe UpdateWirelessGatewayTaskCreate
tags :: Maybe [Tag]
name :: Maybe Text
clientRequestToken :: Maybe Text
$sel:autoCreateTasks:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Bool
$sel:update:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition
-> Maybe UpdateWirelessGatewayTaskCreate
$sel:tags:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe [Tag]
$sel:name:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe Text
$sel:clientRequestToken:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientRequestToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Maybe UpdateWirelessGatewayTaskCreate
update
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Bool
autoCreateTasks

instance
  Data.ToHeaders
    CreateWirelessGatewayTaskDefinition
  where
  toHeaders :: CreateWirelessGatewayTaskDefinition -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance
  Data.ToJSON
    CreateWirelessGatewayTaskDefinition
  where
  toJSON :: CreateWirelessGatewayTaskDefinition -> Value
toJSON CreateWirelessGatewayTaskDefinition' {Bool
Maybe [Tag]
Maybe Text
Maybe UpdateWirelessGatewayTaskCreate
autoCreateTasks :: Bool
update :: Maybe UpdateWirelessGatewayTaskCreate
tags :: Maybe [Tag]
name :: Maybe Text
clientRequestToken :: Maybe Text
$sel:autoCreateTasks:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Bool
$sel:update:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition
-> Maybe UpdateWirelessGatewayTaskCreate
$sel:tags:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe [Tag]
$sel:name:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe Text
$sel:clientRequestToken:CreateWirelessGatewayTaskDefinition' :: CreateWirelessGatewayTaskDefinition -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ClientRequestToken" 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
clientRequestToken,
            (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
name,
            (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,
            (Key
"Update" 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 UpdateWirelessGatewayTaskCreate
update,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"AutoCreateTasks" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Bool
autoCreateTasks)
          ]
      )

instance
  Data.ToPath
    CreateWirelessGatewayTaskDefinition
  where
  toPath :: CreateWirelessGatewayTaskDefinition -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const ByteString
"/wireless-gateway-task-definitions"

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

-- | /See:/ 'newCreateWirelessGatewayTaskDefinitionResponse' smart constructor.
data CreateWirelessGatewayTaskDefinitionResponse = CreateWirelessGatewayTaskDefinitionResponse'
  { -- | The Amazon Resource Name of the resource.
    CreateWirelessGatewayTaskDefinitionResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The ID of the new wireless gateway task definition.
    CreateWirelessGatewayTaskDefinitionResponse -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateWirelessGatewayTaskDefinitionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateWirelessGatewayTaskDefinitionResponse
-> CreateWirelessGatewayTaskDefinitionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateWirelessGatewayTaskDefinitionResponse
-> CreateWirelessGatewayTaskDefinitionResponse -> Bool
$c/= :: CreateWirelessGatewayTaskDefinitionResponse
-> CreateWirelessGatewayTaskDefinitionResponse -> Bool
== :: CreateWirelessGatewayTaskDefinitionResponse
-> CreateWirelessGatewayTaskDefinitionResponse -> Bool
$c== :: CreateWirelessGatewayTaskDefinitionResponse
-> CreateWirelessGatewayTaskDefinitionResponse -> Bool
Prelude.Eq, ReadPrec [CreateWirelessGatewayTaskDefinitionResponse]
ReadPrec CreateWirelessGatewayTaskDefinitionResponse
Int -> ReadS CreateWirelessGatewayTaskDefinitionResponse
ReadS [CreateWirelessGatewayTaskDefinitionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateWirelessGatewayTaskDefinitionResponse]
$creadListPrec :: ReadPrec [CreateWirelessGatewayTaskDefinitionResponse]
readPrec :: ReadPrec CreateWirelessGatewayTaskDefinitionResponse
$creadPrec :: ReadPrec CreateWirelessGatewayTaskDefinitionResponse
readList :: ReadS [CreateWirelessGatewayTaskDefinitionResponse]
$creadList :: ReadS [CreateWirelessGatewayTaskDefinitionResponse]
readsPrec :: Int -> ReadS CreateWirelessGatewayTaskDefinitionResponse
$creadsPrec :: Int -> ReadS CreateWirelessGatewayTaskDefinitionResponse
Prelude.Read, Int -> CreateWirelessGatewayTaskDefinitionResponse -> ShowS
[CreateWirelessGatewayTaskDefinitionResponse] -> ShowS
CreateWirelessGatewayTaskDefinitionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateWirelessGatewayTaskDefinitionResponse] -> ShowS
$cshowList :: [CreateWirelessGatewayTaskDefinitionResponse] -> ShowS
show :: CreateWirelessGatewayTaskDefinitionResponse -> String
$cshow :: CreateWirelessGatewayTaskDefinitionResponse -> String
showsPrec :: Int -> CreateWirelessGatewayTaskDefinitionResponse -> ShowS
$cshowsPrec :: Int -> CreateWirelessGatewayTaskDefinitionResponse -> ShowS
Prelude.Show, forall x.
Rep CreateWirelessGatewayTaskDefinitionResponse x
-> CreateWirelessGatewayTaskDefinitionResponse
forall x.
CreateWirelessGatewayTaskDefinitionResponse
-> Rep CreateWirelessGatewayTaskDefinitionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateWirelessGatewayTaskDefinitionResponse x
-> CreateWirelessGatewayTaskDefinitionResponse
$cfrom :: forall x.
CreateWirelessGatewayTaskDefinitionResponse
-> Rep CreateWirelessGatewayTaskDefinitionResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateWirelessGatewayTaskDefinitionResponse' 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:
--
-- 'arn', 'createWirelessGatewayTaskDefinitionResponse_arn' - The Amazon Resource Name of the resource.
--
-- 'id', 'createWirelessGatewayTaskDefinitionResponse_id' - The ID of the new wireless gateway task definition.
--
-- 'httpStatus', 'createWirelessGatewayTaskDefinitionResponse_httpStatus' - The response's http status code.
newCreateWirelessGatewayTaskDefinitionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateWirelessGatewayTaskDefinitionResponse
newCreateWirelessGatewayTaskDefinitionResponse :: Int -> CreateWirelessGatewayTaskDefinitionResponse
newCreateWirelessGatewayTaskDefinitionResponse
  Int
pHttpStatus_ =
    CreateWirelessGatewayTaskDefinitionResponse'
      { $sel:arn:CreateWirelessGatewayTaskDefinitionResponse' :: Maybe Text
arn =
          forall a. Maybe a
Prelude.Nothing,
        $sel:id:CreateWirelessGatewayTaskDefinitionResponse' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:CreateWirelessGatewayTaskDefinitionResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The Amazon Resource Name of the resource.
createWirelessGatewayTaskDefinitionResponse_arn :: Lens.Lens' CreateWirelessGatewayTaskDefinitionResponse (Prelude.Maybe Prelude.Text)
createWirelessGatewayTaskDefinitionResponse_arn :: Lens' CreateWirelessGatewayTaskDefinitionResponse (Maybe Text)
createWirelessGatewayTaskDefinitionResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateWirelessGatewayTaskDefinitionResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:CreateWirelessGatewayTaskDefinitionResponse' :: CreateWirelessGatewayTaskDefinitionResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: CreateWirelessGatewayTaskDefinitionResponse
s@CreateWirelessGatewayTaskDefinitionResponse' {} Maybe Text
a -> CreateWirelessGatewayTaskDefinitionResponse
s {$sel:arn:CreateWirelessGatewayTaskDefinitionResponse' :: Maybe Text
arn = Maybe Text
a} :: CreateWirelessGatewayTaskDefinitionResponse)

-- | The ID of the new wireless gateway task definition.
createWirelessGatewayTaskDefinitionResponse_id :: Lens.Lens' CreateWirelessGatewayTaskDefinitionResponse (Prelude.Maybe Prelude.Text)
createWirelessGatewayTaskDefinitionResponse_id :: Lens' CreateWirelessGatewayTaskDefinitionResponse (Maybe Text)
createWirelessGatewayTaskDefinitionResponse_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateWirelessGatewayTaskDefinitionResponse' {Maybe Text
id :: Maybe Text
$sel:id:CreateWirelessGatewayTaskDefinitionResponse' :: CreateWirelessGatewayTaskDefinitionResponse -> Maybe Text
id} -> Maybe Text
id) (\s :: CreateWirelessGatewayTaskDefinitionResponse
s@CreateWirelessGatewayTaskDefinitionResponse' {} Maybe Text
a -> CreateWirelessGatewayTaskDefinitionResponse
s {$sel:id:CreateWirelessGatewayTaskDefinitionResponse' :: Maybe Text
id = Maybe Text
a} :: CreateWirelessGatewayTaskDefinitionResponse)

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

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