{-# 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.ApiGatewayV2.UpdateRouteResponse
-- 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 RouteResponse.
module Amazonka.ApiGatewayV2.UpdateRouteResponse
  ( -- * Creating a Request
    UpdateRouteResponse (..),
    newUpdateRouteResponse,

    -- * Request Lenses
    updateRouteResponse_modelSelectionExpression,
    updateRouteResponse_responseModels,
    updateRouteResponse_responseParameters,
    updateRouteResponse_routeResponseKey,
    updateRouteResponse_routeResponseId,
    updateRouteResponse_apiId,
    updateRouteResponse_routeId,

    -- * Destructuring the Response
    UpdateRouteResponseResponse (..),
    newUpdateRouteResponseResponse,

    -- * Response Lenses
    updateRouteResponseResponse_modelSelectionExpression,
    updateRouteResponseResponse_responseModels,
    updateRouteResponseResponse_responseParameters,
    updateRouteResponseResponse_routeResponseId,
    updateRouteResponseResponse_routeResponseKey,
    updateRouteResponseResponse_httpStatus,
  )
where

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

-- | Updates a RouteResponse.
--
-- /See:/ 'newUpdateRouteResponse' smart constructor.
data UpdateRouteResponse = UpdateRouteResponse'
  { -- | The model selection expression for the route response. Supported only
    -- for WebSocket APIs.
    UpdateRouteResponse -> Maybe Text
modelSelectionExpression :: Prelude.Maybe Prelude.Text,
    -- | The response models for the route response.
    UpdateRouteResponse -> Maybe (HashMap Text Text)
responseModels :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The route response parameters.
    UpdateRouteResponse -> Maybe (HashMap Text ParameterConstraints)
responseParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text ParameterConstraints),
    -- | The route response key.
    UpdateRouteResponse -> Maybe Text
routeResponseKey :: Prelude.Maybe Prelude.Text,
    -- | The route response ID.
    UpdateRouteResponse -> Text
routeResponseId :: Prelude.Text,
    -- | The API identifier.
    UpdateRouteResponse -> Text
apiId :: Prelude.Text,
    -- | The route ID.
    UpdateRouteResponse -> Text
routeId :: Prelude.Text
  }
  deriving (UpdateRouteResponse -> UpdateRouteResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateRouteResponse -> UpdateRouteResponse -> Bool
$c/= :: UpdateRouteResponse -> UpdateRouteResponse -> Bool
== :: UpdateRouteResponse -> UpdateRouteResponse -> Bool
$c== :: UpdateRouteResponse -> UpdateRouteResponse -> Bool
Prelude.Eq, ReadPrec [UpdateRouteResponse]
ReadPrec UpdateRouteResponse
Int -> ReadS UpdateRouteResponse
ReadS [UpdateRouteResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateRouteResponse]
$creadListPrec :: ReadPrec [UpdateRouteResponse]
readPrec :: ReadPrec UpdateRouteResponse
$creadPrec :: ReadPrec UpdateRouteResponse
readList :: ReadS [UpdateRouteResponse]
$creadList :: ReadS [UpdateRouteResponse]
readsPrec :: Int -> ReadS UpdateRouteResponse
$creadsPrec :: Int -> ReadS UpdateRouteResponse
Prelude.Read, Int -> UpdateRouteResponse -> ShowS
[UpdateRouteResponse] -> ShowS
UpdateRouteResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateRouteResponse] -> ShowS
$cshowList :: [UpdateRouteResponse] -> ShowS
show :: UpdateRouteResponse -> String
$cshow :: UpdateRouteResponse -> String
showsPrec :: Int -> UpdateRouteResponse -> ShowS
$cshowsPrec :: Int -> UpdateRouteResponse -> ShowS
Prelude.Show, forall x. Rep UpdateRouteResponse x -> UpdateRouteResponse
forall x. UpdateRouteResponse -> Rep UpdateRouteResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateRouteResponse x -> UpdateRouteResponse
$cfrom :: forall x. UpdateRouteResponse -> Rep UpdateRouteResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateRouteResponse' 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:
--
-- 'modelSelectionExpression', 'updateRouteResponse_modelSelectionExpression' - The model selection expression for the route response. Supported only
-- for WebSocket APIs.
--
-- 'responseModels', 'updateRouteResponse_responseModels' - The response models for the route response.
--
-- 'responseParameters', 'updateRouteResponse_responseParameters' - The route response parameters.
--
-- 'routeResponseKey', 'updateRouteResponse_routeResponseKey' - The route response key.
--
-- 'routeResponseId', 'updateRouteResponse_routeResponseId' - The route response ID.
--
-- 'apiId', 'updateRouteResponse_apiId' - The API identifier.
--
-- 'routeId', 'updateRouteResponse_routeId' - The route ID.
newUpdateRouteResponse ::
  -- | 'routeResponseId'
  Prelude.Text ->
  -- | 'apiId'
  Prelude.Text ->
  -- | 'routeId'
  Prelude.Text ->
  UpdateRouteResponse
