{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.CloudWatchEvents.Types.Endpoint
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CloudWatchEvents.Types.Endpoint where

import Amazonka.CloudWatchEvents.Types.EndpointEventBus
import Amazonka.CloudWatchEvents.Types.EndpointState
import Amazonka.CloudWatchEvents.Types.ReplicationConfig
import Amazonka.CloudWatchEvents.Types.RoutingConfig
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

-- | An global endpoint used to improve your application\'s availability by
-- making it regional-fault tolerant. For more information about global
-- endpoints, see
-- <https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-global-endpoints.html Making applications Regional-fault tolerant with global endpoints and event replication>
-- in the Amazon EventBridge User Guide..
--
-- /See:/ 'newEndpoint' smart constructor.
data Endpoint = Endpoint'
  { -- | The ARN of the endpoint.
    Endpoint -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The time the endpoint was created.
    Endpoint -> Maybe POSIX
creationTime :: Prelude.Maybe Data.POSIX,
    -- | A description for the endpoint.
    Endpoint -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The URL subdomain of the endpoint. For example, if the URL for Endpoint
    -- is abcde.veo.endpoints.event.amazonaws.com, then the EndpointId is
    -- @abcde.veo@.
    Endpoint -> Maybe Text
endpointId :: Prelude.Maybe Prelude.Text,
    -- | The URL of the endpoint.
    Endpoint -> Maybe Text
endpointUrl :: Prelude.Maybe Prelude.Text,
    -- | The event buses being used by the endpoint.
    Endpoint -> Maybe (NonEmpty EndpointEventBus)
eventBuses :: Prelude.Maybe (Prelude.NonEmpty EndpointEventBus),
    -- | The last time the endpoint was modified.
    Endpoint -> Maybe POSIX
lastModifiedTime :: Prelude.Maybe Data.POSIX,
    -- | The name of the endpoint.
    Endpoint -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | Whether event replication was enabled or disabled for this endpoint.
    Endpoint -> Maybe ReplicationConfig
replicationConfig :: Prelude.Maybe ReplicationConfig,
    -- | The ARN of the role used by event replication for the endpoint.
    Endpoint -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The routing configuration of the endpoint.
    Endpoint -> Maybe RoutingConfig
routingConfig :: Prelude.Maybe RoutingConfig,
    -- | The current state of the endpoint.
    Endpoint -> Maybe EndpointState
state :: Prelude.Maybe EndpointState,
    -- | The reason the endpoint is in its current state.
    Endpoint -> Maybe Text
stateReason :: Prelude.Maybe Prelude.Text
  }
  deriving (Endpoint -> Endpoint -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Endpoint -> Endpoint -> Bool
$c/= :: Endpoint -> Endpoint -> Bool
== :: Endpoint -> Endpoint -> Bool
$c== :: Endpoint -> Endpoint -> Bool
Prelude.Eq, ReadPrec [Endpoint]
ReadPrec Endpoint
Int -> ReadS Endpoint
ReadS [Endpoint]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Endpoint]
$creadListPrec :: ReadPrec [Endpoint]
readPrec :: ReadPrec Endpoint
$creadPrec :: ReadPrec Endpoint
readList :: ReadS [Endpoint]
$creadList :: ReadS [Endpoint]
readsPrec :: Int -> ReadS Endpoint
$creadsPrec :: Int -> ReadS Endpoint
Prelude.Read, Int -> Endpoint -> ShowS
[Endpoint] -> ShowS
Endpoint -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Endpoint] -> ShowS
$cshowList :: [Endpoint] -> ShowS
show :: Endpoint -> String
$cshow :: Endpoint -> String
showsPrec :: Int -> Endpoint -> ShowS
$cshowsPrec :: Int -> Endpoint -> ShowS
Prelude.Show, forall x. Rep Endpoint x -> Endpoint
forall x. Endpoint -> Rep Endpoint x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Endpoint x -> Endpoint
$cfrom :: forall x. Endpoint -> Rep Endpoint x
Prelude.Generic)

