{-# 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.IotTwinMaker.GetPropertyValue
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the property values for a component, component type, entity, or
-- workspace.
--
-- You must specify a value for either @componentName@, @componentTypeId@,
-- @entityId@, or @workspaceId@.
module Amazonka.IotTwinMaker.GetPropertyValue
  ( -- * Creating a Request
    GetPropertyValue (..),
    newGetPropertyValue,

    -- * Request Lenses
    getPropertyValue_componentName,
    getPropertyValue_componentTypeId,
    getPropertyValue_entityId,
    getPropertyValue_maxResults,
    getPropertyValue_nextToken,
    getPropertyValue_propertyGroupName,
    getPropertyValue_tabularConditions,
    getPropertyValue_selectedProperties,
    getPropertyValue_workspaceId,

    -- * Destructuring the Response
    GetPropertyValueResponse (..),
    newGetPropertyValueResponse,

    -- * Response Lenses
    getPropertyValueResponse_nextToken,
    getPropertyValueResponse_propertyValues,
    getPropertyValueResponse_tabularPropertyValues,
    getPropertyValueResponse_httpStatus,
  )
where

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

-- | /See:/ 'newGetPropertyValue' smart constructor.
data GetPropertyValue = GetPropertyValue'
  { -- | The name of the component whose property values the operation returns.
    GetPropertyValue -> Maybe Text
componentName :: Prelude.Maybe Prelude.Text,
    -- | The ID of the component type whose property values the operation
    -- returns.
    GetPropertyValue -> Maybe Text
componentTypeId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the entity whose property values the operation returns.
    GetPropertyValue -> Maybe Text
entityId :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of results to return at one time. The default is 25.
    --
    -- Valid Range: Minimum value of 1. Maximum value of 250.
    GetPropertyValue -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The string that specifies the next page of results.
    GetPropertyValue -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The property group name.
    GetPropertyValue -> Maybe Text
propertyGroupName :: Prelude.Maybe Prelude.Text,
    -- | The tabular conditions.
    GetPropertyValue -> Maybe TabularConditions
tabularConditions :: Prelude.Maybe TabularConditions,
    -- | The properties whose values the operation returns.
    GetPropertyValue -> NonEmpty Text
selectedProperties :: Prelude.NonEmpty Prelude.Text,
    -- | The ID of the workspace whose values the operation returns.
    GetPropertyValue -> Text
workspaceId :: Prelude.Text
  }
  deriving (GetPropertyValue -> GetPropertyValue -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPropertyValue -> GetPropertyValue -> Bool
$c/= :: GetPropertyValue -> GetPropertyValue -> Bool
== :: GetPropertyValue -> GetPropertyValue -> Bool
$c== :: GetPropertyValue -> GetPropertyValue -> Bool
Prelude.Eq, ReadPrec [GetPropertyValue]
ReadPrec GetPropertyValue
Int -> ReadS GetPropertyValue
ReadS [GetPropertyValue]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetPropertyValue]
$creadListPrec :: ReadPrec [GetPropertyValue]
readPrec :: ReadPrec GetPropertyValue
$creadPrec :: ReadPrec GetPropertyValue
readList :: ReadS [GetPropertyValue]
$creadList :: ReadS [GetPropertyValue]
readsPrec :: Int -> ReadS GetPropertyValue
$creadsPrec :: Int -> ReadS GetPropertyValue
Prelude.Read, Int -> GetPropertyValue -> ShowS
[GetPropertyValue] -> ShowS
GetPropertyValue -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPropertyValue] -> ShowS
$cshowList :: [GetPropertyValue] -> ShowS
show :: GetPropertyValue -> String
$cshow :: GetPropertyValue -> String
showsPrec :: Int -> GetPropertyValue -> ShowS
$cshowsPrec :: Int -> GetPropertyValue -> ShowS
Prelude.Show, forall x. Rep GetPropertyValue x -> GetPropertyValue
forall x. GetPropertyValue -> Rep GetPropertyValue x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetPropertyValue x -> GetPropertyValue
$cfrom :: forall x. GetPropertyValue -> Rep GetPropertyValue x
Prelude.Generic)

