{-# 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.IoTFleetWise.UpdateModelManifest
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a vehicle model (model manifest). If created vehicles are
-- associated with a vehicle model, it can\'t be updated.
module Amazonka.IoTFleetWise.UpdateModelManifest
  ( -- * Creating a Request
    UpdateModelManifest (..),
    newUpdateModelManifest,

    -- * Request Lenses
    updateModelManifest_description,
    updateModelManifest_nodesToAdd,
    updateModelManifest_nodesToRemove,
    updateModelManifest_status,
    updateModelManifest_name,

    -- * Destructuring the Response
    UpdateModelManifestResponse (..),
    newUpdateModelManifestResponse,

    -- * Response Lenses
    updateModelManifestResponse_httpStatus,
    updateModelManifestResponse_name,
    updateModelManifestResponse_arn,
  )
where

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

-- | /See:/ 'newUpdateModelManifest' smart constructor.
data UpdateModelManifest = UpdateModelManifest'
  { -- | A brief description of the vehicle model.
    UpdateModelManifest -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | A list of @fullyQualifiedName@ of nodes, which are a general abstraction
    -- of signals, to add to the vehicle model.
    UpdateModelManifest -> Maybe (NonEmpty Text)
nodesToAdd :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A list of @fullyQualifiedName@ of nodes, which are a general abstraction
    -- of signals, to remove from the vehicle model.
    UpdateModelManifest -> Maybe (NonEmpty Text)
nodesToRemove :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The state of the vehicle model. If the status is @ACTIVE@, the vehicle
    -- model can\'t be edited. If the status is @DRAFT@, you can edit the
    -- vehicle model.
    UpdateModelManifest -> Maybe ManifestStatus
status :: Prelude.Maybe ManifestStatus,
    -- | The name of the vehicle model to update.
    UpdateModelManifest -> Text
name :: Prelude.Text
  }
  deriving (UpdateModelManifest -> UpdateModelManifest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateModelManifest -> UpdateModelManifest -> Bool
$c/= :: UpdateModelManifest -> UpdateModelManifest -> Bool
== :: UpdateModelManifest -> UpdateModelManifest -> Bool
$c== :: UpdateModelManifest -> UpdateModelManifest -> Bool
Prelude.Eq, ReadPrec [UpdateModelManifest]
ReadPrec UpdateModelManifest
Int -> ReadS UpdateModelManifest
ReadS [UpdateModelManifest]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateModelManifest]
$creadListPrec :: ReadPrec [UpdateModelManifest]
readPrec :: ReadPrec UpdateModelManifest
$creadPrec :: ReadPrec UpdateModelManifest
readList :: ReadS [UpdateModelManifest]
$creadList :: ReadS [UpdateModelManifest]
readsPrec :: Int -> ReadS UpdateModelManifest
$creadsPrec :: Int -> ReadS UpdateModelManifest
Prelude.Read, Int -> UpdateModelManifest -> ShowS
[UpdateModelManifest] -> ShowS
UpdateModelManifest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateModelManifest] -> ShowS
$cshowList :: [UpdateModelManifest] -> ShowS
show :: UpdateModelManifest -> String
$cshow :: UpdateModelManifest -> String
showsPrec :: Int -> UpdateModelManifest -> ShowS
$cshowsPrec :: Int -> UpdateModelManifest -> ShowS
Prelude.Show, forall x. Rep UpdateModelManifest x -> UpdateModelManifest
forall x. UpdateModelManifest -> Rep UpdateModelManifest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateModelManifest x -> UpdateModelManifest
$cfrom :: forall x. UpdateModelManifest -> Rep UpdateModelManifest x
Prelude.Generic)

-- |
-- Create a value of 'UpdateModelManifest' 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:
--
-- 'description', 'updateModelManifest_description' - A brief description of the vehicle model.
--
-- 'nodesToAdd', 'updateModelManifest_nodesToAdd' - A list of @fullyQualifiedName@ of nodes, which are a general abstraction
-- of signals, to add to the vehicle model.
--
-- 'nodesToRemove', 'updateModelManifest_nodesToRemove' - A list of @fullyQualifiedName@ of nodes, which are a general abstraction
-- of signals, to remove from the vehicle model.
--
-- 'status', 'updateModelManifest_status' - The state of the vehicle model. If the status is @ACTIVE@, the vehicle
-- model can\'t be edited. If the status is @DRAFT@, you can edit the
-- vehicle model.
--
-- 'name', 'updateModelManifest_name' - The name of the vehicle model to update.
newUpdateModelManifest ::
  -- | 'name'
  Prelude.Text ->
  UpdateModelManifest
newUpdateModelManifest :: Text -> UpdateModelManifest
newUpdateModelManifest Text
pName_ =
  UpdateModelManifest'
    { $sel:description:UpdateModelManifest' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:nodesToAdd:UpdateModelManifest' :: Maybe (NonEmpty Text)
nodesToAdd = forall a. Maybe a
Prelude.Nothing,
      $sel:nodesToRemove:UpdateModelManifest' :: Maybe (NonEmpty Text)
nodesToRemove = forall a. Maybe a
Prelude.Nothing,
      $sel:status:UpdateModelManifest' :: Maybe ManifestStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateModelManifest' :: Text
name = Text
pName_
    }

-- | A brief description of the vehicle model.
updateModelManifest_description :: Lens.Lens' UpdateModelManifest (Prelude.Maybe Prelude.Text)
updateModelManifest_description :: Lens' UpdateModelManifest (Maybe Text)
updateModelManifest_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateModelManifest' {Maybe Text
description :: Maybe Text
$sel:description:UpdateModelManifest' :: UpdateModelManifest -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateModelManifest
s@UpdateModelManifest' {} Maybe Text
a -> UpdateModelManifest
s {$sel:description:UpdateModelManifest' :: Maybe Text
description = Maybe Text
a} :: UpdateModelManifest)

-- | A list of @fullyQualifiedName@ of nodes, which are a general abstraction
-- of signals, to add to the vehicle model.
updateModelManifest_nodesToAdd :: Lens.Lens' UpdateModelManifest (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateModelManifest_nodesToAdd :: Lens' UpdateModelManifest (Maybe (NonEmpty Text))
updateModelManifest_nodesToAdd = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateModelManifest' {Maybe (NonEmpty Text)
nodesToAdd :: Maybe (NonEmpty Text)
$sel:nodesToAdd:UpdateModelManifest' :: UpdateModelManifest -> Maybe (NonEmpty Text)
nodesToAdd} -> Maybe (NonEmpty Text)
nodesToAdd) (\s :: UpdateModelManifest
s@UpdateModelManifest' {} Maybe (NonEmpty Text)
a -> UpdateModelManifest
s {$sel:nodesToAdd:UpdateModelManifest' :: Maybe (NonEmpty Text)
nodesToAdd = Maybe (NonEmpty Text)
a} :: UpdateModelManifest) 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

-- | A list of @fullyQualifiedName@ of nodes, which are a general abstraction
-- of signals, to remove from the vehicle model.
updateModelManifest_nodesToRemove :: Lens.Lens' UpdateModelManifest (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateModelManifest_nodesToRemove :: Lens' UpdateModelManifest (Maybe (NonEmpty Text))
updateModelManifest_nodesToRemove = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateModelManifest' {Maybe (NonEmpty Text)
nodesToRemove :: Maybe (NonEmpty Text)
$sel:nodesToRemove:UpdateModelManifest' :: UpdateModelManifest -> Maybe (NonEmpty Text)
nodesToRemove} -> Maybe (NonEmpty Text)
nodesToRemove) (\s :: UpdateModelManifest
s@UpdateModelManifest' {} Maybe (NonEmpty Text)
a -> UpdateModelManifest
s {$sel:nodesToRemove:UpdateModelManifest' :: Maybe (NonEmpty Text)
nodesToRemove = Maybe (NonEmpty Text)
a} :: UpdateModelManifest) 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 state of the vehicle model. If the status is @ACTIVE@, the vehicle
-- model can\'t be edited. If the status is @DRAFT@, you can edit the
-- vehicle model.
updateModelManifest_status :: Lens.Lens' UpdateModelManifest (Prelude.Maybe ManifestStatus)
updateModelManifest_status :: Lens' UpdateModelManifest (Maybe ManifestStatus)
updateModelManifest_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateModelManifest' {Maybe ManifestStatus
status :: Maybe ManifestStatus
$sel:status:UpdateModelManifest' :: UpdateModelManifest -> Maybe ManifestStatus
status} -> Maybe ManifestStatus
status) (\s :: UpdateModelManifest
s@UpdateModelManifest' {} Maybe ManifestStatus
a -> UpdateModelManifest
s {$sel:status:UpdateModelManifest' :: Maybe ManifestStatus
status = Maybe ManifestStatus
a} :: UpdateModelManifest)