-- |
-- Create a value of 'Endpoint' 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', 'endpoint_arn' - The ARN of the endpoint.
--
-- 'creationTime', 'endpoint_creationTime' - The time the endpoint was created.
--
-- 'description', 'endpoint_description' - A description for the endpoint.
--
-- 'endpointId', 'endpoint_endpointId' - The URL subdomain of the endpoint. For example, if the URL for Endpoint
-- is abcde.veo.endpoints.event.amazonaws.com, then the EndpointId is
-- @abcde.veo@.
--
-- 'endpointUrl', 'endpoint_endpointUrl' - The URL of the endpoint.
--
-- 'eventBuses', 'endpoint_eventBuses' - The event buses being used by the endpoint.
--
-- 'lastModifiedTime', 'endpoint_lastModifiedTime' - The last time the endpoint was modified.
--
-- 'name', 'endpoint_name' - The name of the endpoint.
--
-- 'replicationConfig', 'endpoint_replicationConfig' - Whether event replication was enabled or disabled for this endpoint.
--
-- 'roleArn', 'endpoint_roleArn' - The ARN of the role used by event replication for the endpoint.
--
-- 'routingConfig', 'endpoint_routingConfig' - The routing configuration of the endpoint.
--
-- 'state', 'endpoint_state' - The current state of the endpoint.
--
-- 'stateReason', 'endpoint_stateReason' - The reason the endpoint is in its current state.
newEndpoint ::
  Endpoint
newEndpoint :: Endpoint
newEndpoint =
  Endpoint'
    { $sel:arn:Endpoint' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:creationTime:Endpoint' :: Maybe POSIX
creationTime = forall a. Maybe a
Prelude.Nothing,
      $sel:description:Endpoint' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:endpointId:Endpoint' :: Maybe Text
endpointId = forall a. Maybe a
Prelude.Nothing,
      $sel:endpointUrl:Endpoint' :: Maybe Text
endpointUrl = forall a. Maybe a
Prelude.Nothing,
      $sel:eventBuses:Endpoint' :: Maybe (NonEmpty EndpointEventBus)
eventBuses = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedTime:Endpoint' :: Maybe POSIX
lastModifiedTime = forall a. Maybe a
Prelude.Nothing,
      $sel:name:Endpoint' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationConfig:Endpoint' :: Maybe ReplicationConfig
replicationConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:Endpoint' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:routingConfig:Endpoint' :: Maybe RoutingConfig
routingConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:state:Endpoint' :: Maybe EndpointState
state = forall a. Maybe a
Prelude.Nothing,
      $sel:stateReason:Endpoint' :: Maybe Text
stateReason = forall a. Maybe a
Prelude.Nothing
    }

-- | The ARN of the endpoint.
endpoint_arn :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_arn :: Lens' Endpoint (Maybe Text)
endpoint_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
arn :: Maybe Text
$sel:arn:Endpoint' :: Endpoint -> Maybe Text
arn} -> Maybe Text
arn) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:arn:Endpoint' :: Maybe Text
arn = Maybe Text
a} :: Endpoint)

-- | The time the endpoint was created.
endpoint_creationTime :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.UTCTime)
endpoint_creationTime :: Lens' Endpoint (Maybe UTCTime)
endpoint_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:Endpoint' :: Endpoint -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: Endpoint
s@Endpoint' {} Maybe POSIX
a -> Endpoint
s {$sel:creationTime:Endpoint' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: Endpoint) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A description for the endpoint.
endpoint_description :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_description :: Lens' Endpoint (Maybe Text)
endpoint_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
description :: Maybe Text
$sel:description:Endpoint' :: Endpoint -> Maybe Text
description} -> Maybe Text
description) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:description:Endpoint' :: Maybe Text
description = Maybe Text
a} :: Endpoint)

-- | The URL subdomain of the endpoint. For example, if the URL for Endpoint
-- is abcde.veo.endpoints.event.amazonaws.com, then the EndpointId is
-- @abcde.veo@.
endpoint_endpointId :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_endpointId :: Lens' Endpoint (Maybe Text)
endpoint_endpointId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
endpointId :: Maybe Text
$sel:endpointId:Endpoint' :: Endpoint -> Maybe Text
endpointId} -> Maybe Text
endpointId) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:endpointId:Endpoint' :: Maybe Text
endpointId = Maybe Text
a} :: Endpoint)

-- | The URL of the endpoint.
endpoint_endpointUrl :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_endpointUrl :: Lens' Endpoint (Maybe Text)
endpoint_endpointUrl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
endpointUrl :: Maybe Text
$sel:endpointUrl:Endpoint' :: Endpoint -> Maybe Text
endpointUrl} -> Maybe Text
endpointUrl) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:endpointUrl:Endpoint' :: Maybe Text
endpointUrl = Maybe Text
a} :: Endpoint)

