{-# 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.IoTSiteWise.ListAssetRelationships
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves a paginated list of asset relationships for an asset. You can
-- use this operation to identify an asset\'s root asset and all associated
-- assets between that asset and its root.
--
-- This operation returns paginated results.
module Amazonka.IoTSiteWise.ListAssetRelationships
  ( -- * Creating a Request
    ListAssetRelationships (..),
    newListAssetRelationships,

    -- * Request Lenses
    listAssetRelationships_maxResults,
    listAssetRelationships_nextToken,
    listAssetRelationships_assetId,
    listAssetRelationships_traversalType,

    -- * Destructuring the Response
    ListAssetRelationshipsResponse (..),
    newListAssetRelationshipsResponse,

    -- * Response Lenses
    listAssetRelationshipsResponse_nextToken,
    listAssetRelationshipsResponse_httpStatus,
    listAssetRelationshipsResponse_assetRelationshipSummaries,
  )
where

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

-- | /See:/ 'newListAssetRelationships' smart constructor.
data ListAssetRelationships = ListAssetRelationships'
  { -- | The maximum number of results to return for each paginated request.
    ListAssetRelationships -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token to be used for the next set of paginated results.
    ListAssetRelationships -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The ID of the asset.
    ListAssetRelationships -> Text
assetId :: Prelude.Text,
    -- | The type of traversal to use to identify asset relationships. Choose the
    -- following option:
    --
    -- -   @PATH_TO_ROOT@ – Identify the asset\'s parent assets up to the root
    --     asset. The asset that you specify in @assetId@ is the first result
    --     in the list of @assetRelationshipSummaries@, and the root asset is
    --     the last result.
    ListAssetRelationships -> TraversalType
traversalType :: TraversalType
  }
  deriving (ListAssetRelationships -> ListAssetRelationships -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListAssetRelationships -> ListAssetRelationships -> Bool
$c/= :: ListAssetRelationships -> ListAssetRelationships -> Bool
== :: ListAssetRelationships -> ListAssetRelationships -> Bool
$c== :: ListAssetRelationships -> ListAssetRelationships -> Bool
Prelude.Eq, ReadPrec [ListAssetRelationships]
ReadPrec ListAssetRelationships
Int -> ReadS ListAssetRelationships
ReadS [ListAssetRelationships]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListAssetRelationships]
$creadListPrec :: ReadPrec [ListAssetRelationships]
readPrec :: ReadPrec ListAssetRelationships
$creadPrec :: ReadPrec ListAssetRelationships
readList :: ReadS [ListAssetRelationships]
$creadList :: ReadS [ListAssetRelationships]
readsPrec :: Int -> ReadS ListAssetRelationships
$creadsPrec :: Int -> ReadS ListAssetRelationships
Prelude.Read, Int -> ListAssetRelationships -> ShowS
[ListAssetRelationships] -> ShowS
ListAssetRelationships -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListAssetRelationships] -> ShowS
$cshowList :: [ListAssetRelationships] -> ShowS
show :: ListAssetRelationships -> String
$cshow :: ListAssetRelationships -> String
showsPrec :: Int -> ListAssetRelationships -> ShowS
$cshowsPrec :: Int -> ListAssetRelationships -> ShowS
Prelude.Show, forall x. Rep ListAssetRelationships x -> ListAssetRelationships
forall x. ListAssetRelationships -> Rep ListAssetRelationships x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ListAssetRelationships x -> ListAssetRelationships
$cfrom :: forall x. ListAssetRelationships -> Rep ListAssetRelationships x
Prelude.Generic)

-- |
-- Create a value of 'ListAssetRelationships' 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:
--
-- 'maxResults', 'listAssetRelationships_maxResults' - The maximum number of results to return for each paginated request.
--
-- 'nextToken', 'listAssetRelationships_nextToken' - The token to be used for the next set of paginated results.
--
-- 'assetId', 'listAssetRelationships_assetId' - The ID of the asset.
--
-- 'traversalType', 'listAssetRelationships_traversalType' - The type of traversal to use to identify asset relationships. Choose the
-- following option:
--
-- -   @PATH_TO_ROOT@ – Identify the asset\'s parent assets up to the root
--     asset. The asset that you specify in @assetId@ is the first result
--     in the list of @assetRelationshipSummaries@, and the root asset is
--     the last result.
newListAssetRelationships ::
  -- | 'assetId'
  Prelude.Text ->
  -- | 'traversalType'
  TraversalType ->
  ListAssetRelationships
newListAssetRelationships :: Text -> TraversalType -> ListAssetRelationships
newListAssetRelationships Text
pAssetId_ TraversalType
pTraversalType_ =
  ListAssetRelationships'
    { $sel:maxResults:ListAssetRelationships' :: Maybe Natural
maxResults =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListAssetRelationships' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:assetId:ListAssetRelationships' :: Text
assetId = Text
pAssetId_,
      $sel:traversalType:ListAssetRelationships' :: TraversalType
traversalType = TraversalType
pTraversalType_
    }

-- | The maximum number of results to return for each paginated request.
listAssetRelationships_maxResults :: Lens.Lens' ListAssetRelationships (Prelude.Maybe Prelude.Natural)
listAssetRelationships_maxResults :: Lens' ListAssetRelationships (Maybe Natural)
listAssetRelationships_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssetRelationships' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:ListAssetRelationships' :: ListAssetRelationships -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: ListAssetRelationships
s@ListAssetRelationships' {} Maybe Natural
a -> ListAssetRelationships
s {$sel:maxResults:ListAssetRelationships' :: Maybe Natural
maxResults = Maybe Natural
a} :: ListAssetRelationships)

-- | The token to be used for the next set of paginated results.
listAssetRelationships_nextToken :: Lens.Lens' ListAssetRelationships (Prelude.Maybe Prelude.Text)
listAssetRelationships_nextToken :: Lens' ListAssetRelationships (Maybe Text)
listAssetRelationships_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssetRelationships' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListAssetRelationships' :: ListAssetRelationships -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListAssetRelationships
s@ListAssetRelationships' {} Maybe Text
a -> ListAssetRelationships
s {$sel:nextToken:ListAssetRelationships' :: Maybe Text
nextToken = Maybe Text
a} :: ListAssetRelationships)

-- | The ID of the asset.
listAssetRelationships_assetId :: Lens.Lens' ListAssetRelationships Prelude.Text
listAssetRelationships_assetId :: Lens' ListAssetRelationships Text
listAssetRelationships_assetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssetRelationships' {Text
assetId :: Text
$sel:assetId:ListAssetRelationships' :: ListAssetRelationships -> Text
assetId} -> Text
assetId) (\s :: ListAssetRelationships
s@ListAssetRelationships' {} Text
a -> ListAssetRelationships
s {$sel:assetId:ListAssetRelationships' :: Text
assetId = Text
a} :: ListAssetRelationships)

-- | The type of traversal to use to identify asset relationships. Choose the
-- following option:
--
-- -   @PATH_TO_ROOT@ – Identify the asset\'s parent assets up to the root
--     asset. The asset that you specify in @assetId@ is the first result
--     in the list of @assetRelationshipSummaries@, and the root asset is
--     the last result.
listAssetRelationships_traversalType :: Lens.Lens' ListAssetRelationships TraversalType
listAssetRelationships_traversalType :: Lens' ListAssetRelationships TraversalType
listAssetRelationships_traversalType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssetRelationships' {TraversalType
traversalType :: TraversalType
$sel:traversalType:ListAssetRelationships' :: ListAssetRelationships -> TraversalType
traversalType} -> TraversalType
traversalType) (\s :: ListAssetRelationships
s@ListAssetRelationships' {} TraversalType
a -> ListAssetRelationships
s {$sel:traversalType:ListAssetRelationships' :: TraversalType
traversalType = TraversalType
a} :: ListAssetRelationships)

instance Core.AWSPager ListAssetRelationships where
  page :: ListAssetRelationships
-> AWSResponse ListAssetRelationships
-> Maybe ListAssetRelationships
page ListAssetRelationships
rq AWSResponse ListAssetRelationships
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListAssetRelationships
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListAssetRelationshipsResponse (Maybe Text)
listAssetRelationshipsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListAssetRelationships
rs
            forall s a. s -> Getting a s a -> a
Lens.^. Lens' ListAssetRelationshipsResponse [AssetRelationshipSummary]
listAssetRelationshipsResponse_assetRelationshipSummaries
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ ListAssetRelationships
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListAssetRelationships (Maybe Text)
listAssetRelationships_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListAssetRelationships
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListAssetRelationshipsResponse (Maybe Text)
listAssetRelationshipsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest ListAssetRelationships where
  type
    AWSResponse ListAssetRelationships =
      ListAssetRelationshipsResponse
  request :: (Service -> Service)
-> ListAssetRelationships -> Request ListAssetRelationships
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListAssetRelationships
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListAssetRelationships)))
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
-> Int
-> [AssetRelationshipSummary]
-> ListAssetRelationshipsResponse
ListAssetRelationshipsResponse'
            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
"nextToken")
            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))
            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
"assetRelationshipSummaries"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance Prelude.Hashable ListAssetRelationships where
  hashWithSalt :: Int -> ListAssetRelationships -> Int
hashWithSalt Int
_salt ListAssetRelationships' {Maybe Natural
Maybe Text
Text
TraversalType
traversalType :: TraversalType
assetId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:traversalType:ListAssetRelationships' :: ListAssetRelationships -> TraversalType
$sel:assetId:ListAssetRelationships' :: ListAssetRelationships -> Text
$sel:nextToken:ListAssetRelationships' :: ListAssetRelationships -> Maybe Text
$sel:maxResults:ListAssetRelationships' :: ListAssetRelationships -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` TraversalType
traversalType

instance Prelude.NFData ListAssetRelationships where
  rnf :: ListAssetRelationships -> ()
rnf ListAssetRelationships' {Maybe Natural
Maybe Text
Text
TraversalType
traversalType :: TraversalType
assetId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:traversalType:ListAssetRelationships' :: ListAssetRelationships -> TraversalType
$sel:assetId:ListAssetRelationships' :: ListAssetRelationships -> Text
$sel:nextToken:ListAssetRelationships' :: ListAssetRelationships -> Maybe Text
$sel:maxResults:ListAssetRelationships' :: ListAssetRelationships -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
assetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf TraversalType
traversalType

instance Data.ToHeaders ListAssetRelationships where
  toHeaders :: ListAssetRelationships -> 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.ToPath ListAssetRelationships where
  toPath :: ListAssetRelationships -> ByteString
toPath ListAssetRelationships' {Maybe Natural
Maybe Text
Text
TraversalType
traversalType :: TraversalType
assetId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:traversalType:ListAssetRelationships' :: ListAssetRelationships -> TraversalType
$sel:assetId:ListAssetRelationships' :: ListAssetRelationships -> Text
$sel:nextToken:ListAssetRelationships' :: ListAssetRelationships -> Maybe Text
$sel:maxResults:ListAssetRelationships' :: ListAssetRelationships -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/assets/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
assetId,
        ByteString
"/assetRelationships"
      ]

instance Data.ToQuery ListAssetRelationships where
  toQuery :: ListAssetRelationships -> QueryString
toQuery ListAssetRelationships' {Maybe Natural
Maybe Text
Text
TraversalType
traversalType :: TraversalType
assetId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:traversalType:ListAssetRelationships' :: ListAssetRelationships -> TraversalType
$sel:assetId:ListAssetRelationships' :: ListAssetRelationships -> Text
$sel:nextToken:ListAssetRelationships' :: ListAssetRelationships -> Maybe Text
$sel:maxResults:ListAssetRelationships' :: ListAssetRelationships -> Maybe Natural
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"maxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"nextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"traversalType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: TraversalType
traversalType
      ]

-- | /See:/ 'newListAssetRelationshipsResponse' smart constructor.
data ListAssetRelationshipsResponse = ListAssetRelationshipsResponse'
  { -- | The token for the next set of results, or null if there are no
    -- additional results.
    ListAssetRelationshipsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListAssetRelationshipsResponse -> Int
httpStatus :: Prelude.Int,
    -- | A list that summarizes each asset relationship.
    ListAssetRelationshipsResponse -> [AssetRelationshipSummary]
assetRelationshipSummaries :: [AssetRelationshipSummary]
  }
  deriving (ListAssetRelationshipsResponse
-> ListAssetRelationshipsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListAssetRelationshipsResponse
-> ListAssetRelationshipsResponse -> Bool
$c/= :: ListAssetRelationshipsResponse
-> ListAssetRelationshipsResponse -> Bool
== :: ListAssetRelationshipsResponse
-> ListAssetRelationshipsResponse -> Bool
$c== :: ListAssetRelationshipsResponse
-> ListAssetRelationshipsResponse -> Bool
Prelude.Eq, ReadPrec [ListAssetRelationshipsResponse]
ReadPrec ListAssetRelationshipsResponse
Int -> ReadS ListAssetRelationshipsResponse
ReadS [ListAssetRelationshipsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListAssetRelationshipsResponse]
$creadListPrec :: ReadPrec [ListAssetRelationshipsResponse]
readPrec :: ReadPrec ListAssetRelationshipsResponse
$creadPrec :: ReadPrec ListAssetRelationshipsResponse
readList :: ReadS [ListAssetRelationshipsResponse]
$creadList :: ReadS [ListAssetRelationshipsResponse]
readsPrec :: Int -> ReadS ListAssetRelationshipsResponse
$creadsPrec :: Int -> ReadS ListAssetRelationshipsResponse
Prelude.Read, Int -> ListAssetRelationshipsResponse -> ShowS
[ListAssetRelationshipsResponse] -> ShowS
ListAssetRelationshipsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListAssetRelationshipsResponse] -> ShowS
$cshowList :: [ListAssetRelationshipsResponse] -> ShowS
show :: ListAssetRelationshipsResponse -> String
$cshow :: ListAssetRelationshipsResponse -> String
showsPrec :: Int -> ListAssetRelationshipsResponse -> ShowS
$cshowsPrec :: Int -> ListAssetRelationshipsResponse -> ShowS
Prelude.Show, forall x.
Rep ListAssetRelationshipsResponse x
-> ListAssetRelationshipsResponse
forall x.
ListAssetRelationshipsResponse
-> Rep ListAssetRelationshipsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListAssetRelationshipsResponse x
-> ListAssetRelationshipsResponse
$cfrom :: forall x.
ListAssetRelationshipsResponse
-> Rep ListAssetRelationshipsResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListAssetRelationshipsResponse' 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:
--
-- 'nextToken', 'listAssetRelationshipsResponse_nextToken' - The token for the next set of results, or null if there are no
-- additional results.
--
-- 'httpStatus', 'listAssetRelationshipsResponse_httpStatus' - The response's http status code.
--
-- 'assetRelationshipSummaries', 'listAssetRelationshipsResponse_assetRelationshipSummaries' - A list that summarizes each asset relationship.
newListAssetRelationshipsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListAssetRelationshipsResponse
newListAssetRelationshipsResponse :: Int -> ListAssetRelationshipsResponse
newListAssetRelationshipsResponse Int
pHttpStatus_ =
  ListAssetRelationshipsResponse'
    { $sel:nextToken:ListAssetRelationshipsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListAssetRelationshipsResponse' :: Int
httpStatus = Int
pHttpStatus_,
      $sel:assetRelationshipSummaries:ListAssetRelationshipsResponse' :: [AssetRelationshipSummary]
assetRelationshipSummaries = forall a. Monoid a => a
Prelude.mempty
    }

-- | The token for the next set of results, or null if there are no
-- additional results.
listAssetRelationshipsResponse_nextToken :: Lens.Lens' ListAssetRelationshipsResponse (Prelude.Maybe Prelude.Text)
listAssetRelationshipsResponse_nextToken :: Lens' ListAssetRelationshipsResponse (Maybe Text)
listAssetRelationshipsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssetRelationshipsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListAssetRelationshipsResponse' :: ListAssetRelationshipsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListAssetRelationshipsResponse
s@ListAssetRelationshipsResponse' {} Maybe Text
a -> ListAssetRelationshipsResponse
s {$sel:nextToken:ListAssetRelationshipsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListAssetRelationshipsResponse)

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

-- | A list that summarizes each asset relationship.
listAssetRelationshipsResponse_assetRelationshipSummaries :: Lens.Lens' ListAssetRelationshipsResponse [AssetRelationshipSummary]
listAssetRelationshipsResponse_assetRelationshipSummaries :: Lens' ListAssetRelationshipsResponse [AssetRelationshipSummary]
listAssetRelationshipsResponse_assetRelationshipSummaries = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListAssetRelationshipsResponse' {[AssetRelationshipSummary]
assetRelationshipSummaries :: [AssetRelationshipSummary]
$sel:assetRelationshipSummaries:ListAssetRelationshipsResponse' :: ListAssetRelationshipsResponse -> [AssetRelationshipSummary]
assetRelationshipSummaries} -> [AssetRelationshipSummary]
assetRelationshipSummaries) (\s :: ListAssetRelationshipsResponse
s@ListAssetRelationshipsResponse' {} [AssetRelationshipSummary]
a -> ListAssetRelationshipsResponse
s {$sel:assetRelationshipSummaries:ListAssetRelationshipsResponse' :: [AssetRelationshipSummary]
assetRelationshipSummaries = [AssetRelationshipSummary]
a} :: ListAssetRelationshipsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance
  Prelude.NFData
    ListAssetRelationshipsResponse
  where
  rnf :: ListAssetRelationshipsResponse -> ()
rnf ListAssetRelationshipsResponse' {Int
[AssetRelationshipSummary]
Maybe Text
assetRelationshipSummaries :: [AssetRelationshipSummary]
httpStatus :: Int
nextToken :: Maybe Text
$sel:assetRelationshipSummaries:ListAssetRelationshipsResponse' :: ListAssetRelationshipsResponse -> [AssetRelationshipSummary]
$sel:httpStatus:ListAssetRelationshipsResponse' :: ListAssetRelationshipsResponse -> Int
$sel:nextToken:ListAssetRelationshipsResponse' :: ListAssetRelationshipsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 [AssetRelationshipSummary]
assetRelationshipSummaries