newUpdateRouteResponse :: Text -> Text -> Text -> UpdateRouteResponse
newUpdateRouteResponse
  Text
pRouteResponseId_
  Text
pApiId_
  Text
pRouteId_ =
    UpdateRouteResponse'
      { $sel:modelSelectionExpression:UpdateRouteResponse' :: Maybe Text
modelSelectionExpression =
          forall a. Maybe a
Prelude.Nothing,
        $sel:responseModels:UpdateRouteResponse' :: Maybe (HashMap Text Text)
responseModels = forall a. Maybe a
Prelude.Nothing,
        $sel:responseParameters:UpdateRouteResponse' :: Maybe (HashMap Text ParameterConstraints)
responseParameters = forall a. Maybe a
Prelude.Nothing,
        $sel:routeResponseKey:UpdateRouteResponse' :: Maybe Text
routeResponseKey = forall a. Maybe a
Prelude.Nothing,
        $sel:routeResponseId:UpdateRouteResponse' :: Text
routeResponseId = Text
pRouteResponseId_,
        $sel:apiId:UpdateRouteResponse' :: Text
apiId = Text
pApiId_,
        $sel:routeId:UpdateRouteResponse' :: Text
routeId = Text
pRouteId_
      }

-- | The model selection expression for the route response. Supported only
-- for WebSocket APIs.
updateRouteResponse_modelSelectionExpression :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe Prelude.Text)
updateRouteResponse_modelSelectionExpression :: Lens' UpdateRouteResponse (Maybe Text)
updateRouteResponse_modelSelectionExpression = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponse' {Maybe Text
modelSelectionExpression :: Maybe Text
$sel:modelSelectionExpression:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
modelSelectionExpression} -> Maybe Text
modelSelectionExpression) (\s :: UpdateRouteResponse
s@UpdateRouteResponse' {} Maybe Text
a -> UpdateRouteResponse
s {$sel:modelSelectionExpression:UpdateRouteResponse' :: Maybe Text
modelSelectionExpression = Maybe Text
a} :: UpdateRouteResponse)

-- | The response models for the route response.
updateRouteResponse_responseModels :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
updateRouteResponse_responseModels :: Lens' UpdateRouteResponse (Maybe (HashMap Text Text))
updateRouteResponse_responseModels = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponse' {Maybe (HashMap Text Text)
responseModels :: Maybe (HashMap Text Text)
$sel:responseModels:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text Text)
responseModels} -> Maybe (HashMap Text Text)
responseModels) (\s :: UpdateRouteResponse
s@UpdateRouteResponse' {} Maybe (HashMap Text Text)
a -> UpdateRouteResponse
s {$sel:responseModels:UpdateRouteResponse' :: Maybe (HashMap Text Text)
responseModels = Maybe (HashMap Text Text)
a} :: UpdateRouteResponse) 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 route response parameters.
updateRouteResponse_responseParameters :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text ParameterConstraints))
updateRouteResponse_responseParameters :: Lens'
  UpdateRouteResponse (Maybe (HashMap Text ParameterConstraints))