-- |
-- Create a value of 'GetPropertyValue' 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:
--
-- 'componentName', 'getPropertyValue_componentName' - The name of the component whose property values the operation returns.
--
-- 'componentTypeId', 'getPropertyValue_componentTypeId' - The ID of the component type whose property values the operation
-- returns.
--
-- 'entityId', 'getPropertyValue_entityId' - The ID of the entity whose property values the operation returns.
--
-- 'maxResults', 'getPropertyValue_maxResults' - The maximum number of results to return at one time. The default is 25.
--
-- Valid Range: Minimum value of 1. Maximum value of 250.
--
-- 'nextToken', 'getPropertyValue_nextToken' - The string that specifies the next page of results.
--
-- 'propertyGroupName', 'getPropertyValue_propertyGroupName' - The property group name.
--
-- 'tabularConditions', 'getPropertyValue_tabularConditions' - The tabular conditions.
--
-- 'selectedProperties', 'getPropertyValue_selectedProperties' - The properties whose values the operation returns.
--
-- 'workspaceId', 'getPropertyValue_workspaceId' - The ID of the workspace whose values the operation returns.
newGetPropertyValue ::
  -- | 'selectedProperties'
  Prelude.NonEmpty Prelude.Text ->
  -- | 'workspaceId'
  Prelude.Text ->
  GetPropertyValue
newGetPropertyValue :: NonEmpty Text -> Text -> GetPropertyValue
newGetPropertyValue
  NonEmpty Text
pSelectedProperties_
  Text
pWorkspaceId_ =
    GetPropertyValue'
      { $sel:componentName:GetPropertyValue' :: Maybe Text
componentName = forall a. Maybe a
Prelude.Nothing,
        $sel:componentTypeId:GetPropertyValue' :: Maybe Text
componentTypeId = forall a. Maybe a
Prelude.Nothing,
        $sel:entityId:GetPropertyValue' :: Maybe Text
entityId = forall a. Maybe a
Prelude.Nothing,
        $sel:maxResults:GetPropertyValue' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:GetPropertyValue' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:propertyGroupName:GetPropertyValue' :: Maybe Text
propertyGroupName = forall a. Maybe a
Prelude.Nothing,
        $sel:tabularConditions:GetPropertyValue' :: Maybe TabularConditions
tabularConditions = forall a. Maybe a
Prelude.Nothing,
        $sel:selectedProperties:GetPropertyValue' :: NonEmpty Text
selectedProperties =
          forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty Text
pSelectedProperties_,
        $sel:workspaceId:GetPropertyValue' :: Text
workspaceId = Text
pWorkspaceId_
      }

-- | The name of the component whose property values the operation returns.
getPropertyValue_componentName :: Lens.Lens' GetPropertyValue (Prelude.Maybe Prelude.Text)
getPropertyValue_componentName :: Lens' GetPropertyValue (Maybe Text)
getPropertyValue_componentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {Maybe Text
componentName :: Maybe Text
$sel:componentName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
componentName} -> Maybe Text
componentName) (\s :: GetPropertyValue
s@GetPropertyValue' {} Maybe Text
a -> GetPropertyValue
s {$sel:componentName:GetPropertyValue' :: Maybe Text
componentName = Maybe Text
a} :: GetPropertyValue)

-- | The ID of the component type whose property values the operation
-- returns.
getPropertyValue_componentTypeId :: Lens.Lens' GetPropertyValue (Prelude.Maybe Prelude.Text)
getPropertyValue_componentTypeId :: Lens' GetPropertyValue (Maybe Text)
getPropertyValue_componentTypeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {Maybe Text
componentTypeId :: Maybe Text
$sel:componentTypeId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
componentTypeId} -> Maybe Text
componentTypeId) (\s :: GetPropertyValue
s@GetPropertyValue' {} Maybe Text
a -> GetPropertyValue
s {$sel:componentTypeId:GetPropertyValue' :: Maybe Text
componentTypeId = Maybe Text
a} :: GetPropertyValue)

