{-# 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.ServiceCatalog.Types.RecordDetail
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.ServiceCatalog.Types.RecordDetail where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.ServiceCatalog.Types.RecordError
import Amazonka.ServiceCatalog.Types.RecordStatus
import Amazonka.ServiceCatalog.Types.RecordTag

-- | Information about a request operation.
--
-- /See:/ 'newRecordDetail' smart constructor.
data RecordDetail = RecordDetail'
  { -- | The ARN of the launch role associated with the provisioned product.
    RecordDetail -> Maybe Text
launchRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The status of the provisioned product.
    --
    -- -   @CREATED@ - The request was created but the operation has not
    --     started.
    --
    -- -   @IN_PROGRESS@ - The requested operation is in progress.
    --
    -- -   @IN_PROGRESS_IN_ERROR@ - The provisioned product is under change but
    --     the requested operation failed and some remediation is occurring.
    --     For example, a rollback.
    --
    -- -   @SUCCEEDED@ - The requested operation has successfully completed.
    --
    -- -   @FAILED@ - The requested operation has unsuccessfully completed.
    --     Investigate using the error messages returned.
    RecordDetail -> Maybe RecordStatus
status :: Prelude.Maybe RecordStatus,
    -- | One or more tags.
    RecordDetail -> Maybe [RecordTag]
recordTags :: Prelude.Maybe [RecordTag],
    -- | The user-friendly name of the provisioned product.
    RecordDetail -> Maybe Text
provisionedProductName :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the provisioning artifact.
    RecordDetail -> Maybe Text
provisioningArtifactId :: Prelude.Maybe Prelude.Text,
    -- | The UTC time stamp of the creation time.
    RecordDetail -> Maybe POSIX
createdTime :: Prelude.Maybe Core.POSIX,
    -- | The record type.
    --
    -- -   @PROVISION_PRODUCT@
    --
    -- -   @UPDATE_PROVISIONED_PRODUCT@
    --
    -- -   @TERMINATE_PROVISIONED_PRODUCT@
    RecordDetail -> Maybe Text
recordType :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the record.
    RecordDetail -> Maybe Text
recordId :: Prelude.Maybe Prelude.Text,
    -- | The type of provisioned product. The supported values are @CFN_STACK@
    -- and @CFN_STACKSET@.
    RecordDetail -> Maybe Text
provisionedProductType :: Prelude.Maybe Prelude.Text,
    -- | The time when the record was last updated.
    RecordDetail -> Maybe POSIX
updatedTime :: Prelude.Maybe Core.POSIX,
    -- | The path identifier.
    RecordDetail -> Maybe Text
pathId :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the provisioned product.
    RecordDetail -> Maybe Text
provisionedProductId :: Prelude.Maybe Prelude.Text,
    -- | The errors that occurred.
    RecordDetail -> Maybe [RecordError]
recordErrors :: Prelude.Maybe [RecordError],
    -- | The product identifier.
    RecordDetail -> Maybe Text
productId :: Prelude.Maybe Prelude.Text
  }
  deriving (RecordDetail -> RecordDetail -> Bool
(RecordDetail -> RecordDetail -> Bool)
-> (RecordDetail -> RecordDetail -> Bool) -> Eq RecordDetail
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RecordDetail -> RecordDetail -> Bool
$c/= :: RecordDetail -> RecordDetail -> Bool
== :: RecordDetail -> RecordDetail -> Bool
$c== :: RecordDetail -> RecordDetail -> Bool
Prelude.Eq, ReadPrec [RecordDetail]
ReadPrec RecordDetail
Int -> ReadS RecordDetail
ReadS [RecordDetail]
(Int -> ReadS RecordDetail)
-> ReadS [RecordDetail]
-> ReadPrec RecordDetail
-> ReadPrec [RecordDetail]
-> Read RecordDetail
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RecordDetail]
$creadListPrec :: ReadPrec [RecordDetail]
readPrec :: ReadPrec RecordDetail
$creadPrec :: ReadPrec RecordDetail
readList :: ReadS [RecordDetail]
$creadList :: ReadS [RecordDetail]
readsPrec :: Int -> ReadS RecordDetail
$creadsPrec :: Int -> ReadS RecordDetail
Prelude.Read, Int -> RecordDetail -> ShowS
[RecordDetail] -> ShowS
RecordDetail -> String
(Int -> RecordDetail -> ShowS)
-> (RecordDetail -> String)
-> ([RecordDetail] -> ShowS)
-> Show RecordDetail
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RecordDetail] -> ShowS
$cshowList :: [RecordDetail] -> ShowS
show :: RecordDetail -> String
$cshow :: RecordDetail -> String
showsPrec :: Int -> RecordDetail -> ShowS
$cshowsPrec :: Int -> RecordDetail -> ShowS
Prelude.Show, (forall x. RecordDetail -> Rep RecordDetail x)
-> (forall x. Rep RecordDetail x -> RecordDetail)
-> Generic RecordDetail
forall x. Rep RecordDetail x -> RecordDetail
forall x. RecordDetail -> Rep RecordDetail x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RecordDetail x -> RecordDetail
$cfrom :: forall x. RecordDetail -> Rep RecordDetail x
Prelude.Generic)