-- | The name of the vehicle model to update.
updateModelManifest_name :: Lens.Lens' UpdateModelManifest Prelude.Text
updateModelManifest_name :: Lens' UpdateModelManifest Text
updateModelManifest_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateModelManifest' {Text
name :: Text
$sel:name:UpdateModelManifest' :: UpdateModelManifest -> Text
name} -> Text
name) (\s :: UpdateModelManifest
s@UpdateModelManifest' {} Text
a -> UpdateModelManifest
s {$sel:name:UpdateModelManifest' :: Text
name = Text
a} :: UpdateModelManifest)

instance Core.AWSRequest UpdateModelManifest where
  type
    AWSResponse UpdateModelManifest =
      UpdateModelManifestResponse
  request :: (Service -> Service)
-> UpdateModelManifest -> Request UpdateModelManifest
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 UpdateModelManifest
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateModelManifest)))
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 ->
          Int -> Text -> Text -> UpdateModelManifestResponse
UpdateModelManifestResponse'
            forall (f :: * -> *) a b. Functor 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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"arn")
      )

instance Prelude.Hashable UpdateModelManifest where
  hashWithSalt :: Int -> UpdateModelManifest -> Int
hashWithSalt Int
_salt UpdateModelManifest' {Maybe (NonEmpty Text)
Maybe Text
Maybe ManifestStatus
Text
name :: Text
status :: Maybe ManifestStatus
nodesToRemove :: Maybe (NonEmpty Text)
nodesToAdd :: Maybe (NonEmpty Text)
description :: Maybe Text
$sel:name:UpdateModelManifest' :: UpdateModelManifest -> Text
$sel:status:UpdateModelManifest' :: UpdateModelManifest -> Maybe ManifestStatus
$sel:nodesToRemove:UpdateModelManifest' :: UpdateModelManifest -> Maybe (NonEmpty Text)
$sel:nodesToAdd:UpdateModelManifest' :: UpdateModelManifest -> Maybe (NonEmpty Text)
$sel:description:UpdateModelManifest' :: UpdateModelManifest -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
nodesToAdd
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
nodesToRemove
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ManifestStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData UpdateModelManifest where
  rnf :: UpdateModelManifest -> ()
rnf UpdateModelManifest' {Maybe (NonEmpty Text)
Maybe Text
Maybe ManifestStatus
Text
name :: Text
status :: Maybe ManifestStatus
nodesToRemove :: Maybe (NonEmpty Text)
nodesToAdd :: Maybe (NonEmpty Text)
description :: Maybe Text
$sel:name:UpdateModelManifest' :: UpdateModelManifest -> Text
$sel:status:UpdateModelManifest' :: UpdateModelManifest -> Maybe ManifestStatus
$sel:nodesToRemove:UpdateModelManifest' :: UpdateModelManifest -> Maybe (NonEmpty Text)
$sel:nodesToAdd:UpdateModelManifest' :: UpdateModelManifest -> Maybe (NonEmpty Text)
$sel:description:UpdateModelManifest' :: UpdateModelManifest -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
nodesToAdd
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
nodesToRemove
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ManifestStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name

instance Data.ToHeaders UpdateModelManifest where
  toHeaders :: UpdateModelManifest -> 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
"IoTAutobahnControlPlane.UpdateModelManifest" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateModelManifest where
  toJSON :: UpdateModelManifest -> Value
