{-# 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.SNS.CreatePlatformEndpoint
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates an endpoint for a device and mobile app on one of the supported
-- push notification services, such as GCM (Firebase Cloud Messaging) and
-- APNS. @CreatePlatformEndpoint@ requires the @PlatformApplicationArn@
-- that is returned from @CreatePlatformApplication@. You can use the
-- returned @EndpointArn@ to send a message to a mobile app or by the
-- @Subscribe@ action for subscription to a topic. The
-- @CreatePlatformEndpoint@ action is idempotent, so if the requester
-- already owns an endpoint with the same device token and attributes, that
-- endpoint\'s ARN is returned without creating a new endpoint. For more
-- information, see
-- <https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html Using Amazon SNS Mobile Push Notifications>.
--
-- When using @CreatePlatformEndpoint@ with Baidu, two attributes must be
-- provided: ChannelId and UserId. The token field must also contain the
-- ChannelId. For more information, see
-- <https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePushBaiduEndpoint.html Creating an Amazon SNS Endpoint for Baidu>.
module Amazonka.SNS.CreatePlatformEndpoint
  ( -- * Creating a Request
    CreatePlatformEndpoint (..),
    newCreatePlatformEndpoint,

    -- * Request Lenses
    createPlatformEndpoint_customUserData,
    createPlatformEndpoint_attributes,
    createPlatformEndpoint_platformApplicationArn,
    createPlatformEndpoint_token,

    -- * Destructuring the Response
    CreatePlatformEndpointResponse (..),
    newCreatePlatformEndpointResponse,

    -- * Response Lenses
    createPlatformEndpointResponse_endpointArn,
    createPlatformEndpointResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SNS.Types

-- | Input for CreatePlatformEndpoint action.
--
-- /See:/ 'newCreatePlatformEndpoint' smart constructor.
data CreatePlatformEndpoint = CreatePlatformEndpoint'
  { -- | Arbitrary user data to associate with the endpoint. Amazon SNS does not
    -- use this data. The data must be in UTF-8 format and less than 2KB.
    CreatePlatformEndpoint -> Maybe Text
customUserData :: Prelude.Maybe Prelude.Text,
    -- | For a list of attributes, see
    -- <https://docs.aws.amazon.com/sns/latest/api/API_SetEndpointAttributes.html SetEndpointAttributes>.
    CreatePlatformEndpoint -> Maybe (HashMap Text Text)
attributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | PlatformApplicationArn returned from CreatePlatformApplication is used
    -- to create a an endpoint.
    CreatePlatformEndpoint -> Text
platformApplicationArn :: Prelude.Text,
    -- | Unique identifier created by the notification service for an app on a
    -- device. The specific name for Token will vary, depending on which
    -- notification service is being used. For example, when using APNS as the
    -- notification service, you need the device token. Alternatively, when
    -- using GCM (Firebase Cloud Messaging) or ADM, the device token equivalent
    -- is called the registration ID.
    CreatePlatformEndpoint -> Text
token :: Prelude.Text
  }
  deriving (CreatePlatformEndpoint -> CreatePlatformEndpoint -> Bool
(CreatePlatformEndpoint -> CreatePlatformEndpoint -> Bool)
-> (CreatePlatformEndpoint -> CreatePlatformEndpoint -> Bool)
-> Eq CreatePlatformEndpoint
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreatePlatformEndpoint -> CreatePlatformEndpoint -> Bool
$c/= :: CreatePlatformEndpoint -> CreatePlatformEndpoint -> Bool
== :: CreatePlatformEndpoint -> CreatePlatformEndpoint -> Bool
$c== :: CreatePlatformEndpoint -> CreatePlatformEndpoint -> Bool
Prelude.Eq, ReadPrec [CreatePlatformEndpoint]
ReadPrec CreatePlatformEndpoint
Int -> ReadS CreatePlatformEndpoint
ReadS [CreatePlatformEndpoint]
(Int -> ReadS CreatePlatformEndpoint)
-> ReadS [CreatePlatformEndpoint]
-> ReadPrec CreatePlatformEndpoint
-> ReadPrec [CreatePlatformEndpoint]
-> Read CreatePlatformEndpoint
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreatePlatformEndpoint]
$creadListPrec :: ReadPrec [CreatePlatformEndpoint]
readPrec :: ReadPrec CreatePlatformEndpoint
$creadPrec :: ReadPrec CreatePlatformEndpoint
readList :: ReadS [CreatePlatformEndpoint]
$creadList :: ReadS [CreatePlatformEndpoint]
readsPrec :: Int -> ReadS CreatePlatformEndpoint
$creadsPrec :: Int -> ReadS CreatePlatformEndpoint
Prelude.Read, Int -> CreatePlatformEndpoint -> ShowS
[CreatePlatformEndpoint] -> ShowS
CreatePlatformEndpoint -> String
(Int -> CreatePlatformEndpoint -> ShowS)
-> (CreatePlatformEndpoint -> String)
-> ([CreatePlatformEndpoint] -> ShowS)
-> Show CreatePlatformEndpoint
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreatePlatformEndpoint] -> ShowS
$cshowList :: [CreatePlatformEndpoint] -> ShowS
show :: CreatePlatformEndpoint -> String
$cshow :: CreatePlatformEndpoint -> String
showsPrec :: Int -> CreatePlatformEndpoint -> ShowS
$cshowsPrec :: Int -> CreatePlatformEndpoint -> ShowS
Prelude.Show, (forall x. CreatePlatformEndpoint -> Rep CreatePlatformEndpoint x)
-> (forall x.
    Rep CreatePlatformEndpoint x -> CreatePlatformEndpoint)
-> Generic CreatePlatformEndpoint
forall x. Rep CreatePlatformEndpoint x -> CreatePlatformEndpoint
forall x. CreatePlatformEndpoint -> Rep CreatePlatformEndpoint x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreatePlatformEndpoint x -> CreatePlatformEndpoint
$cfrom :: forall x. CreatePlatformEndpoint -> Rep CreatePlatformEndpoint x
Prelude.Generic)