updateRouteResponse_responseParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponse' {Maybe (HashMap Text ParameterConstraints)
responseParameters :: Maybe (HashMap Text ParameterConstraints)
$sel:responseParameters:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text ParameterConstraints)
responseParameters} -> Maybe (HashMap Text ParameterConstraints)
responseParameters) (\s :: UpdateRouteResponse
s@UpdateRouteResponse' {} Maybe (HashMap Text ParameterConstraints)
a -> UpdateRouteResponse
s {$sel:responseParameters:UpdateRouteResponse' :: Maybe (HashMap Text ParameterConstraints)
responseParameters = Maybe (HashMap Text ParameterConstraints)
a} :: UpdateRouteResponse) 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 route response key.
updateRouteResponse_routeResponseKey :: Lens.Lens' UpdateRouteResponse (Prelude.Maybe Prelude.Text)
updateRouteResponse_routeResponseKey :: Lens' UpdateRouteResponse (Maybe Text)
updateRouteResponse_routeResponseKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponse' {Maybe Text
routeResponseKey :: Maybe Text
$sel:routeResponseKey:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
routeResponseKey} -> Maybe Text
routeResponseKey) (\s :: UpdateRouteResponse
s@UpdateRouteResponse' {} Maybe Text
a -> UpdateRouteResponse
s {$sel:routeResponseKey:UpdateRouteResponse' :: Maybe Text
routeResponseKey = Maybe Text
a} :: UpdateRouteResponse)

-- | The route response ID.
updateRouteResponse_routeResponseId :: Lens.Lens' UpdateRouteResponse Prelude.Text
updateRouteResponse_routeResponseId :: Lens' UpdateRouteResponse Text
updateRouteResponse_routeResponseId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponse' {Text
routeResponseId :: Text
$sel:routeResponseId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
routeResponseId} -> Text
routeResponseId) (\s :: UpdateRouteResponse
s@UpdateRouteResponse' {} Text
a -> UpdateRouteResponse
s {$sel:routeResponseId:UpdateRouteResponse' :: Text
routeResponseId = Text
a} :: UpdateRouteResponse)

-- | The API identifier.
updateRouteResponse_apiId :: Lens.Lens' UpdateRouteResponse Prelude.Text
updateRouteResponse_apiId :: Lens' UpdateRouteResponse Text
updateRouteResponse_apiId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponse' {Text
apiId :: Text
$sel:apiId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
apiId} -> Text
apiId) (\s :: UpdateRouteResponse
s@UpdateRouteResponse' {} Text
a -> UpdateRouteResponse
s {$sel:apiId:UpdateRouteResponse' :: Text
apiId = Text
a} :: UpdateRouteResponse)

-- | The route ID.
updateRouteResponse_routeId :: Lens.Lens' UpdateRouteResponse Prelude.Text
updateRouteResponse_routeId :: Lens' UpdateRouteResponse Text
updateRouteResponse_routeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponse' {Text
routeId :: Text
$sel:routeId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
routeId} -> Text
routeId) (\s :: UpdateRouteResponse
s@UpdateRouteResponse' {} Text
a -> UpdateRouteResponse
s {$sel:routeId:UpdateRouteResponse' :: Text
routeId = Text
a} :: UpdateRouteResponse)

instance Core.AWSRequest UpdateRouteResponse where
  type
    AWSResponse UpdateRouteResponse =
      UpdateRouteResponseResponse
  request :: (Service -> Service)
-> UpdateRouteResponse -> Request UpdateRouteResponse
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.patchJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateRouteResponse
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateRouteResponse)))
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 (HashMap Text Text)
-> Maybe (HashMap Text ParameterConstraints)
-> Maybe Text
-> Maybe Text
-> Int
-> UpdateRouteResponseResponse
UpdateRouteResponseResponse'
            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
"modelSelectionExpression")
            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
"responseModels" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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
"responseParameters"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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
"routeResponseId")
            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
"routeResponseKey")
            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 UpdateRouteResponse where
  hashWithSalt :: Int -> UpdateRouteResponse -> Int
hashWithSalt Int
_salt UpdateRouteResponse' {Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text ParameterConstraints)
Text
routeId :: Text
apiId :: Text
routeResponseId :: Text
routeResponseKey :: Maybe Text
responseParameters :: Maybe (HashMap Text ParameterConstraints)
responseModels :: Maybe (HashMap Text Text)
modelSelectionExpression :: Maybe Text
$sel:routeId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:apiId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:routeResponseId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:routeResponseKey:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
$sel:responseParameters:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text ParameterConstraints)
$sel:responseModels:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text Text)
$sel:modelSelectionExpression:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
modelSelectionExpression
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
responseModels
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text ParameterConstraints)
responseParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
routeResponseKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
routeResponseId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
apiId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
routeId

instance Prelude.NFData UpdateRouteResponse where
  rnf :: UpdateRouteResponse -> ()