toJSON UpdateModelManifest' {Maybe (NonEmpty Text)
Maybe Text
Maybe ManifestStatus
Text
name :: Text
status :: Maybe ManifestStatus
nodesToRemove :: Maybe (NonEmpty Text)
nodesToAdd :: Maybe (NonEmpty Text)
description :: Maybe Text
$sel:name:UpdateModelManifest' :: UpdateModelManifest -> Text
$sel:status:UpdateModelManifest' :: UpdateModelManifest -> Maybe ManifestStatus
$sel:nodesToRemove:UpdateModelManifest' :: UpdateModelManifest -> Maybe (NonEmpty Text)
$sel:nodesToAdd:UpdateModelManifest' :: UpdateModelManifest -> Maybe (NonEmpty Text)
$sel:description:UpdateModelManifest' :: UpdateModelManifest -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"description" 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
description,
            (Key
"nodesToAdd" 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 (NonEmpty Text)
nodesToAdd,
            (Key
"nodesToRemove" 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 (NonEmpty Text)
nodesToRemove,
            (Key
"status" 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 ManifestStatus
status,
            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 UpdateModelManifest where
  toPath :: UpdateModelManifest -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

-- |
-- Create a value of 'UpdateModelManifestResponse' 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:
--
-- 'httpStatus', 'updateModelManifestResponse_httpStatus' - The response's http status code.
--
-- 'name', 'updateModelManifestResponse_name' - The name of the updated vehicle model.
--
-- 'arn', 'updateModelManifestResponse_arn' - The Amazon Resource Name (ARN) of the updated vehicle model.
newUpdateModelManifestResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'name'
  Prelude.Text ->
  -- | 'arn'
  Prelude.Text ->
  UpdateModelManifestResponse
newUpdateModelManifestResponse :: Int -> Text -> Text -> UpdateModelManifestResponse
newUpdateModelManifestResponse
  Int
pHttpStatus_
  Text
pName_
  Text
pArn_ =
    UpdateModelManifestResponse'
      { $sel:httpStatus:UpdateModelManifestResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:name:UpdateModelManifestResponse' :: Text
name = Text
pName_,
        $sel:arn:UpdateModelManifestResponse' :: Text
arn = Text
pArn_
      }

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

-- | The name of the updated vehicle model.
updateModelManifestResponse_name :: Lens.Lens' UpdateModelManifestResponse Prelude.Text
updateModelManifestResponse_name :: Lens' UpdateModelManifestResponse Text
updateModelManifestResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateModelManifestResponse' {Text
name :: Text
$sel:name:UpdateModelManifestResponse' :: UpdateModelManifestResponse -> Text
name} -> Text
name) (\s :: UpdateModelManifestResponse
s@UpdateModelManifestResponse' {} Text
a -> UpdateModelManifestResponse
s {$sel:name:UpdateModelManifestResponse' :: Text
name = Text
a} :: UpdateModelManifestResponse)

-- | The Amazon Resource Name (ARN) of the updated vehicle model.
updateModelManifestResponse_arn :: Lens.Lens' UpdateModelManifestResponse Prelude.Text
updateModelManifestResponse_arn :: Lens' UpdateModelManifestResponse Text
updateModelManifestResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateModelManifestResponse' {Text
arn :: Text
$sel:arn:UpdateModelManifestResponse' :: UpdateModelManifestResponse -> Text
arn} -> Text
arn) (\s :: UpdateModelManifestResponse
s@UpdateModelManifestResponse' {} Text
a -> UpdateModelManifestResponse
s {$sel:arn:UpdateModelManifestResponse' :: Text
arn = Text
a} :: UpdateModelManifestResponse)

instance Prelude.NFData UpdateModelManifestResponse where
  rnf :: UpdateModelManifestResponse -> ()
rnf UpdateModelManifestResponse' {Int
Text
arn :: Text
name :: Text
httpStatus :: Int
$sel:arn:UpdateModelManifestResponse' :: UpdateModelManifestResponse -> Text
$sel:name:UpdateModelManifestResponse' :: UpdateModelManifestResponse -> Text
$sel:httpStatus:UpdateModelManifestResponse' :: UpdateModelManifestResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      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
arn