-- |
-- Create a value of 'RecordDetail' 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:
--
-- 'launchRoleArn', 'recordDetail_launchRoleArn' - The ARN of the launch role associated with the provisioned product.
--
-- 'status', 'recordDetail_status' - The status of the provisioned product.
--
-- -   @CREATED@ - The request was created but the operation has not
--     started.
--
-- -   @IN_PROGRESS@ - The requested operation is in progress.
--
-- -   @IN_PROGRESS_IN_ERROR@ - The provisioned product is under change but
--     the requested operation failed and some remediation is occurring.
--     For example, a rollback.
--
-- -   @SUCCEEDED@ - The requested operation has successfully completed.
--
-- -   @FAILED@ - The requested operation has unsuccessfully completed.
--     Investigate using the error messages returned.
--
-- 'recordTags', 'recordDetail_recordTags' - One or more tags.
--
-- 'provisionedProductName', 'recordDetail_provisionedProductName' - The user-friendly name of the provisioned product.
--
-- 'provisioningArtifactId', 'recordDetail_provisioningArtifactId' - The identifier of the provisioning artifact.
--
-- 'createdTime', 'recordDetail_createdTime' - The UTC time stamp of the creation time.
--
-- 'recordType', 'recordDetail_recordType' - The record type.
--
-- -   @PROVISION_PRODUCT@
--
-- -   @UPDATE_PROVISIONED_PRODUCT@
--
-- -   @TERMINATE_PROVISIONED_PRODUCT@
--
-- 'recordId', 'recordDetail_recordId' - The identifier of the record.
--
-- 'provisionedProductType', 'recordDetail_provisionedProductType' - The type of provisioned product. The supported values are @CFN_STACK@
-- and @CFN_STACKSET@.
--
-- 'updatedTime', 'recordDetail_updatedTime' - The time when the record was last updated.
--
-- 'pathId', 'recordDetail_pathId' - The path identifier.
--
-- 'provisionedProductId', 'recordDetail_provisionedProductId' - The identifier of the provisioned product.
--
-- 'recordErrors', 'recordDetail_recordErrors' - The errors that occurred.
--
-- 'productId', 'recordDetail_productId' - The product identifier.
newRecordDetail ::
  RecordDetail
newRecordDetail :: RecordDetail
newRecordDetail =
  RecordDetail' :: Maybe Text
-> Maybe RecordStatus
-> Maybe [RecordTag]
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe [RecordError]
-> Maybe Text
-> RecordDetail
RecordDetail'
    { $sel:launchRoleArn:RecordDetail' :: Maybe Text
launchRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:status:RecordDetail' :: Maybe RecordStatus
status = Maybe RecordStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:recordTags:RecordDetail' :: Maybe [RecordTag]
recordTags = Maybe [RecordTag]
forall a. Maybe a
Prelude.Nothing,
      $sel:provisionedProductName:RecordDetail' :: Maybe Text
provisionedProductName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:provisioningArtifactId:RecordDetail' :: Maybe Text
provisioningArtifactId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:createdTime:RecordDetail' :: Maybe POSIX
createdTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:recordType:RecordDetail' :: Maybe Text
recordType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:recordId:RecordDetail' :: Maybe Text
recordId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:provisionedProductType:RecordDetail' :: Maybe Text
provisionedProductType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:updatedTime:RecordDetail' :: Maybe POSIX
updatedTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:pathId:RecordDetail' :: Maybe Text
pathId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:provisionedProductId:RecordDetail' :: Maybe Text
provisionedProductId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:recordErrors:RecordDetail' :: Maybe [RecordError]
recordErrors = Maybe [RecordError]
forall a. Maybe a
Prelude.Nothing,
      $sel:productId:RecordDetail' :: Maybe Text
productId = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The ARN of the launch role associated with the provisioned product.
recordDetail_launchRoleArn :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_launchRoleArn :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_launchRoleArn = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
launchRoleArn :: Maybe Text
$sel:launchRoleArn:RecordDetail' :: RecordDetail -> Maybe Text
launchRoleArn} -> Maybe Text
launchRoleArn) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:launchRoleArn:RecordDetail' :: Maybe Text
launchRoleArn = Maybe Text
a} :: RecordDetail)

-- | The status of the provisioned product.
--
-- -   @CREATED@ - The request was created but the operation has not
--     started.
--
-- -   @IN_PROGRESS@ - The requested operation is in progress.
--
-- -   @IN_PROGRESS_IN_ERROR@ - The provisioned product is under change but
--     the requested operation failed and some remediation is occurring.
--     For example, a rollback.
--
-- -   @SUCCEEDED@ - The requested operation has successfully completed.
--
-- -   @FAILED@ - The requested operation has unsuccessfully completed.
--     Investigate using the error messages returned.
recordDetail_status :: Lens.Lens' RecordDetail (Prelude.Maybe RecordStatus)
recordDetail_status :: (Maybe RecordStatus -> f (Maybe RecordStatus))
-> RecordDetail -> f RecordDetail
recordDetail_status = (RecordDetail -> Maybe RecordStatus)
-> (RecordDetail -> Maybe RecordStatus -> RecordDetail)
-> Lens
     RecordDetail RecordDetail (Maybe RecordStatus) (Maybe RecordStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe RecordStatus
status :: Maybe RecordStatus
$sel:status:RecordDetail' :: RecordDetail -> Maybe RecordStatus
status} -> Maybe RecordStatus
status) (\s :: RecordDetail
s@RecordDetail' {} Maybe RecordStatus
a -> RecordDetail
s {$sel:status:RecordDetail' :: Maybe RecordStatus
status = Maybe RecordStatus
a} :: RecordDetail)

-- | One or more tags.
recordDetail_recordTags :: Lens.Lens' RecordDetail (Prelude.Maybe [RecordTag])
recordDetail_recordTags :: (Maybe [RecordTag] -> f (Maybe [RecordTag]))
-> RecordDetail -> f RecordDetail
recordDetail_recordTags = (RecordDetail -> Maybe [RecordTag])
-> (RecordDetail -> Maybe [RecordTag] -> RecordDetail)
-> Lens
     RecordDetail RecordDetail (Maybe [RecordTag]) (Maybe [RecordTag])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe [RecordTag]
recordTags :: Maybe [RecordTag]
$sel:recordTags:RecordDetail' :: RecordDetail -> Maybe [RecordTag]
recordTags} -> Maybe [RecordTag]
recordTags) (\s :: RecordDetail
s@RecordDetail' {} Maybe [RecordTag]
a -> RecordDetail
s {$sel:recordTags:RecordDetail' :: Maybe [RecordTag]
recordTags = Maybe [RecordTag]
a} :: RecordDetail) ((Maybe [RecordTag] -> f (Maybe [RecordTag]))
 -> RecordDetail -> f RecordDetail)
-> ((Maybe [RecordTag] -> f (Maybe [RecordTag]))
    -> Maybe [RecordTag] -> f (Maybe [RecordTag]))
-> (Maybe [RecordTag] -> f (Maybe [RecordTag]))
-> RecordDetail
-> f RecordDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [RecordTag] [RecordTag] [RecordTag] [RecordTag]
-> Iso
     (Maybe [RecordTag])
     (Maybe [RecordTag])
     (Maybe [RecordTag])
     (Maybe [RecordTag])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [RecordTag] [RecordTag] [RecordTag] [RecordTag]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The user-friendly name of the provisioned product.
recordDetail_provisionedProductName :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_provisionedProductName :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_provisionedProductName = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
provisionedProductName :: Maybe Text
$sel:provisionedProductName:RecordDetail' :: RecordDetail -> Maybe Text
provisionedProductName} -> Maybe Text
provisionedProductName) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:provisionedProductName:RecordDetail' :: Maybe Text
provisionedProductName = Maybe Text
a} :: RecordDetail)

-- | The identifier of the provisioning artifact.
recordDetail_provisioningArtifactId :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_provisioningArtifactId :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_provisioningArtifactId = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
provisioningArtifactId :: Maybe Text
$sel:provisioningArtifactId:RecordDetail' :: RecordDetail -> Maybe Text
provisioningArtifactId} -> Maybe Text
provisioningArtifactId) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:provisioningArtifactId:RecordDetail' :: Maybe Text
provisioningArtifactId = Maybe Text
a} :: RecordDetail)

-- | The UTC time stamp of the creation time.
recordDetail_createdTime :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.UTCTime)
recordDetail_createdTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> RecordDetail -> f RecordDetail
recordDetail_createdTime = (RecordDetail -> Maybe POSIX)
-> (RecordDetail -> Maybe POSIX -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe POSIX
createdTime :: Maybe POSIX
$sel:createdTime:RecordDetail' :: RecordDetail -> Maybe POSIX
createdTime} -> Maybe POSIX
createdTime) (\s :: RecordDetail
s@RecordDetail' {} Maybe POSIX
a -> RecordDetail
s {$sel:createdTime:RecordDetail' :: Maybe POSIX
createdTime = Maybe POSIX
a} :: RecordDetail) ((Maybe POSIX -> f (Maybe POSIX))
 -> RecordDetail -> f RecordDetail)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> RecordDetail
-> f RecordDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The record type.
--
-- -   @PROVISION_PRODUCT@
--
-- -   @UPDATE_PROVISIONED_PRODUCT@
--
-- -   @TERMINATE_PROVISIONED_PRODUCT@
recordDetail_recordType :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_recordType :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_recordType = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
recordType :: Maybe Text
$sel:recordType:RecordDetail' :: RecordDetail -> Maybe Text
recordType} -> Maybe Text
recordType) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:recordType:RecordDetail' :: Maybe Text
recordType = Maybe Text
a} :: RecordDetail)

-- | The identifier of the record.
recordDetail_recordId :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_recordId :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_recordId = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
recordId :: Maybe Text
$sel:recordId:RecordDetail' :: RecordDetail -> Maybe Text
recordId} -> Maybe Text
recordId) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:recordId:RecordDetail' :: Maybe Text
recordId = Maybe Text
a} :: RecordDetail)

-- | The type of provisioned product. The supported values are @CFN_STACK@
-- and @CFN_STACKSET@.
recordDetail_provisionedProductType :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_provisionedProductType :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_provisionedProductType = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
provisionedProductType :: Maybe Text
$sel:provisionedProductType:RecordDetail' :: RecordDetail -> Maybe Text
provisionedProductType} -> Maybe Text
provisionedProductType) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:provisionedProductType:RecordDetail' :: Maybe Text
provisionedProductType = Maybe Text
a} :: RecordDetail)

-- | The time when the record was last updated.
recordDetail_updatedTime :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.UTCTime)
recordDetail_updatedTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> RecordDetail -> f RecordDetail
recordDetail_updatedTime = (RecordDetail -> Maybe POSIX)
-> (RecordDetail -> Maybe POSIX -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe POSIX
updatedTime :: Maybe POSIX
$sel:updatedTime:RecordDetail' :: RecordDetail -> Maybe POSIX
updatedTime} -> Maybe POSIX
updatedTime) (\s :: RecordDetail
s@RecordDetail' {} Maybe POSIX
a -> RecordDetail
s {$sel:updatedTime:RecordDetail' :: Maybe POSIX
updatedTime = Maybe POSIX
a} :: RecordDetail) ((Maybe POSIX -> f (Maybe POSIX))
 -> RecordDetail -> f RecordDetail)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> RecordDetail
-> f RecordDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The path identifier.
recordDetail_pathId :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_pathId :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_pathId = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
pathId :: Maybe Text
$sel:pathId:RecordDetail' :: RecordDetail -> Maybe Text
pathId} -> Maybe Text
pathId) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:pathId:RecordDetail' :: Maybe Text
pathId = Maybe Text
a} :: RecordDetail)

-- | The identifier of the provisioned product.
recordDetail_provisionedProductId :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_provisionedProductId :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_provisionedProductId = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
provisionedProductId :: Maybe Text
$sel:provisionedProductId:RecordDetail' :: RecordDetail -> Maybe Text
provisionedProductId} -> Maybe Text
provisionedProductId) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:provisionedProductId:RecordDetail' :: Maybe Text
provisionedProductId = Maybe Text
a} :: RecordDetail)

-- | The errors that occurred.
recordDetail_recordErrors :: Lens.Lens' RecordDetail (Prelude.Maybe [RecordError])
recordDetail_recordErrors :: (Maybe [RecordError] -> f (Maybe [RecordError]))
-> RecordDetail -> f RecordDetail
recordDetail_recordErrors = (RecordDetail -> Maybe [RecordError])
-> (RecordDetail -> Maybe [RecordError] -> RecordDetail)
-> Lens
     RecordDetail
     RecordDetail
     (Maybe [RecordError])
     (Maybe [RecordError])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe [RecordError]
recordErrors :: Maybe [RecordError]
$sel:recordErrors:RecordDetail' :: RecordDetail -> Maybe [RecordError]
recordErrors} -> Maybe [RecordError]
recordErrors) (\s :: RecordDetail
s@RecordDetail' {} Maybe [RecordError]
a -> RecordDetail
s {$sel:recordErrors:RecordDetail' :: Maybe [RecordError]
recordErrors = Maybe [RecordError]
a} :: RecordDetail) ((Maybe [RecordError] -> f (Maybe [RecordError]))
 -> RecordDetail -> f RecordDetail)
-> ((Maybe [RecordError] -> f (Maybe [RecordError]))
    -> Maybe [RecordError] -> f (Maybe [RecordError]))
-> (Maybe [RecordError] -> f (Maybe [RecordError]))
-> RecordDetail
-> f RecordDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [RecordError] [RecordError] [RecordError] [RecordError]
-> Iso
     (Maybe [RecordError])
     (Maybe [RecordError])
     (Maybe [RecordError])
     (Maybe [RecordError])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [RecordError] [RecordError] [RecordError] [RecordError]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The product identifier.
recordDetail_productId :: Lens.Lens' RecordDetail (Prelude.Maybe Prelude.Text)
recordDetail_productId :: (Maybe Text -> f (Maybe Text)) -> RecordDetail -> f RecordDetail
recordDetail_productId = (RecordDetail -> Maybe Text)
-> (RecordDetail -> Maybe Text -> RecordDetail)
-> Lens RecordDetail RecordDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecordDetail' {Maybe Text
productId :: Maybe Text
$sel:productId:RecordDetail' :: RecordDetail -> Maybe Text
productId} -> Maybe Text
productId) (\s :: RecordDetail
s@RecordDetail' {} Maybe Text
a -> RecordDetail
s {$sel:productId:RecordDetail' :: Maybe Text
productId = Maybe Text
a} :: RecordDetail)

instance Core.FromJSON RecordDetail where
  parseJSON :: Value -> Parser RecordDetail
parseJSON =
    String
-> (Object -> Parser RecordDetail) -> Value -> Parser RecordDetail
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"RecordDetail"
      ( \Object
x ->
          Maybe Text
-> Maybe RecordStatus
-> Maybe [RecordTag]
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe [RecordError]
-> Maybe Text
-> RecordDetail
RecordDetail'
            (Maybe Text
 -> Maybe RecordStatus
 -> Maybe [RecordTag]
 -> Maybe Text
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> Maybe [RecordError]
 -> Maybe Text
 -> RecordDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe RecordStatus
      -> Maybe [RecordTag]
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LaunchRoleArn")
            Parser
  (Maybe RecordStatus
   -> Maybe [RecordTag]
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe RecordStatus)
-> Parser
     (Maybe [RecordTag]
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RecordStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
            Parser
  (Maybe [RecordTag]
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe [RecordTag])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [RecordTag]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RecordTags" Parser (Maybe (Maybe [RecordTag]))
-> Maybe [RecordTag] -> Parser (Maybe [RecordTag])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [RecordTag]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProvisionedProductName")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProvisioningArtifactId")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreatedTime")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RecordType")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RecordId")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [RecordError]
      -> Maybe Text
      -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProvisionedProductType")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [RecordError]
   -> Maybe Text
   -> RecordDetail)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe Text -> Maybe [RecordError] -> Maybe Text -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"UpdatedTime")
            Parser
  (Maybe Text
   -> Maybe Text -> Maybe [RecordError] -> Maybe Text -> RecordDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> Maybe [RecordError] -> Maybe Text -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PathId")
            Parser
  (Maybe Text -> Maybe [RecordError] -> Maybe Text -> RecordDetail)
-> Parser (Maybe Text)
-> Parser (Maybe [RecordError] -> Maybe Text -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProvisionedProductId")
            Parser (Maybe [RecordError] -> Maybe Text -> RecordDetail)
-> Parser (Maybe [RecordError])
-> Parser (Maybe Text -> RecordDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [RecordError]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RecordErrors" Parser (Maybe (Maybe [RecordError]))
-> Maybe [RecordError] -> Parser (Maybe [RecordError])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [RecordError]
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe Text -> RecordDetail)
-> Parser (Maybe Text) -> Parser RecordDetail
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProductId")
      )

instance Prelude.Hashable RecordDetail

instance Prelude.NFData RecordDetail