-- |
-- Create a value of 'CreatePlatformEndpoint' 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:
--
-- 'customUserData', 'createPlatformEndpoint_customUserData' - Arbitrary user data to associate with the endpoint. Amazon SNS does not
-- use this data. The data must be in UTF-8 format and less than 2KB.
--
-- 'attributes', 'createPlatformEndpoint_attributes' - For a list of attributes, see
-- <https://docs.aws.amazon.com/sns/latest/api/API_SetEndpointAttributes.html SetEndpointAttributes>.
--
-- 'platformApplicationArn', 'createPlatformEndpoint_platformApplicationArn' - PlatformApplicationArn returned from CreatePlatformApplication is used
-- to create a an endpoint.
--
-- 'token', 'createPlatformEndpoint_token' - Unique identifier created by the notification service for an app on a
-- device. The specific name for Token will vary, depending on which
-- notification service is being used. For example, when using APNS as the
-- notification service, you need the device token. Alternatively, when
-- using GCM (Firebase Cloud Messaging) or ADM, the device token equivalent
-- is called the registration ID.
newCreatePlatformEndpoint ::
  -- | 'platformApplicationArn'
  Prelude.Text ->
  -- | 'token'
  Prelude.Text ->
  CreatePlatformEndpoint
newCreatePlatformEndpoint :: Text -> Text -> CreatePlatformEndpoint
newCreatePlatformEndpoint
  Text
pPlatformApplicationArn_
  Text
pToken_ =
    CreatePlatformEndpoint' :: Maybe Text
-> Maybe (HashMap Text Text)
-> Text
-> Text
-> CreatePlatformEndpoint
CreatePlatformEndpoint'
      { $sel:customUserData:CreatePlatformEndpoint' :: Maybe Text
customUserData =
          Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:attributes:CreatePlatformEndpoint' :: Maybe (HashMap Text Text)
attributes = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
        $sel:platformApplicationArn:CreatePlatformEndpoint' :: Text
platformApplicationArn = Text
pPlatformApplicationArn_,
        $sel:token:CreatePlatformEndpoint' :: Text
token = Text
pToken_
      }

-- | Arbitrary user data to associate with the endpoint. Amazon SNS does not
-- use this data. The data must be in UTF-8 format and less than 2KB.
createPlatformEndpoint_customUserData :: Lens.Lens' CreatePlatformEndpoint (Prelude.Maybe Prelude.Text)
createPlatformEndpoint_customUserData :: (Maybe Text -> f (Maybe Text))
-> CreatePlatformEndpoint -> f CreatePlatformEndpoint
createPlatformEndpoint_customUserData = (CreatePlatformEndpoint -> Maybe Text)
-> (CreatePlatformEndpoint -> Maybe Text -> CreatePlatformEndpoint)
-> Lens
     CreatePlatformEndpoint
     CreatePlatformEndpoint
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePlatformEndpoint' {Maybe Text
customUserData :: Maybe Text
$sel:customUserData:CreatePlatformEndpoint' :: CreatePlatformEndpoint -> Maybe Text
customUserData} -> Maybe Text
customUserData) (\s :: CreatePlatformEndpoint
s@CreatePlatformEndpoint' {} Maybe Text
a -> CreatePlatformEndpoint
s {$sel:customUserData:CreatePlatformEndpoint' :: Maybe Text
customUserData = Maybe Text
a} :: CreatePlatformEndpoint)

-- | For a list of attributes, see
-- <https://docs.aws.amazon.com/sns/latest/api/API_SetEndpointAttributes.html SetEndpointAttributes>.
createPlatformEndpoint_attributes :: Lens.Lens' CreatePlatformEndpoint (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createPlatformEndpoint_attributes :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> CreatePlatformEndpoint -> f CreatePlatformEndpoint
createPlatformEndpoint_attributes = (CreatePlatformEndpoint -> Maybe (HashMap Text Text))
-> (CreatePlatformEndpoint
    -> Maybe (HashMap Text Text) -> CreatePlatformEndpoint)
-> Lens
     CreatePlatformEndpoint
     CreatePlatformEndpoint
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePlatformEndpoint' {Maybe (HashMap Text Text)
attributes :: Maybe (HashMap Text Text)
$sel:attributes:CreatePlatformEndpoint' :: CreatePlatformEndpoint -> Maybe (HashMap Text Text)
attributes} -> Maybe (HashMap Text Text)
attributes) (\s :: CreatePlatformEndpoint
s@CreatePlatformEndpoint' {} Maybe (HashMap Text Text)
a -> CreatePlatformEndpoint
s {$sel:attributes:CreatePlatformEndpoint' :: Maybe (HashMap Text Text)
attributes = Maybe (HashMap Text Text)
a} :: CreatePlatformEndpoint) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> CreatePlatformEndpoint -> f CreatePlatformEndpoint)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> CreatePlatformEndpoint
-> f CreatePlatformEndpoint
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | PlatformApplicationArn returned from CreatePlatformApplication is used
-- to create a an endpoint.
createPlatformEndpoint_platformApplicationArn :: Lens.Lens' CreatePlatformEndpoint Prelude.Text
createPlatformEndpoint_platformApplicationArn :: (Text -> f Text)
-> CreatePlatformEndpoint -> f CreatePlatformEndpoint
createPlatformEndpoint_platformApplicationArn = (CreatePlatformEndpoint -> Text)
-> (CreatePlatformEndpoint -> Text -> CreatePlatformEndpoint)
-> Lens CreatePlatformEndpoint CreatePlatformEndpoint Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePlatformEndpoint' {Text
platformApplicationArn :: Text
$sel:platformApplicationArn:CreatePlatformEndpoint' :: CreatePlatformEndpoint -> Text
platformApplicationArn} -> Text
platformApplicationArn) (\s :: CreatePlatformEndpoint
s@CreatePlatformEndpoint' {} Text
a -> CreatePlatformEndpoint
s {$sel:platformApplicationArn:CreatePlatformEndpoint' :: Text
platformApplicationArn = Text
a} :: CreatePlatformEndpoint)

-- | Unique identifier created by the notification service for an app on a
-- device. The specific name for Token will vary, depending on which
-- notification service is being used. For example, when using APNS as the
-- notification service, you need the device token. Alternatively, when
-- using GCM (Firebase Cloud Messaging) or ADM, the device token equivalent
-- is called the registration ID.
createPlatformEndpoint_token :: Lens.Lens' CreatePlatformEndpoint Prelude.Text
createPlatformEndpoint_token :: (Text -> f Text)
-> CreatePlatformEndpoint -> f CreatePlatformEndpoint
createPlatformEndpoint_token = (CreatePlatformEndpoint -> Text)
-> (CreatePlatformEndpoint -> Text -> CreatePlatformEndpoint)
-> Lens CreatePlatformEndpoint CreatePlatformEndpoint Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePlatformEndpoint' {Text
token :: Text
$sel:token:CreatePlatformEndpoint' :: CreatePlatformEndpoint -> Text
token} -> Text
token) (\s :: CreatePlatformEndpoint
s@CreatePlatformEndpoint' {} Text
a -> CreatePlatformEndpoint
s {$sel:token:CreatePlatformEndpoint' :: Text
token = Text
a} :: CreatePlatformEndpoint)

instance Core.AWSRequest CreatePlatformEndpoint where
  type
    AWSResponse CreatePlatformEndpoint =
      CreatePlatformEndpointResponse
  request :: CreatePlatformEndpoint -> Request CreatePlatformEndpoint
request = Service -> CreatePlatformEndpoint -> Request CreatePlatformEndpoint
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery Service
defaultService
  response :: Logger
-> Service
-> Proxy CreatePlatformEndpoint
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreatePlatformEndpoint)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse CreatePlatformEndpoint))
-> Logger
-> Service
-> Proxy CreatePlatformEndpoint
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreatePlatformEndpoint)))
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"CreatePlatformEndpointResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text -> Int -> CreatePlatformEndpointResponse
CreatePlatformEndpointResponse'
            (Maybe Text -> Int -> CreatePlatformEndpointResponse)
-> Either String (Maybe Text)
-> Either String (Int -> CreatePlatformEndpointResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"EndpointArn")
            Either String (Int -> CreatePlatformEndpointResponse)
-> Either String Int
-> Either String CreatePlatformEndpointResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreatePlatformEndpoint

instance Prelude.NFData CreatePlatformEndpoint

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

instance Core.ToPath CreatePlatformEndpoint where
  toPath :: CreatePlatformEndpoint -> ByteString
toPath = ByteString -> CreatePlatformEndpoint -> ByteString
forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Core.ToQuery CreatePlatformEndpoint where
  toQuery :: CreatePlatformEndpoint -> QueryString
toQuery CreatePlatformEndpoint' {Maybe Text
Maybe (HashMap Text Text)
Text
token :: Text
platformApplicationArn :: Text
attributes :: Maybe (HashMap Text Text)
customUserData :: Maybe Text
$sel:token:CreatePlatformEndpoint' :: CreatePlatformEndpoint -> Text
$sel:platformApplicationArn:CreatePlatformEndpoint' :: CreatePlatformEndpoint -> Text
$sel:attributes:CreatePlatformEndpoint' :: CreatePlatformEndpoint -> Maybe (HashMap Text Text)
$sel:customUserData:CreatePlatformEndpoint' :: CreatePlatformEndpoint -> Maybe Text
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"CreatePlatformEndpoint" :: Prelude.ByteString),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"2010-03-31" :: Prelude.ByteString),
        ByteString
"CustomUserData" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
customUserData,
        ByteString
"Attributes"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
            ( ByteString
-> ByteString -> ByteString -> HashMap Text Text -> QueryString
forall k v.
(ToQuery k, ToQuery v) =>
ByteString
-> ByteString -> ByteString -> HashMap k v -> QueryString
Core.toQueryMap ByteString
"entry" ByteString
"key" ByteString
"value"
                (HashMap Text Text -> QueryString)
-> Maybe (HashMap Text Text) -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
attributes
            ),
        ByteString
"PlatformApplicationArn"
          ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Text
platformApplicationArn,
        ByteString
"Token" ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Text
token
      ]

-- | Response from CreateEndpoint action.
--
-- /See:/ 'newCreatePlatformEndpointResponse' smart constructor.
data CreatePlatformEndpointResponse = CreatePlatformEndpointResponse'
  { -- | EndpointArn returned from CreateEndpoint action.
    CreatePlatformEndpointResponse -> Maybe Text
endpointArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreatePlatformEndpointResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreatePlatformEndpointResponse
-> CreatePlatformEndpointResponse -> Bool
(CreatePlatformEndpointResponse
 -> CreatePlatformEndpointResponse -> Bool)
-> (CreatePlatformEndpointResponse
    -> CreatePlatformEndpointResponse -> Bool)
-> Eq CreatePlatformEndpointResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreatePlatformEndpointResponse
-> CreatePlatformEndpointResponse -> Bool
$c/= :: CreatePlatformEndpointResponse
-> CreatePlatformEndpointResponse -> Bool
== :: CreatePlatformEndpointResponse
-> CreatePlatformEndpointResponse -> Bool
$c== :: CreatePlatformEndpointResponse
-> CreatePlatformEndpointResponse -> Bool
Prelude.Eq, ReadPrec [CreatePlatformEndpointResponse]
ReadPrec CreatePlatformEndpointResponse
Int -> ReadS CreatePlatformEndpointResponse
ReadS [CreatePlatformEndpointResponse]
(Int -> ReadS CreatePlatformEndpointResponse)
-> ReadS [CreatePlatformEndpointResponse]
-> ReadPrec CreatePlatformEndpointResponse
-> ReadPrec [CreatePlatformEndpointResponse]
-> Read CreatePlatformEndpointResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreatePlatformEndpointResponse]
$creadListPrec :: ReadPrec [CreatePlatformEndpointResponse]
readPrec :: ReadPrec CreatePlatformEndpointResponse
$creadPrec :: ReadPrec CreatePlatformEndpointResponse
readList :: ReadS [CreatePlatformEndpointResponse]
$creadList :: ReadS [CreatePlatformEndpointResponse]
readsPrec :: Int -> ReadS CreatePlatformEndpointResponse
$creadsPrec :: Int -> ReadS CreatePlatformEndpointResponse
Prelude.Read, Int -> CreatePlatformEndpointResponse -> ShowS
[CreatePlatformEndpointResponse] -> ShowS
CreatePlatformEndpointResponse -> String
(Int -> CreatePlatformEndpointResponse -> ShowS)
-> (CreatePlatformEndpointResponse -> String)
-> ([CreatePlatformEndpointResponse] -> ShowS)
-> Show CreatePlatformEndpointResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreatePlatformEndpointResponse] -> ShowS
$cshowList :: [CreatePlatformEndpointResponse] -> ShowS
show :: CreatePlatformEndpointResponse -> String
$cshow :: CreatePlatformEndpointResponse -> String
showsPrec :: Int -> CreatePlatformEndpointResponse -> ShowS
$cshowsPrec :: Int -> CreatePlatformEndpointResponse -> ShowS
Prelude.Show, (forall x.
 CreatePlatformEndpointResponse
 -> Rep CreatePlatformEndpointResponse x)
-> (forall x.
    Rep CreatePlatformEndpointResponse x
    -> CreatePlatformEndpointResponse)
-> Generic CreatePlatformEndpointResponse
forall x.
Rep CreatePlatformEndpointResponse x
-> CreatePlatformEndpointResponse
forall x.
CreatePlatformEndpointResponse
-> Rep CreatePlatformEndpointResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreatePlatformEndpointResponse x
-> CreatePlatformEndpointResponse
$cfrom :: forall x.
CreatePlatformEndpointResponse
-> Rep CreatePlatformEndpointResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreatePlatformEndpointResponse' 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:
--
-- 'endpointArn', 'createPlatformEndpointResponse_endpointArn' - EndpointArn returned from CreateEndpoint action.
--
-- 'httpStatus', 'createPlatformEndpointResponse_httpStatus' - The response's http status code.
newCreatePlatformEndpointResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreatePlatformEndpointResponse
newCreatePlatformEndpointResponse :: Int -> CreatePlatformEndpointResponse
newCreatePlatformEndpointResponse Int
pHttpStatus_ =
  CreatePlatformEndpointResponse' :: Maybe Text -> Int -> CreatePlatformEndpointResponse
CreatePlatformEndpointResponse'
    { $sel:endpointArn:CreatePlatformEndpointResponse' :: Maybe Text
endpointArn =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreatePlatformEndpointResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | EndpointArn returned from CreateEndpoint action.
createPlatformEndpointResponse_endpointArn :: Lens.Lens' CreatePlatformEndpointResponse (Prelude.Maybe Prelude.Text)
createPlatformEndpointResponse_endpointArn :: (Maybe Text -> f (Maybe Text))
-> CreatePlatformEndpointResponse
-> f CreatePlatformEndpointResponse
createPlatformEndpointResponse_endpointArn = (CreatePlatformEndpointResponse -> Maybe Text)
-> (CreatePlatformEndpointResponse
    -> Maybe Text -> CreatePlatformEndpointResponse)
-> Lens
     CreatePlatformEndpointResponse
     CreatePlatformEndpointResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreatePlatformEndpointResponse' {Maybe Text
endpointArn :: Maybe Text
$sel:endpointArn:CreatePlatformEndpointResponse' :: CreatePlatformEndpointResponse -> Maybe Text
endpointArn} -> Maybe Text
endpointArn) (\s :: CreatePlatformEndpointResponse
s@CreatePlatformEndpointResponse' {} Maybe Text
a -> CreatePlatformEndpointResponse
s {$sel:endpointArn:CreatePlatformEndpointResponse' :: Maybe Text
endpointArn = Maybe Text
a} :: CreatePlatformEndpointResponse)

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

instance
  Prelude.NFData
    CreatePlatformEndpointResponse