-- | The ID of the entity whose property values the operation returns.
getPropertyValue_entityId :: Lens.Lens' GetPropertyValue (Prelude.Maybe Prelude.Text)
getPropertyValue_entityId :: Lens' GetPropertyValue (Maybe Text)
getPropertyValue_entityId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {Maybe Text
entityId :: Maybe Text
$sel:entityId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
entityId} -> Maybe Text
entityId) (\s :: GetPropertyValue
s@GetPropertyValue' {} Maybe Text
a -> GetPropertyValue
s {$sel:entityId:GetPropertyValue' :: Maybe Text
entityId = Maybe Text
a} :: GetPropertyValue)

-- | The maximum number of results to return at one time. The default is 25.
--
-- Valid Range: Minimum value of 1. Maximum value of 250.
getPropertyValue_maxResults :: Lens.Lens' GetPropertyValue (Prelude.Maybe Prelude.Natural)
getPropertyValue_maxResults :: Lens' GetPropertyValue (Maybe Natural)
getPropertyValue_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:GetPropertyValue' :: GetPropertyValue -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: GetPropertyValue
s@GetPropertyValue' {} Maybe Natural
a -> GetPropertyValue
s {$sel:maxResults:GetPropertyValue' :: Maybe Natural
maxResults = Maybe Natural
a} :: GetPropertyValue)

-- | The string that specifies the next page of results.
getPropertyValue_nextToken :: Lens.Lens' GetPropertyValue (Prelude.Maybe Prelude.Text)
getPropertyValue_nextToken :: Lens' GetPropertyValue (Maybe Text)
getPropertyValue_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetPropertyValue' :: GetPropertyValue -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetPropertyValue
s@GetPropertyValue' {} Maybe Text
a -> GetPropertyValue
s {$sel:nextToken:GetPropertyValue' :: Maybe Text
nextToken = Maybe Text
a} :: GetPropertyValue)

-- | The property group name.
getPropertyValue_propertyGroupName :: Lens.Lens' GetPropertyValue (Prelude.Maybe Prelude.Text)
getPropertyValue_propertyGroupName :: Lens' GetPropertyValue (Maybe Text)
getPropertyValue_propertyGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {Maybe Text
propertyGroupName :: Maybe Text
$sel:propertyGroupName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
propertyGroupName} -> Maybe Text
propertyGroupName) (\s :: GetPropertyValue
s@GetPropertyValue' {} Maybe Text
a -> GetPropertyValue
s {$sel:propertyGroupName:GetPropertyValue' :: Maybe Text
propertyGroupName = Maybe Text
a} :: GetPropertyValue)

-- | The tabular conditions.
getPropertyValue_tabularConditions :: Lens.Lens' GetPropertyValue (Prelude.Maybe TabularConditions)
getPropertyValue_tabularConditions :: Lens' GetPropertyValue (Maybe TabularConditions)
getPropertyValue_tabularConditions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {Maybe TabularConditions
tabularConditions :: Maybe TabularConditions
$sel:tabularConditions:GetPropertyValue' :: GetPropertyValue -> Maybe TabularConditions
tabularConditions} -> Maybe TabularConditions
tabularConditions) (\s :: GetPropertyValue
s@GetPropertyValue' {} Maybe TabularConditions
a -> GetPropertyValue
s {$sel:tabularConditions:GetPropertyValue' :: Maybe TabularConditions
tabularConditions = Maybe TabularConditions
a} :: GetPropertyValue)

-- | The properties whose values the operation returns.
getPropertyValue_selectedProperties :: Lens.Lens' GetPropertyValue (Prelude.NonEmpty Prelude.Text)
getPropertyValue_selectedProperties :: Lens' GetPropertyValue (NonEmpty Text)
getPropertyValue_selectedProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {NonEmpty Text
selectedProperties :: NonEmpty Text
$sel:selectedProperties:GetPropertyValue' :: GetPropertyValue -> NonEmpty Text
selectedProperties} -> NonEmpty Text
selectedProperties) (\s :: GetPropertyValue
s@GetPropertyValue' {} NonEmpty Text
a -> GetPropertyValue
s {$sel:selectedProperties:GetPropertyValue' :: NonEmpty Text
selectedProperties = NonEmpty Text
a} :: GetPropertyValue) 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

-- | The ID of the workspace whose values the operation returns.
getPropertyValue_workspaceId :: Lens.Lens' GetPropertyValue Prelude.Text
getPropertyValue_workspaceId :: Lens' GetPropertyValue Text
getPropertyValue_workspaceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValue' {Text
workspaceId :: Text
$sel:workspaceId:GetPropertyValue' :: GetPropertyValue -> Text
workspaceId} -> Text
workspaceId) (\s :: GetPropertyValue
s@GetPropertyValue' {} Text
a -> GetPropertyValue
s {$sel:workspaceId:GetPropertyValue' :: Text
workspaceId = Text
a} :: GetPropertyValue)

instance Core.AWSRequest GetPropertyValue where
  type
    AWSResponse GetPropertyValue =
      GetPropertyValueResponse
  request :: (Service -> Service)
-> GetPropertyValue -> Request GetPropertyValue
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetPropertyValue
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetPropertyValue)))
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 PropertyLatestValue)
-> Maybe [[HashMap Text DataValue]]
-> Int
-> GetPropertyValueResponse
GetPropertyValueResponse'
            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.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"propertyValues" 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
"tabularPropertyValues"
                            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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable GetPropertyValue where
  hashWithSalt :: Int -> GetPropertyValue -> Int
hashWithSalt Int
_salt GetPropertyValue' {Maybe Natural
Maybe Text
Maybe TabularConditions
NonEmpty Text
Text
workspaceId :: Text
selectedProperties :: NonEmpty Text
tabularConditions :: Maybe TabularConditions
propertyGroupName :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
entityId :: Maybe Text
componentTypeId :: Maybe Text
componentName :: Maybe Text
$sel:workspaceId:GetPropertyValue' :: GetPropertyValue -> Text
$sel:selectedProperties:GetPropertyValue' :: GetPropertyValue -> NonEmpty Text
$sel:tabularConditions:GetPropertyValue' :: GetPropertyValue -> Maybe TabularConditions
$sel:propertyGroupName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:nextToken:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:maxResults:GetPropertyValue' :: GetPropertyValue -> Maybe Natural
$sel:entityId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:componentTypeId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:componentName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
componentName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
componentTypeId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
entityId
      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` Maybe Text
propertyGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TabularConditions
tabularConditions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NonEmpty Text
selectedProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
workspaceId

instance Prelude.NFData GetPropertyValue where
  rnf :: GetPropertyValue -> ()
rnf GetPropertyValue' {Maybe Natural
Maybe Text
Maybe TabularConditions
NonEmpty Text
Text
workspaceId :: Text
selectedProperties :: NonEmpty Text
tabularConditions :: Maybe TabularConditions
propertyGroupName :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
entityId :: Maybe Text
componentTypeId :: Maybe Text
componentName :: Maybe Text
$sel:workspaceId:GetPropertyValue' :: GetPropertyValue -> Text
$sel:selectedProperties:GetPropertyValue' :: GetPropertyValue -> NonEmpty Text
$sel:tabularConditions:GetPropertyValue' :: GetPropertyValue -> Maybe TabularConditions
$sel:propertyGroupName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:nextToken:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:maxResults:GetPropertyValue' :: GetPropertyValue -> Maybe Natural
$sel:entityId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:componentTypeId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:componentName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
componentName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
componentTypeId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
entityId
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Maybe Text
propertyGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TabularConditions
tabularConditions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NonEmpty Text
selectedProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
workspaceId

instance Data.ToHeaders GetPropertyValue where
  toHeaders :: GetPropertyValue -> 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 GetPropertyValue where
  toJSON :: GetPropertyValue -> Value
toJSON GetPropertyValue' {Maybe Natural
Maybe Text
Maybe TabularConditions
NonEmpty Text
Text
workspaceId :: Text
selectedProperties :: NonEmpty Text
tabularConditions :: Maybe TabularConditions
propertyGroupName :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
entityId :: Maybe Text
componentTypeId :: Maybe Text
componentName :: Maybe Text
$sel:workspaceId:GetPropertyValue' :: GetPropertyValue -> Text
$sel:selectedProperties:GetPropertyValue' :: GetPropertyValue -> NonEmpty Text
$sel:tabularConditions:GetPropertyValue' :: GetPropertyValue -> Maybe TabularConditions
$sel:propertyGroupName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:nextToken:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:maxResults:GetPropertyValue' :: GetPropertyValue -> Maybe Natural
$sel:entityId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:componentTypeId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:componentName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"componentName" 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
componentName,
            (Key
"componentTypeId" 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
componentTypeId,
            (Key
"entityId" 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
entityId,
            (Key
"maxResults" 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 Natural
maxResults,
            (Key
"nextToken" 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
nextToken,
            (Key
"propertyGroupName" 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
propertyGroupName,
            (Key
"tabularConditions" 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 TabularConditions
tabularConditions,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"selectedProperties" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty Text
selectedProperties)
          ]
      )

instance Data.ToPath GetPropertyValue where
  toPath :: GetPropertyValue -> ByteString
toPath GetPropertyValue' {Maybe Natural
Maybe Text
Maybe TabularConditions
NonEmpty Text
Text
workspaceId :: Text
selectedProperties :: NonEmpty Text
tabularConditions :: Maybe TabularConditions
propertyGroupName :: Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
entityId :: Maybe Text
componentTypeId :: Maybe Text
componentName :: Maybe Text
$sel:workspaceId:GetPropertyValue' :: GetPropertyValue -> Text
$sel:selectedProperties:GetPropertyValue' :: GetPropertyValue -> NonEmpty Text
$sel:tabularConditions:GetPropertyValue' :: GetPropertyValue -> Maybe TabularConditions
$sel:propertyGroupName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:nextToken:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:maxResults:GetPropertyValue' :: GetPropertyValue -> Maybe Natural
$sel:entityId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:componentTypeId:GetPropertyValue' :: GetPropertyValue -> Maybe Text
$sel:componentName:GetPropertyValue' :: GetPropertyValue -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/workspaces/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
workspaceId,
        ByteString
"/entity-properties/value"
      ]

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

-- | /See:/ 'newGetPropertyValueResponse' smart constructor.
data GetPropertyValueResponse = GetPropertyValueResponse'
  { -- | The string that specifies the next page of results.
    GetPropertyValueResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | An object that maps strings to the properties and latest property values
    -- in the response. Each string in the mapping must be unique to this
    -- object.
    GetPropertyValueResponse
-> Maybe (HashMap Text PropertyLatestValue)
propertyValues :: Prelude.Maybe (Prelude.HashMap Prelude.Text PropertyLatestValue),
    -- | A table of property values.
    GetPropertyValueResponse -> Maybe [[HashMap Text DataValue]]
tabularPropertyValues :: Prelude.Maybe [[Prelude.HashMap Prelude.Text DataValue]],
    -- | The response's http status code.
    GetPropertyValueResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetPropertyValueResponse -> GetPropertyValueResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPropertyValueResponse -> GetPropertyValueResponse -> Bool
$c/= :: GetPropertyValueResponse -> GetPropertyValueResponse -> Bool
== :: GetPropertyValueResponse -> GetPropertyValueResponse -> Bool
$c== :: GetPropertyValueResponse -> GetPropertyValueResponse -> Bool
Prelude.Eq, ReadPrec [GetPropertyValueResponse]
ReadPrec GetPropertyValueResponse
Int -> ReadS GetPropertyValueResponse
ReadS [GetPropertyValueResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetPropertyValueResponse]
$creadListPrec :: ReadPrec [GetPropertyValueResponse]
readPrec :: ReadPrec GetPropertyValueResponse
$creadPrec :: ReadPrec GetPropertyValueResponse
readList :: ReadS [GetPropertyValueResponse]
$creadList :: ReadS [GetPropertyValueResponse]
readsPrec :: Int -> ReadS GetPropertyValueResponse
$creadsPrec :: Int -> ReadS GetPropertyValueResponse
Prelude.Read, Int -> GetPropertyValueResponse -> ShowS
[GetPropertyValueResponse] -> ShowS
GetPropertyValueResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPropertyValueResponse] -> ShowS
$cshowList :: [GetPropertyValueResponse] -> ShowS
show :: GetPropertyValueResponse -> String
$cshow :: GetPropertyValueResponse -> String
showsPrec :: Int -> GetPropertyValueResponse -> ShowS
$cshowsPrec :: Int -> GetPropertyValueResponse -> ShowS
Prelude.Show, forall x.
Rep GetPropertyValueResponse x -> GetPropertyValueResponse
forall x.
GetPropertyValueResponse -> Rep GetPropertyValueResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetPropertyValueResponse x -> GetPropertyValueResponse
$cfrom :: forall x.
GetPropertyValueResponse -> Rep GetPropertyValueResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetPropertyValueResponse' 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', 'getPropertyValueResponse_nextToken' - The string that specifies the next page of results.
--
-- 'propertyValues', 'getPropertyValueResponse_propertyValues' - An object that maps strings to the properties and latest property values
-- in the response. Each string in the mapping must be unique to this
-- object.
--
-- 'tabularPropertyValues', 'getPropertyValueResponse_tabularPropertyValues' - A table of property values.
--
-- 'httpStatus', 'getPropertyValueResponse_httpStatus' - The response's http status code.
newGetPropertyValueResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetPropertyValueResponse
newGetPropertyValueResponse :: Int -> GetPropertyValueResponse
newGetPropertyValueResponse Int
pHttpStatus_ =
  GetPropertyValueResponse'
    { $sel:nextToken:GetPropertyValueResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:propertyValues:GetPropertyValueResponse' :: Maybe (HashMap Text PropertyLatestValue)
propertyValues = forall a. Maybe a
Prelude.Nothing,
      $sel:tabularPropertyValues:GetPropertyValueResponse' :: Maybe [[HashMap Text DataValue]]
tabularPropertyValues = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetPropertyValueResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The string that specifies the next page of results.
getPropertyValueResponse_nextToken :: Lens.Lens' GetPropertyValueResponse (Prelude.Maybe Prelude.Text)
getPropertyValueResponse_nextToken :: Lens' GetPropertyValueResponse (Maybe Text)
getPropertyValueResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValueResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:GetPropertyValueResponse' :: GetPropertyValueResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: GetPropertyValueResponse
s@GetPropertyValueResponse' {} Maybe Text
a -> GetPropertyValueResponse
s {$sel:nextToken:GetPropertyValueResponse' :: Maybe Text
nextToken = Maybe Text
a} :: GetPropertyValueResponse)

-- | An object that maps strings to the properties and latest property values
-- in the response. Each string in the mapping must be unique to this
-- object.
getPropertyValueResponse_propertyValues :: Lens.Lens' GetPropertyValueResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text PropertyLatestValue))
getPropertyValueResponse_propertyValues :: Lens'
  GetPropertyValueResponse (Maybe (HashMap Text PropertyLatestValue))
getPropertyValueResponse_propertyValues = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValueResponse' {Maybe (HashMap Text PropertyLatestValue)
propertyValues :: Maybe (HashMap Text PropertyLatestValue)
$sel:propertyValues:GetPropertyValueResponse' :: GetPropertyValueResponse
-> Maybe (HashMap Text PropertyLatestValue)
propertyValues} -> Maybe (HashMap Text PropertyLatestValue)
propertyValues) (\s :: GetPropertyValueResponse
s@GetPropertyValueResponse' {} Maybe (HashMap Text PropertyLatestValue)
a -> GetPropertyValueResponse
s {$sel:propertyValues:GetPropertyValueResponse' :: Maybe (HashMap Text PropertyLatestValue)
propertyValues = Maybe (HashMap Text PropertyLatestValue)
a} :: GetPropertyValueResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A table of property values.
getPropertyValueResponse_tabularPropertyValues :: Lens.Lens' GetPropertyValueResponse (Prelude.Maybe [[Prelude.HashMap Prelude.Text DataValue]])
getPropertyValueResponse_tabularPropertyValues :: Lens' GetPropertyValueResponse (Maybe [[HashMap Text DataValue]])
getPropertyValueResponse_tabularPropertyValues = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValueResponse' {Maybe [[HashMap Text DataValue]]
tabularPropertyValues :: Maybe [[HashMap Text DataValue]]
$sel:tabularPropertyValues:GetPropertyValueResponse' :: GetPropertyValueResponse -> Maybe [[HashMap Text DataValue]]
tabularPropertyValues} -> Maybe [[HashMap Text DataValue]]
tabularPropertyValues) (\s :: GetPropertyValueResponse
s@GetPropertyValueResponse' {} Maybe [[HashMap Text DataValue]]
a -> GetPropertyValueResponse
s {$sel:tabularPropertyValues:GetPropertyValueResponse' :: Maybe [[HashMap Text DataValue]]
tabularPropertyValues = Maybe [[HashMap Text DataValue]]
a} :: GetPropertyValueResponse) 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 response's http status code.
getPropertyValueResponse_httpStatus :: Lens.Lens' GetPropertyValueResponse Prelude.Int
getPropertyValueResponse_httpStatus :: Lens' GetPropertyValueResponse Int
getPropertyValueResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPropertyValueResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetPropertyValueResponse' :: GetPropertyValueResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetPropertyValueResponse
s@GetPropertyValueResponse' {} Int
a -> GetPropertyValueResponse
s {$sel:httpStatus:GetPropertyValueResponse' :: Int
httpStatus = Int
a} :: GetPropertyValueResponse)

instance Prelude.NFData GetPropertyValueResponse where
  rnf :: GetPropertyValueResponse -> ()
rnf GetPropertyValueResponse' {Int
Maybe [[HashMap Text DataValue]]
Maybe Text
Maybe (HashMap Text PropertyLatestValue)
httpStatus :: Int
tabularPropertyValues :: Maybe [[HashMap Text DataValue]]
propertyValues :: Maybe (HashMap Text PropertyLatestValue)
nextToken :: Maybe Text
$sel:httpStatus:GetPropertyValueResponse' :: GetPropertyValueResponse -> Int
$sel:tabularPropertyValues:GetPropertyValueResponse' :: GetPropertyValueResponse -> Maybe [[HashMap Text DataValue]]
$sel:propertyValues:GetPropertyValueResponse' :: GetPropertyValueResponse
-> Maybe (HashMap Text PropertyLatestValue)
$sel:nextToken:GetPropertyValueResponse' :: GetPropertyValueResponse -> 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 Maybe (HashMap Text PropertyLatestValue)
propertyValues
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [[HashMap Text DataValue]]
tabularPropertyValues
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus