amazonka-iottwinmaker-2.0: gen/Amazonka/IotTwinMaker/UpdateComponentType.hs
{-# 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.UpdateComponentType
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates information in a component type.
module Amazonka.IotTwinMaker.UpdateComponentType
( -- * Creating a Request
UpdateComponentType (..),
newUpdateComponentType,
-- * Request Lenses
updateComponentType_componentTypeName,
updateComponentType_description,
updateComponentType_extendsFrom,
updateComponentType_functions,
updateComponentType_isSingleton,
updateComponentType_propertyDefinitions,
updateComponentType_propertyGroups,
updateComponentType_workspaceId,
updateComponentType_componentTypeId,
-- * Destructuring the Response
UpdateComponentTypeResponse (..),
newUpdateComponentTypeResponse,
-- * Response Lenses
updateComponentTypeResponse_httpStatus,
updateComponentTypeResponse_workspaceId,
updateComponentTypeResponse_arn,
updateComponentTypeResponse_componentTypeId,
updateComponentTypeResponse_state,
)
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:/ 'newUpdateComponentType' smart constructor.
data UpdateComponentType = UpdateComponentType'
{ -- | The component type name.
componentTypeName :: Prelude.Maybe Prelude.Text,
-- | The description of the component type.
description :: Prelude.Maybe Prelude.Text,
-- | Specifies the component type that this component type extends.
extendsFrom :: Prelude.Maybe [Prelude.Text],
-- | An object that maps strings to the functions in the component type. Each
-- string in the mapping must be unique to this object.
functions :: Prelude.Maybe (Prelude.HashMap Prelude.Text FunctionRequest),
-- | A Boolean value that specifies whether an entity can have more than one
-- component of this type.
isSingleton :: Prelude.Maybe Prelude.Bool,
-- | An object that maps strings to the property definitions in the component
-- type. Each string in the mapping must be unique to this object.
propertyDefinitions :: Prelude.Maybe (Prelude.HashMap Prelude.Text PropertyDefinitionRequest),
-- | The property groups
propertyGroups :: Prelude.Maybe (Prelude.HashMap Prelude.Text PropertyGroupRequest),
-- | The ID of the workspace.
workspaceId :: Prelude.Text,
-- | The ID of the component type.
componentTypeId :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'UpdateComponentType' 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:
--
-- 'componentTypeName', 'updateComponentType_componentTypeName' - The component type name.
--
-- 'description', 'updateComponentType_description' - The description of the component type.
--
-- 'extendsFrom', 'updateComponentType_extendsFrom' - Specifies the component type that this component type extends.
--
-- 'functions', 'updateComponentType_functions' - An object that maps strings to the functions in the component type. Each
-- string in the mapping must be unique to this object.
--
-- 'isSingleton', 'updateComponentType_isSingleton' - A Boolean value that specifies whether an entity can have more than one
-- component of this type.
--
-- 'propertyDefinitions', 'updateComponentType_propertyDefinitions' - An object that maps strings to the property definitions in the component
-- type. Each string in the mapping must be unique to this object.
--
-- 'propertyGroups', 'updateComponentType_propertyGroups' - The property groups
--
-- 'workspaceId', 'updateComponentType_workspaceId' - The ID of the workspace.
--
-- 'componentTypeId', 'updateComponentType_componentTypeId' - The ID of the component type.
newUpdateComponentType ::
-- | 'workspaceId'
Prelude.Text ->
-- | 'componentTypeId'
Prelude.Text ->
UpdateComponentType
newUpdateComponentType
pWorkspaceId_
pComponentTypeId_ =
UpdateComponentType'
{ componentTypeName =
Prelude.Nothing,
description = Prelude.Nothing,
extendsFrom = Prelude.Nothing,
functions = Prelude.Nothing,
isSingleton = Prelude.Nothing,
propertyDefinitions = Prelude.Nothing,
propertyGroups = Prelude.Nothing,
workspaceId = pWorkspaceId_,
componentTypeId = pComponentTypeId_
}
-- | The component type name.
updateComponentType_componentTypeName :: Lens.Lens' UpdateComponentType (Prelude.Maybe Prelude.Text)
updateComponentType_componentTypeName = Lens.lens (\UpdateComponentType' {componentTypeName} -> componentTypeName) (\s@UpdateComponentType' {} a -> s {componentTypeName = a} :: UpdateComponentType)
-- | The description of the component type.
updateComponentType_description :: Lens.Lens' UpdateComponentType (Prelude.Maybe Prelude.Text)
updateComponentType_description = Lens.lens (\UpdateComponentType' {description} -> description) (\s@UpdateComponentType' {} a -> s {description = a} :: UpdateComponentType)
-- | Specifies the component type that this component type extends.
updateComponentType_extendsFrom :: Lens.Lens' UpdateComponentType (Prelude.Maybe [Prelude.Text])
updateComponentType_extendsFrom = Lens.lens (\UpdateComponentType' {extendsFrom} -> extendsFrom) (\s@UpdateComponentType' {} a -> s {extendsFrom = a} :: UpdateComponentType) Prelude.. Lens.mapping Lens.coerced
-- | An object that maps strings to the functions in the component type. Each
-- string in the mapping must be unique to this object.
updateComponentType_functions :: Lens.Lens' UpdateComponentType (Prelude.Maybe (Prelude.HashMap Prelude.Text FunctionRequest))
updateComponentType_functions = Lens.lens (\UpdateComponentType' {functions} -> functions) (\s@UpdateComponentType' {} a -> s {functions = a} :: UpdateComponentType) Prelude.. Lens.mapping Lens.coerced
-- | A Boolean value that specifies whether an entity can have more than one
-- component of this type.
updateComponentType_isSingleton :: Lens.Lens' UpdateComponentType (Prelude.Maybe Prelude.Bool)
updateComponentType_isSingleton = Lens.lens (\UpdateComponentType' {isSingleton} -> isSingleton) (\s@UpdateComponentType' {} a -> s {isSingleton = a} :: UpdateComponentType)
-- | An object that maps strings to the property definitions in the component
-- type. Each string in the mapping must be unique to this object.
updateComponentType_propertyDefinitions :: Lens.Lens' UpdateComponentType (Prelude.Maybe (Prelude.HashMap Prelude.Text PropertyDefinitionRequest))
updateComponentType_propertyDefinitions = Lens.lens (\UpdateComponentType' {propertyDefinitions} -> propertyDefinitions) (\s@UpdateComponentType' {} a -> s {propertyDefinitions = a} :: UpdateComponentType) Prelude.. Lens.mapping Lens.coerced
-- | The property groups
updateComponentType_propertyGroups :: Lens.Lens' UpdateComponentType (Prelude.Maybe (Prelude.HashMap Prelude.Text PropertyGroupRequest))
updateComponentType_propertyGroups = Lens.lens (\UpdateComponentType' {propertyGroups} -> propertyGroups) (\s@UpdateComponentType' {} a -> s {propertyGroups = a} :: UpdateComponentType) Prelude.. Lens.mapping Lens.coerced
-- | The ID of the workspace.
updateComponentType_workspaceId :: Lens.Lens' UpdateComponentType Prelude.Text
updateComponentType_workspaceId = Lens.lens (\UpdateComponentType' {workspaceId} -> workspaceId) (\s@UpdateComponentType' {} a -> s {workspaceId = a} :: UpdateComponentType)
-- | The ID of the component type.
updateComponentType_componentTypeId :: Lens.Lens' UpdateComponentType Prelude.Text
updateComponentType_componentTypeId = Lens.lens (\UpdateComponentType' {componentTypeId} -> componentTypeId) (\s@UpdateComponentType' {} a -> s {componentTypeId = a} :: UpdateComponentType)
instance Core.AWSRequest UpdateComponentType where
type
AWSResponse UpdateComponentType =
UpdateComponentTypeResponse
request overrides =
Request.putJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
UpdateComponentTypeResponse'
Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
Prelude.<*> (x Data..:> "workspaceId")
Prelude.<*> (x Data..:> "arn")
Prelude.<*> (x Data..:> "componentTypeId")
Prelude.<*> (x Data..:> "state")
)
instance Prelude.Hashable UpdateComponentType where
hashWithSalt _salt UpdateComponentType' {..} =
_salt
`Prelude.hashWithSalt` componentTypeName
`Prelude.hashWithSalt` description
`Prelude.hashWithSalt` extendsFrom
`Prelude.hashWithSalt` functions
`Prelude.hashWithSalt` isSingleton
`Prelude.hashWithSalt` propertyDefinitions
`Prelude.hashWithSalt` propertyGroups
`Prelude.hashWithSalt` workspaceId
`Prelude.hashWithSalt` componentTypeId
instance Prelude.NFData UpdateComponentType where
rnf UpdateComponentType' {..} =
Prelude.rnf componentTypeName
`Prelude.seq` Prelude.rnf description
`Prelude.seq` Prelude.rnf extendsFrom
`Prelude.seq` Prelude.rnf functions
`Prelude.seq` Prelude.rnf isSingleton
`Prelude.seq` Prelude.rnf propertyDefinitions
`Prelude.seq` Prelude.rnf propertyGroups
`Prelude.seq` Prelude.rnf workspaceId
`Prelude.seq` Prelude.rnf componentTypeId
instance Data.ToHeaders UpdateComponentType where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON UpdateComponentType where
toJSON UpdateComponentType' {..} =
Data.object
( Prelude.catMaybes
[ ("componentTypeName" Data..=)
Prelude.<$> componentTypeName,
("description" Data..=) Prelude.<$> description,
("extendsFrom" Data..=) Prelude.<$> extendsFrom,
("functions" Data..=) Prelude.<$> functions,
("isSingleton" Data..=) Prelude.<$> isSingleton,
("propertyDefinitions" Data..=)
Prelude.<$> propertyDefinitions,
("propertyGroups" Data..=)
Prelude.<$> propertyGroups
]
)
instance Data.ToPath UpdateComponentType where
toPath UpdateComponentType' {..} =
Prelude.mconcat
[ "/workspaces/",
Data.toBS workspaceId,
"/component-types/",
Data.toBS componentTypeId
]
instance Data.ToQuery UpdateComponentType where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newUpdateComponentTypeResponse' smart constructor.
data UpdateComponentTypeResponse = UpdateComponentTypeResponse'
{ -- | The response's http status code.
httpStatus :: Prelude.Int,
-- | The ID of the workspace that contains the component type.
workspaceId :: Prelude.Text,
-- | The ARN of the component type.
arn :: Prelude.Text,
-- | The ID of the component type.
componentTypeId :: Prelude.Text,
-- | The current state of the component type.
state :: State
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'UpdateComponentTypeResponse' 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:
--
-- 'httpStatus', 'updateComponentTypeResponse_httpStatus' - The response's http status code.
--
-- 'workspaceId', 'updateComponentTypeResponse_workspaceId' - The ID of the workspace that contains the component type.
--
-- 'arn', 'updateComponentTypeResponse_arn' - The ARN of the component type.
--
-- 'componentTypeId', 'updateComponentTypeResponse_componentTypeId' - The ID of the component type.
--
-- 'state', 'updateComponentTypeResponse_state' - The current state of the component type.
newUpdateComponentTypeResponse ::
-- | 'httpStatus'
Prelude.Int ->
-- | 'workspaceId'
Prelude.Text ->
-- | 'arn'
Prelude.Text ->
-- | 'componentTypeId'
Prelude.Text ->
-- | 'state'
State ->
UpdateComponentTypeResponse
newUpdateComponentTypeResponse
pHttpStatus_
pWorkspaceId_
pArn_
pComponentTypeId_
pState_ =
UpdateComponentTypeResponse'
{ httpStatus =
pHttpStatus_,
workspaceId = pWorkspaceId_,
arn = pArn_,
componentTypeId = pComponentTypeId_,
state = pState_
}
-- | The response's http status code.
updateComponentTypeResponse_httpStatus :: Lens.Lens' UpdateComponentTypeResponse Prelude.Int
updateComponentTypeResponse_httpStatus = Lens.lens (\UpdateComponentTypeResponse' {httpStatus} -> httpStatus) (\s@UpdateComponentTypeResponse' {} a -> s {httpStatus = a} :: UpdateComponentTypeResponse)
-- | The ID of the workspace that contains the component type.
updateComponentTypeResponse_workspaceId :: Lens.Lens' UpdateComponentTypeResponse Prelude.Text
updateComponentTypeResponse_workspaceId = Lens.lens (\UpdateComponentTypeResponse' {workspaceId} -> workspaceId) (\s@UpdateComponentTypeResponse' {} a -> s {workspaceId = a} :: UpdateComponentTypeResponse)
-- | The ARN of the component type.
updateComponentTypeResponse_arn :: Lens.Lens' UpdateComponentTypeResponse Prelude.Text
updateComponentTypeResponse_arn = Lens.lens (\UpdateComponentTypeResponse' {arn} -> arn) (\s@UpdateComponentTypeResponse' {} a -> s {arn = a} :: UpdateComponentTypeResponse)
-- | The ID of the component type.
updateComponentTypeResponse_componentTypeId :: Lens.Lens' UpdateComponentTypeResponse Prelude.Text
updateComponentTypeResponse_componentTypeId = Lens.lens (\UpdateComponentTypeResponse' {componentTypeId} -> componentTypeId) (\s@UpdateComponentTypeResponse' {} a -> s {componentTypeId = a} :: UpdateComponentTypeResponse)
-- | The current state of the component type.
updateComponentTypeResponse_state :: Lens.Lens' UpdateComponentTypeResponse State
updateComponentTypeResponse_state = Lens.lens (\UpdateComponentTypeResponse' {state} -> state) (\s@UpdateComponentTypeResponse' {} a -> s {state = a} :: UpdateComponentTypeResponse)
instance Prelude.NFData UpdateComponentTypeResponse where
rnf UpdateComponentTypeResponse' {..} =
Prelude.rnf httpStatus
`Prelude.seq` Prelude.rnf workspaceId
`Prelude.seq` Prelude.rnf arn
`Prelude.seq` Prelude.rnf componentTypeId
`Prelude.seq` Prelude.rnf state