rnf UpdateRouteResponse' {Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text ParameterConstraints)
Text
routeId :: Text
apiId :: Text
routeResponseId :: Text
routeResponseKey :: Maybe Text
responseParameters :: Maybe (HashMap Text ParameterConstraints)
responseModels :: Maybe (HashMap Text Text)
modelSelectionExpression :: Maybe Text
$sel:routeId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:apiId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:routeResponseId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:routeResponseKey:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
$sel:responseParameters:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text ParameterConstraints)
$sel:responseModels:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text Text)
$sel:modelSelectionExpression:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
modelSelectionExpression
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
responseModels
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text ParameterConstraints)
responseParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
routeResponseKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
routeResponseId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
apiId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
routeId

instance Data.ToHeaders UpdateRouteResponse where
  toHeaders :: UpdateRouteResponse -> 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 UpdateRouteResponse where
  toJSON :: UpdateRouteResponse -> Value
toJSON UpdateRouteResponse' {Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text ParameterConstraints)
Text
routeId :: Text
apiId :: Text
routeResponseId :: Text
routeResponseKey :: Maybe Text
responseParameters :: Maybe (HashMap Text ParameterConstraints)
responseModels :: Maybe (HashMap Text Text)
modelSelectionExpression :: Maybe Text
$sel:routeId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:apiId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:routeResponseId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:routeResponseKey:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
$sel:responseParameters:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text ParameterConstraints)
$sel:responseModels:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text Text)
$sel:modelSelectionExpression:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"modelSelectionExpression" 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
modelSelectionExpression,
            (Key
"responseModels" 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)
responseModels,
            (Key
"responseParameters" 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 ParameterConstraints)
responseParameters,
            (Key
"routeResponseKey" 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
routeResponseKey
          ]
      )

instance Data.ToPath UpdateRouteResponse where
  toPath :: UpdateRouteResponse -> ByteString
toPath UpdateRouteResponse' {Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text ParameterConstraints)
Text
routeId :: Text
apiId :: Text
routeResponseId :: Text
routeResponseKey :: Maybe Text
responseParameters :: Maybe (HashMap Text ParameterConstraints)
responseModels :: Maybe (HashMap Text Text)
modelSelectionExpression :: Maybe Text
$sel:routeId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:apiId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:routeResponseId:UpdateRouteResponse' :: UpdateRouteResponse -> Text
$sel:routeResponseKey:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
$sel:responseParameters:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text ParameterConstraints)
$sel:responseModels:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe (HashMap Text Text)
$sel:modelSelectionExpression:UpdateRouteResponse' :: UpdateRouteResponse -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/v2/apis/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
apiId,
        ByteString
"/routes/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
routeId,
        ByteString
"/routeresponses/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
routeResponseId
      ]

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

-- | /See:/ 'newUpdateRouteResponseResponse' smart constructor.
data UpdateRouteResponseResponse = UpdateRouteResponseResponse'
  { -- | Represents the model selection expression of a route response. Supported
    -- only for WebSocket APIs.
    UpdateRouteResponseResponse -> Maybe Text
modelSelectionExpression :: Prelude.Maybe Prelude.Text,
    -- | Represents the response models of a route response.
    UpdateRouteResponseResponse -> Maybe (HashMap Text Text)
responseModels :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Represents the response parameters of a route response.
    UpdateRouteResponseResponse
-> Maybe (HashMap Text ParameterConstraints)
responseParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text ParameterConstraints),
    -- | Represents the identifier of a route response.
    UpdateRouteResponseResponse -> Maybe Text
routeResponseId :: Prelude.Maybe Prelude.Text,
    -- | Represents the route response key of a route response.
    UpdateRouteResponseResponse -> Maybe Text