-- | The event buses being used by the endpoint.
endpoint_eventBuses :: Lens.Lens' Endpoint (Prelude.Maybe (Prelude.NonEmpty EndpointEventBus))
endpoint_eventBuses :: Lens' Endpoint (Maybe (NonEmpty EndpointEventBus))
endpoint_eventBuses = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe (NonEmpty EndpointEventBus)
eventBuses :: Maybe (NonEmpty EndpointEventBus)
$sel:eventBuses:Endpoint' :: Endpoint -> Maybe (NonEmpty EndpointEventBus)
eventBuses} -> Maybe (NonEmpty EndpointEventBus)
eventBuses) (\s :: Endpoint
s@Endpoint' {} Maybe (NonEmpty EndpointEventBus)
a -> Endpoint
s {$sel:eventBuses:Endpoint' :: Maybe (NonEmpty EndpointEventBus)
eventBuses = Maybe (NonEmpty EndpointEventBus)
a} :: Endpoint) 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 last time the endpoint was modified.
endpoint_lastModifiedTime :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.UTCTime)
endpoint_lastModifiedTime :: Lens' Endpoint (Maybe UTCTime)
endpoint_lastModifiedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe POSIX
lastModifiedTime :: Maybe POSIX
$sel:lastModifiedTime:Endpoint' :: Endpoint -> Maybe POSIX
lastModifiedTime} -> Maybe POSIX
lastModifiedTime) (\s :: Endpoint
s@Endpoint' {} Maybe POSIX
a -> Endpoint
s {$sel:lastModifiedTime:Endpoint' :: Maybe POSIX
lastModifiedTime = Maybe POSIX
a} :: Endpoint) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

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

-- | Whether event replication was enabled or disabled for this endpoint.
endpoint_replicationConfig :: Lens.Lens' Endpoint (Prelude.Maybe ReplicationConfig)
endpoint_replicationConfig :: Lens' Endpoint (Maybe ReplicationConfig)
endpoint_replicationConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe ReplicationConfig
replicationConfig :: Maybe ReplicationConfig
$sel:replicationConfig:Endpoint' :: Endpoint -> Maybe ReplicationConfig
replicationConfig} -> Maybe ReplicationConfig
replicationConfig) (\s :: Endpoint
s@Endpoint' {} Maybe ReplicationConfig
a -> Endpoint
s {$sel:replicationConfig:Endpoint' :: Maybe ReplicationConfig
replicationConfig = Maybe ReplicationConfig
a} :: Endpoint)

-- | The ARN of the role used by event replication for the endpoint.
endpoint_roleArn :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_roleArn :: Lens' Endpoint (Maybe Text)
endpoint_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:Endpoint' :: Endpoint -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:roleArn:Endpoint' :: Maybe Text
roleArn = Maybe Text
a} :: Endpoint)

-- | The routing configuration of the endpoint.
endpoint_routingConfig :: Lens.Lens' Endpoint (Prelude.Maybe RoutingConfig)
endpoint_routingConfig :: Lens' Endpoint (Maybe RoutingConfig)
endpoint_routingConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe RoutingConfig
routingConfig :: Maybe RoutingConfig
$sel:routingConfig:Endpoint' :: Endpoint -> Maybe RoutingConfig
routingConfig} -> Maybe RoutingConfig
routingConfig) (\s :: Endpoint
s@Endpoint' {} Maybe RoutingConfig
a -> Endpoint
s {$sel:routingConfig:Endpoint' :: Maybe RoutingConfig
routingConfig = Maybe RoutingConfig
a} :: Endpoint)

-- | The current state of the endpoint.
endpoint_state :: Lens.Lens' Endpoint (Prelude.Maybe EndpointState)
endpoint_state :: Lens' Endpoint (Maybe EndpointState)
endpoint_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe EndpointState
state :: Maybe EndpointState
$sel:state:Endpoint' :: Endpoint -> Maybe EndpointState
state} -> Maybe EndpointState
state) (\s :: Endpoint
s@Endpoint' {} Maybe EndpointState
a -> Endpoint
s {$sel:state:Endpoint' :: Maybe EndpointState
state = Maybe EndpointState
a} :: Endpoint)

-- | The reason the endpoint is in its current state.
endpoint_stateReason :: Lens.Lens' Endpoint (Prelude.Maybe Prelude.Text)
endpoint_stateReason :: Lens' Endpoint (Maybe Text)
endpoint_stateReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Endpoint' {Maybe Text
stateReason :: Maybe Text
$sel:stateReason:Endpoint' :: Endpoint -> Maybe Text
stateReason} -> Maybe Text
stateReason) (\s :: Endpoint
s@Endpoint' {} Maybe Text
a -> Endpoint
s {$sel:stateReason:Endpoint' :: Maybe Text
stateReason = Maybe Text
a} :: Endpoint)

instance Data.FromJSON Endpoint where
  parseJSON :: Value -> Parser Endpoint
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Endpoint"
      ( \Object
x ->
          Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe (NonEmpty EndpointEventBus)
-> Maybe POSIX
-> Maybe Text
-> Maybe ReplicationConfig
-> Maybe Text
-> Maybe RoutingConfig
-> Maybe EndpointState
-> Maybe Text
-> Endpoint
Endpoint'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (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 -> Parser (Maybe a)
Data..:? Key
"CreationTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Description")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EndpointId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EndpointUrl")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EventBuses")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastModifiedTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe 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 -> Parser (Maybe a)
Data..:? Key
"ReplicationConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RoleArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RoutingConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"State")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"StateReason")
      )

instance Prelude.Hashable Endpoint where
  hashWithSalt :: Int -> Endpoint -> Int
hashWithSalt Int
_salt Endpoint' {Maybe (NonEmpty EndpointEventBus)
Maybe Text
Maybe POSIX
Maybe EndpointState
Maybe ReplicationConfig
Maybe RoutingConfig
stateReason :: Maybe Text
state :: Maybe EndpointState
routingConfig :: Maybe RoutingConfig
roleArn :: Maybe Text
replicationConfig :: Maybe ReplicationConfig
name :: Maybe Text
lastModifiedTime :: Maybe POSIX
eventBuses :: Maybe (NonEmpty EndpointEventBus)
endpointUrl :: Maybe Text
endpointId :: Maybe Text
description :: Maybe Text
creationTime :: Maybe POSIX
arn :: Maybe Text
$sel:stateReason:Endpoint' :: Endpoint -> Maybe Text
$sel:state:Endpoint' :: Endpoint -> Maybe EndpointState
$sel:routingConfig:Endpoint' :: Endpoint -> Maybe RoutingConfig
$sel:roleArn:Endpoint' :: Endpoint -> Maybe Text
$sel:replicationConfig:Endpoint' :: Endpoint -> Maybe ReplicationConfig
$sel:name:Endpoint' :: Endpoint -> Maybe Text
$sel:lastModifiedTime:Endpoint' :: Endpoint -> Maybe POSIX
$sel:eventBuses:Endpoint' :: Endpoint -> Maybe (NonEmpty EndpointEventBus)
$sel:endpointUrl:Endpoint' :: Endpoint -> Maybe Text
$sel:endpointId:Endpoint' :: Endpoint -> Maybe Text
$sel:description:Endpoint' :: Endpoint -> Maybe Text
$sel:creationTime:Endpoint' :: Endpoint -> Maybe POSIX
$sel:arn:Endpoint' :: Endpoint -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
endpointId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
endpointUrl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty EndpointEventBus)
eventBuses
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastModifiedTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReplicationConfig
replicationConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
roleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RoutingConfig
routingConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EndpointState
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
stateReason

instance Prelude.NFData Endpoint where
  rnf :: Endpoint -> ()
rnf Endpoint' {Maybe (NonEmpty EndpointEventBus)
Maybe Text
Maybe POSIX
Maybe EndpointState
Maybe ReplicationConfig
Maybe RoutingConfig
stateReason :: Maybe Text
state :: Maybe EndpointState
routingConfig :: Maybe RoutingConfig
roleArn :: Maybe Text
replicationConfig :: Maybe ReplicationConfig
name :: Maybe Text
lastModifiedTime :: Maybe POSIX
eventBuses :: Maybe (NonEmpty EndpointEventBus)
endpointUrl :: Maybe Text
endpointId :: Maybe Text
description :: Maybe Text
creationTime :: Maybe POSIX
arn :: Maybe Text
$sel:stateReason:Endpoint' :: Endpoint -> Maybe Text
$sel:state:Endpoint' :: Endpoint -> Maybe EndpointState
$sel:routingConfig:Endpoint' :: Endpoint -> Maybe RoutingConfig
$sel:roleArn:Endpoint' :: Endpoint -> Maybe Text
$sel:replicationConfig:Endpoint' :: Endpoint -> Maybe ReplicationConfig
$sel:name:Endpoint' :: Endpoint -> Maybe Text
$sel:lastModifiedTime:Endpoint' :: Endpoint -> Maybe POSIX
$sel:eventBuses:Endpoint' :: Endpoint -> Maybe (NonEmpty EndpointEventBus)
$sel:endpointUrl:Endpoint' :: Endpoint -> Maybe Text
$sel:endpointId:Endpoint' :: Endpoint -> Maybe Text
$sel:description:Endpoint' :: Endpoint -> Maybe Text
$sel:creationTime:Endpoint' :: Endpoint -> Maybe POSIX
$sel:arn:Endpoint' :: Endpoint -> 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 POSIX
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
endpointId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
endpointUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty EndpointEventBus)
eventBuses
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastModifiedTime
      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 ReplicationConfig
replicationConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RoutingConfig
routingConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EndpointState
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
stateReason