routeResponseKey :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    UpdateRouteResponseResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateRouteResponseResponse -> UpdateRouteResponseResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateRouteResponseResponse -> UpdateRouteResponseResponse -> Bool
$c/= :: UpdateRouteResponseResponse -> UpdateRouteResponseResponse -> Bool
== :: UpdateRouteResponseResponse -> UpdateRouteResponseResponse -> Bool
$c== :: UpdateRouteResponseResponse -> UpdateRouteResponseResponse -> Bool
Prelude.Eq, ReadPrec [UpdateRouteResponseResponse]
ReadPrec UpdateRouteResponseResponse
Int -> ReadS UpdateRouteResponseResponse
ReadS [UpdateRouteResponseResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateRouteResponseResponse]
$creadListPrec :: ReadPrec [UpdateRouteResponseResponse]
readPrec :: ReadPrec UpdateRouteResponseResponse
$creadPrec :: ReadPrec UpdateRouteResponseResponse
readList :: ReadS [UpdateRouteResponseResponse]
$creadList :: ReadS [UpdateRouteResponseResponse]
readsPrec :: Int -> ReadS UpdateRouteResponseResponse
$creadsPrec :: Int -> ReadS UpdateRouteResponseResponse
Prelude.Read, Int -> UpdateRouteResponseResponse -> ShowS
[UpdateRouteResponseResponse] -> ShowS
UpdateRouteResponseResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateRouteResponseResponse] -> ShowS
$cshowList :: [UpdateRouteResponseResponse] -> ShowS
show :: UpdateRouteResponseResponse -> String
$cshow :: UpdateRouteResponseResponse -> String
showsPrec :: Int -> UpdateRouteResponseResponse -> ShowS
$cshowsPrec :: Int -> UpdateRouteResponseResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateRouteResponseResponse x -> UpdateRouteResponseResponse
forall x.
UpdateRouteResponseResponse -> Rep UpdateRouteResponseResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateRouteResponseResponse x -> UpdateRouteResponseResponse
$cfrom :: forall x.
UpdateRouteResponseResponse -> Rep UpdateRouteResponseResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateRouteResponseResponse' 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:
--
-- 'modelSelectionExpression', 'updateRouteResponseResponse_modelSelectionExpression' - Represents the model selection expression of a route response. Supported
-- only for WebSocket APIs.
--
-- 'responseModels', 'updateRouteResponseResponse_responseModels' - Represents the response models of a route response.
--
-- 'responseParameters', 'updateRouteResponseResponse_responseParameters' - Represents the response parameters of a route response.
--
-- 'routeResponseId', 'updateRouteResponseResponse_routeResponseId' - Represents the identifier of a route response.
--
-- 'routeResponseKey', 'updateRouteResponseResponse_routeResponseKey' - Represents the route response key of a route response.
--
-- 'httpStatus', 'updateRouteResponseResponse_httpStatus' - The response's http status code.
newUpdateRouteResponseResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateRouteResponseResponse
newUpdateRouteResponseResponse :: Int -> UpdateRouteResponseResponse
newUpdateRouteResponseResponse Int
pHttpStatus_ =
  UpdateRouteResponseResponse'
    { $sel:modelSelectionExpression:UpdateRouteResponseResponse' :: Maybe Text
modelSelectionExpression =
        forall a. Maybe a
Prelude.Nothing,
      $sel:responseModels:UpdateRouteResponseResponse' :: Maybe (HashMap Text Text)
responseModels = forall a. Maybe a
Prelude.Nothing,
      $sel:responseParameters:UpdateRouteResponseResponse' :: Maybe (HashMap Text ParameterConstraints)
responseParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:routeResponseId:UpdateRouteResponseResponse' :: Maybe Text
routeResponseId = forall a. Maybe a
Prelude.Nothing,
      $sel:routeResponseKey:UpdateRouteResponseResponse' :: Maybe Text
routeResponseKey = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateRouteResponseResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Represents the model selection expression of a route response. Supported
-- only for WebSocket APIs.
updateRouteResponseResponse_modelSelectionExpression :: Lens.Lens' UpdateRouteResponseResponse (Prelude.Maybe Prelude.Text)
updateRouteResponseResponse_modelSelectionExpression :: Lens' UpdateRouteResponseResponse (Maybe Text)
updateRouteResponseResponse_modelSelectionExpression = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponseResponse' {Maybe Text
modelSelectionExpression :: Maybe Text
$sel:modelSelectionExpression:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Maybe Text
modelSelectionExpression} -> Maybe Text
modelSelectionExpression) (\s :: UpdateRouteResponseResponse
s@UpdateRouteResponseResponse' {} Maybe Text
a -> UpdateRouteResponseResponse
s {$sel:modelSelectionExpression:UpdateRouteResponseResponse' :: Maybe Text
modelSelectionExpression = Maybe Text
a} :: UpdateRouteResponseResponse)

-- | Represents the response models of a route response.
updateRouteResponseResponse_responseModels :: Lens.Lens' UpdateRouteResponseResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
updateRouteResponseResponse_responseModels :: Lens' UpdateRouteResponseResponse (Maybe (HashMap Text Text))
updateRouteResponseResponse_responseModels = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponseResponse' {Maybe (HashMap Text Text)
responseModels :: Maybe (HashMap Text Text)
$sel:responseModels:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Maybe (HashMap Text Text)
responseModels} -> Maybe (HashMap Text Text)
responseModels) (\s :: UpdateRouteResponseResponse
s@UpdateRouteResponseResponse' {} Maybe (HashMap Text Text)
a -> UpdateRouteResponseResponse
s {$sel:responseModels:UpdateRouteResponseResponse' :: Maybe (HashMap Text Text)
responseModels = Maybe (HashMap Text Text)
a} :: UpdateRouteResponseResponse) 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

-- | Represents the response parameters of a route response.
updateRouteResponseResponse_responseParameters :: Lens.Lens' UpdateRouteResponseResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text ParameterConstraints))
updateRouteResponseResponse_responseParameters :: Lens'
  UpdateRouteResponseResponse
  (Maybe (HashMap Text ParameterConstraints))
updateRouteResponseResponse_responseParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponseResponse' {Maybe (HashMap Text ParameterConstraints)
responseParameters :: Maybe (HashMap Text ParameterConstraints)
$sel:responseParameters:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse
-> Maybe (HashMap Text ParameterConstraints)
responseParameters} -> Maybe (HashMap Text ParameterConstraints)
responseParameters) (\s :: UpdateRouteResponseResponse
s@UpdateRouteResponseResponse' {} Maybe (HashMap Text ParameterConstraints)
a -> UpdateRouteResponseResponse
s {$sel:responseParameters:UpdateRouteResponseResponse' :: Maybe (HashMap Text ParameterConstraints)
responseParameters = Maybe (HashMap Text ParameterConstraints)
a} :: UpdateRouteResponseResponse) 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

-- | Represents the identifier of a route response.
updateRouteResponseResponse_routeResponseId :: Lens.Lens' UpdateRouteResponseResponse (Prelude.Maybe Prelude.Text)
updateRouteResponseResponse_routeResponseId :: Lens' UpdateRouteResponseResponse (Maybe Text)
updateRouteResponseResponse_routeResponseId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponseResponse' {Maybe Text
routeResponseId :: Maybe Text
$sel:routeResponseId:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Maybe Text
routeResponseId} -> Maybe Text
routeResponseId) (\s :: UpdateRouteResponseResponse
s@UpdateRouteResponseResponse' {} Maybe Text
a -> UpdateRouteResponseResponse
s {$sel:routeResponseId:UpdateRouteResponseResponse' :: Maybe Text
routeResponseId = Maybe Text
a} :: UpdateRouteResponseResponse)

-- | Represents the route response key of a route response.
updateRouteResponseResponse_routeResponseKey :: Lens.Lens' UpdateRouteResponseResponse (Prelude.Maybe Prelude.Text)
updateRouteResponseResponse_routeResponseKey :: Lens' UpdateRouteResponseResponse (Maybe Text)
updateRouteResponseResponse_routeResponseKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteResponseResponse' {Maybe Text
routeResponseKey :: Maybe Text
$sel:routeResponseKey:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Maybe Text
routeResponseKey} -> Maybe Text
routeResponseKey) (\s :: UpdateRouteResponseResponse
s@UpdateRouteResponseResponse' {} Maybe Text
a -> UpdateRouteResponseResponse
s {$sel:routeResponseKey:UpdateRouteResponseResponse' :: Maybe Text
routeResponseKey = Maybe Text
a} :: UpdateRouteResponseResponse)

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

instance Prelude.NFData UpdateRouteResponseResponse where
  rnf :: UpdateRouteResponseResponse -> ()
rnf UpdateRouteResponseResponse' {Int
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text ParameterConstraints)
httpStatus :: Int
routeResponseKey :: Maybe Text
routeResponseId :: Maybe Text
responseParameters :: Maybe (HashMap Text ParameterConstraints)
responseModels :: Maybe (HashMap Text Text)
modelSelectionExpression :: Maybe Text
$sel:httpStatus:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Int
$sel:routeResponseKey:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Maybe Text
$sel:routeResponseId:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Maybe Text
$sel:responseParameters:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse
-> Maybe (HashMap Text ParameterConstraints)
$sel:responseModels:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Maybe (HashMap Text Text)
$sel:modelSelectionExpression:UpdateRouteResponseResponse' :: UpdateRouteResponseResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
modelSelectionExpression
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
responseModels
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text ParameterConstraints)
responseParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
routeResponseId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
routeResponseKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus