{-# 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.SSM.Types.DocumentDescription
-- 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.SSM.Types.DocumentDescription where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SSM.Types.AttachmentInformation
import Amazonka.SSM.Types.DocumentFormat
import Amazonka.SSM.Types.DocumentHashType
import Amazonka.SSM.Types.DocumentParameter
import Amazonka.SSM.Types.DocumentRequires
import Amazonka.SSM.Types.DocumentStatus
import Amazonka.SSM.Types.DocumentType
import Amazonka.SSM.Types.PlatformType
import Amazonka.SSM.Types.ReviewInformation
import Amazonka.SSM.Types.ReviewStatus
import Amazonka.SSM.Types.Tag

-- | Describes a Amazon Web Services Systems Manager document (SSM document).
--
-- /See:/ 'newDocumentDescription' smart constructor.
data DocumentDescription = DocumentDescription'
  { -- | The status of the SSM document.
    DocumentDescription -> Maybe DocumentStatus
status :: Prelude.Maybe DocumentStatus,
    -- | The type of document.
    DocumentDescription -> Maybe DocumentType
documentType :: Prelude.Maybe DocumentType,
    -- | The Sha256 or Sha1 hash created by the system when the document was
    -- created.
    --
    -- Sha1 hashes have been deprecated.
    DocumentDescription -> Maybe Text
hash :: Prelude.Maybe Prelude.Text,
    -- | The version of the artifact associated with the document.
    DocumentDescription -> Maybe Text
versionName :: Prelude.Maybe Prelude.Text,
    -- | The schema version.
    DocumentDescription -> Maybe Text
schemaVersion :: Prelude.Maybe Prelude.Text,
    -- | The SHA1 hash of the document, which you can use for verification.
    DocumentDescription -> Maybe Text
sha1 :: Prelude.Maybe Prelude.Text,
    -- | The current status of the review.
    DocumentDescription -> Maybe ReviewStatus
reviewStatus :: Prelude.Maybe ReviewStatus,
    -- | Details about the document attachments, including names, locations,
    -- sizes, and so on.
    DocumentDescription -> Maybe [AttachmentInformation]
attachmentsInformation :: Prelude.Maybe [AttachmentInformation],
    -- | The default version.
    DocumentDescription -> Maybe Text
defaultVersion :: Prelude.Maybe Prelude.Text,
    -- | The target type which defines the kinds of resources the document can
    -- run on. For example, @\/AWS::EC2::Instance@. For a list of valid
    -- resource types, see
    -- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html Amazon Web Services resource and property types reference>
    -- in the /CloudFormation User Guide/.
    DocumentDescription -> Maybe Text
targetType :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services user account that created the document.
    DocumentDescription -> Maybe Text
owner :: Prelude.Maybe Prelude.Text,
    -- | The list of OS platforms compatible with this SSM document.
    DocumentDescription -> Maybe [PlatformType]
platformTypes :: Prelude.Maybe [PlatformType],
    -- | The date when the document was created.
    DocumentDescription -> Maybe POSIX
createdDate :: Prelude.Maybe Core.POSIX,
    -- | The document format, either JSON or YAML.
    DocumentDescription -> Maybe DocumentFormat
documentFormat :: Prelude.Maybe DocumentFormat,
    -- | The version of the document that is currently under review.
    DocumentDescription -> Maybe Text
pendingReviewVersion :: Prelude.Maybe Prelude.Text,
    -- | The name of the SSM document.
    DocumentDescription -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The hash type of the document. Valid values include @Sha256@ or @Sha1@.
    --
    -- Sha1 hashes have been deprecated.
    DocumentDescription -> Maybe DocumentHashType
hashType :: Prelude.Maybe DocumentHashType,
    -- | A description of the parameters for a document.
    DocumentDescription -> Maybe [DocumentParameter]
parameters :: Prelude.Maybe [DocumentParameter],
    -- | The document version.
    DocumentDescription -> Maybe Text
documentVersion :: Prelude.Maybe Prelude.Text,
    -- | The user in your organization who created the document.
    DocumentDescription -> Maybe Text
author :: Prelude.Maybe Prelude.Text,
    -- | The friendly name of the SSM document. This value can differ for each
    -- version of the document. If you want to update this value, see
    -- UpdateDocument.
    DocumentDescription -> Maybe Text
displayName :: Prelude.Maybe Prelude.Text,
    -- | A message returned by Amazon Web Services Systems Manager that explains
    -- the @Status@ value. For example, a @Failed@ status might be explained by
    -- the @StatusInformation@ message, \"The specified S3 bucket doesn\'t
    -- exist. Verify that the URL of the S3 bucket is correct.\"
    DocumentDescription -> Maybe Text
statusInformation :: Prelude.Maybe Prelude.Text,
    -- | A description of the document.
    DocumentDescription -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | A list of SSM documents required by a document. For example, an
    -- @ApplicationConfiguration@ document requires an
    -- @ApplicationConfigurationSchema@ document.
    DocumentDescription -> Maybe (NonEmpty DocumentRequires)
requires :: Prelude.Maybe (Prelude.NonEmpty DocumentRequires),
    -- | Details about the review of a document.
    DocumentDescription -> Maybe (NonEmpty ReviewInformation)
reviewInformation :: Prelude.Maybe (Prelude.NonEmpty ReviewInformation),
    -- | The tags, or metadata, that have been applied to the document.
    DocumentDescription -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The latest version of the document.
    DocumentDescription -> Maybe Text
latestVersion :: Prelude.Maybe Prelude.Text,
    -- | The version of the document currently approved for use in the
    -- organization.
    DocumentDescription -> Maybe Text
approvedVersion :: Prelude.Maybe Prelude.Text
  }
  deriving (DocumentDescription -> DocumentDescription -> Bool
(DocumentDescription -> DocumentDescription -> Bool)
-> (DocumentDescription -> DocumentDescription -> Bool)
-> Eq DocumentDescription
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DocumentDescription -> DocumentDescription -> Bool
$c/= :: DocumentDescription -> DocumentDescription -> Bool
== :: DocumentDescription -> DocumentDescription -> Bool
$c== :: DocumentDescription -> DocumentDescription -> Bool
Prelude.Eq, ReadPrec [DocumentDescription]
ReadPrec DocumentDescription
Int -> ReadS DocumentDescription
ReadS [DocumentDescription]
(Int -> ReadS DocumentDescription)
-> ReadS [DocumentDescription]
-> ReadPrec DocumentDescription
-> ReadPrec [DocumentDescription]
-> Read DocumentDescription
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DocumentDescription]
$creadListPrec :: ReadPrec [DocumentDescription]
readPrec :: ReadPrec DocumentDescription
$creadPrec :: ReadPrec DocumentDescription
readList :: ReadS [DocumentDescription]
$creadList :: ReadS [DocumentDescription]
readsPrec :: Int -> ReadS DocumentDescription
$creadsPrec :: Int -> ReadS DocumentDescription
Prelude.Read, Int -> DocumentDescription -> ShowS
[DocumentDescription] -> ShowS
DocumentDescription -> String
(Int -> DocumentDescription -> ShowS)
-> (DocumentDescription -> String)
-> ([DocumentDescription] -> ShowS)
-> Show DocumentDescription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DocumentDescription] -> ShowS
$cshowList :: [DocumentDescription] -> ShowS
show :: DocumentDescription -> String
$cshow :: DocumentDescription -> String
showsPrec :: Int -> DocumentDescription -> ShowS
$cshowsPrec :: Int -> DocumentDescription -> ShowS
Prelude.Show, (forall x. DocumentDescription -> Rep DocumentDescription x)
-> (forall x. Rep DocumentDescription x -> DocumentDescription)
-> Generic DocumentDescription
forall x. Rep DocumentDescription x -> DocumentDescription
forall x. DocumentDescription -> Rep DocumentDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DocumentDescription x -> DocumentDescription
$cfrom :: forall x. DocumentDescription -> Rep DocumentDescription x
Prelude.Generic)

-- |
-- Create a value of 'DocumentDescription' 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:
--
-- 'status', 'documentDescription_status' - The status of the SSM document.
--
-- 'documentType', 'documentDescription_documentType' - The type of document.
--
-- 'hash', 'documentDescription_hash' - The Sha256 or Sha1 hash created by the system when the document was
-- created.
--
-- Sha1 hashes have been deprecated.
--
-- 'versionName', 'documentDescription_versionName' - The version of the artifact associated with the document.
--
-- 'schemaVersion', 'documentDescription_schemaVersion' - The schema version.
--
-- 'sha1', 'documentDescription_sha1' - The SHA1 hash of the document, which you can use for verification.
--
-- 'reviewStatus', 'documentDescription_reviewStatus' - The current status of the review.
--
-- 'attachmentsInformation', 'documentDescription_attachmentsInformation' - Details about the document attachments, including names, locations,
-- sizes, and so on.
--
-- 'defaultVersion', 'documentDescription_defaultVersion' - The default version.
--
-- 'targetType', 'documentDescription_targetType' - The target type which defines the kinds of resources the document can
-- run on. For example, @\/AWS::EC2::Instance@. For a list of valid
-- resource types, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html Amazon Web Services resource and property types reference>
-- in the /CloudFormation User Guide/.
--
-- 'owner', 'documentDescription_owner' - The Amazon Web Services user account that created the document.
--
-- 'platformTypes', 'documentDescription_platformTypes' - The list of OS platforms compatible with this SSM document.
--
-- 'createdDate', 'documentDescription_createdDate' - The date when the document was created.
--
-- 'documentFormat', 'documentDescription_documentFormat' - The document format, either JSON or YAML.
--
-- 'pendingReviewVersion', 'documentDescription_pendingReviewVersion' - The version of the document that is currently under review.
--
-- 'name', 'documentDescription_name' - The name of the SSM document.
--
-- 'hashType', 'documentDescription_hashType' - The hash type of the document. Valid values include @Sha256@ or @Sha1@.
--
-- Sha1 hashes have been deprecated.
--
-- 'parameters', 'documentDescription_parameters' - A description of the parameters for a document.
--
-- 'documentVersion', 'documentDescription_documentVersion' - The document version.
--
-- 'author', 'documentDescription_author' - The user in your organization who created the document.
--
-- 'displayName', 'documentDescription_displayName' - The friendly name of the SSM document. This value can differ for each
-- version of the document. If you want to update this value, see
-- UpdateDocument.
--
-- 'statusInformation', 'documentDescription_statusInformation' - A message returned by Amazon Web Services Systems Manager that explains
-- the @Status@ value. For example, a @Failed@ status might be explained by
-- the @StatusInformation@ message, \"The specified S3 bucket doesn\'t
-- exist. Verify that the URL of the S3 bucket is correct.\"
--
-- 'description', 'documentDescription_description' - A description of the document.
--
-- 'requires', 'documentDescription_requires' - A list of SSM documents required by a document. For example, an
-- @ApplicationConfiguration@ document requires an
-- @ApplicationConfigurationSchema@ document.
--
-- 'reviewInformation', 'documentDescription_reviewInformation' - Details about the review of a document.
--
-- 'tags', 'documentDescription_tags' - The tags, or metadata, that have been applied to the document.
--
-- 'latestVersion', 'documentDescription_latestVersion' - The latest version of the document.
--
-- 'approvedVersion', 'documentDescription_approvedVersion' - The version of the document currently approved for use in the
-- organization.
newDocumentDescription ::
  DocumentDescription
newDocumentDescription :: DocumentDescription
newDocumentDescription =
  DocumentDescription' :: Maybe DocumentStatus
-> Maybe DocumentType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ReviewStatus
-> Maybe [AttachmentInformation]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [PlatformType]
-> Maybe POSIX
-> Maybe DocumentFormat
-> Maybe Text
-> Maybe Text
-> Maybe DocumentHashType
-> Maybe [DocumentParameter]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe (NonEmpty DocumentRequires)
-> Maybe (NonEmpty ReviewInformation)
-> Maybe [Tag]
-> Maybe Text
-> Maybe Text
-> DocumentDescription
DocumentDescription'
    { $sel:status:DocumentDescription' :: Maybe DocumentStatus
status = Maybe DocumentStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:documentType:DocumentDescription' :: Maybe DocumentType
documentType = Maybe DocumentType
forall a. Maybe a
Prelude.Nothing,
      $sel:hash:DocumentDescription' :: Maybe Text
hash = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:versionName:DocumentDescription' :: Maybe Text
versionName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:schemaVersion:DocumentDescription' :: Maybe Text
schemaVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:sha1:DocumentDescription' :: Maybe Text
sha1 = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:reviewStatus:DocumentDescription' :: Maybe ReviewStatus
reviewStatus = Maybe ReviewStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:attachmentsInformation:DocumentDescription' :: Maybe [AttachmentInformation]
attachmentsInformation = Maybe [AttachmentInformation]
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultVersion:DocumentDescription' :: Maybe Text
defaultVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:targetType:DocumentDescription' :: Maybe Text
targetType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:owner:DocumentDescription' :: Maybe Text
owner = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformTypes:DocumentDescription' :: Maybe [PlatformType]
platformTypes = Maybe [PlatformType]
forall a. Maybe a
Prelude.Nothing,
      $sel:createdDate:DocumentDescription' :: Maybe POSIX
createdDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:documentFormat:DocumentDescription' :: Maybe DocumentFormat
documentFormat = Maybe DocumentFormat
forall a. Maybe a
Prelude.Nothing,
      $sel:pendingReviewVersion:DocumentDescription' :: Maybe Text
pendingReviewVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:name:DocumentDescription' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:hashType:DocumentDescription' :: Maybe DocumentHashType
hashType = Maybe DocumentHashType
forall a. Maybe a
Prelude.Nothing,
      $sel:parameters:DocumentDescription' :: Maybe [DocumentParameter]
parameters = Maybe [DocumentParameter]
forall a. Maybe a
Prelude.Nothing,
      $sel:documentVersion:DocumentDescription' :: Maybe Text
documentVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:author:DocumentDescription' :: Maybe Text
author = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:displayName:DocumentDescription' :: Maybe Text
displayName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:statusInformation:DocumentDescription' :: Maybe Text
statusInformation = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:description:DocumentDescription' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:requires:DocumentDescription' :: Maybe (NonEmpty DocumentRequires)
requires = Maybe (NonEmpty DocumentRequires)
forall a. Maybe a
Prelude.Nothing,
      $sel:reviewInformation:DocumentDescription' :: Maybe (NonEmpty ReviewInformation)
reviewInformation = Maybe (NonEmpty ReviewInformation)
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:DocumentDescription' :: Maybe [Tag]
tags = Maybe [Tag]
forall a. Maybe a
Prelude.Nothing,
      $sel:latestVersion:DocumentDescription' :: Maybe Text
latestVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:approvedVersion:DocumentDescription' :: Maybe Text
approvedVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The status of the SSM document.
documentDescription_status :: Lens.Lens' DocumentDescription (Prelude.Maybe DocumentStatus)
documentDescription_status :: (Maybe DocumentStatus -> f (Maybe DocumentStatus))
-> DocumentDescription -> f DocumentDescription
documentDescription_status = (DocumentDescription -> Maybe DocumentStatus)
-> (DocumentDescription
    -> Maybe DocumentStatus -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe DocumentStatus)
     (Maybe DocumentStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe DocumentStatus
status :: Maybe DocumentStatus
$sel:status:DocumentDescription' :: DocumentDescription -> Maybe DocumentStatus
status} -> Maybe DocumentStatus
status) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe DocumentStatus
a -> DocumentDescription
s {$sel:status:DocumentDescription' :: Maybe DocumentStatus
status = Maybe DocumentStatus
a} :: DocumentDescription)

-- | The type of document.
documentDescription_documentType :: Lens.Lens' DocumentDescription (Prelude.Maybe DocumentType)
documentDescription_documentType :: (Maybe DocumentType -> f (Maybe DocumentType))
-> DocumentDescription -> f DocumentDescription
documentDescription_documentType = (DocumentDescription -> Maybe DocumentType)
-> (DocumentDescription
    -> Maybe DocumentType -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe DocumentType)
     (Maybe DocumentType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe DocumentType
documentType :: Maybe DocumentType
$sel:documentType:DocumentDescription' :: DocumentDescription -> Maybe DocumentType
documentType} -> Maybe DocumentType
documentType) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe DocumentType
a -> DocumentDescription
s {$sel:documentType:DocumentDescription' :: Maybe DocumentType
documentType = Maybe DocumentType
a} :: DocumentDescription)

-- | The Sha256 or Sha1 hash created by the system when the document was
-- created.
--
-- Sha1 hashes have been deprecated.
documentDescription_hash :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_hash :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_hash = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
hash :: Maybe Text
$sel:hash:DocumentDescription' :: DocumentDescription -> Maybe Text
hash} -> Maybe Text
hash) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:hash:DocumentDescription' :: Maybe Text
hash = Maybe Text
a} :: DocumentDescription)

-- | The version of the artifact associated with the document.
documentDescription_versionName :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_versionName :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_versionName = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
versionName :: Maybe Text
$sel:versionName:DocumentDescription' :: DocumentDescription -> Maybe Text
versionName} -> Maybe Text
versionName) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:versionName:DocumentDescription' :: Maybe Text
versionName = Maybe Text
a} :: DocumentDescription)

-- | The schema version.
documentDescription_schemaVersion :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_schemaVersion :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_schemaVersion = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
schemaVersion :: Maybe Text
$sel:schemaVersion:DocumentDescription' :: DocumentDescription -> Maybe Text
schemaVersion} -> Maybe Text
schemaVersion) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:schemaVersion:DocumentDescription' :: Maybe Text
schemaVersion = Maybe Text
a} :: DocumentDescription)

-- | The SHA1 hash of the document, which you can use for verification.
documentDescription_sha1 :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_sha1 :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_sha1 = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
sha1 :: Maybe Text
$sel:sha1:DocumentDescription' :: DocumentDescription -> Maybe Text
sha1} -> Maybe Text
sha1) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:sha1:DocumentDescription' :: Maybe Text
sha1 = Maybe Text
a} :: DocumentDescription)

-- | The current status of the review.
documentDescription_reviewStatus :: Lens.Lens' DocumentDescription (Prelude.Maybe ReviewStatus)
documentDescription_reviewStatus :: (Maybe ReviewStatus -> f (Maybe ReviewStatus))
-> DocumentDescription -> f DocumentDescription
documentDescription_reviewStatus = (DocumentDescription -> Maybe ReviewStatus)
-> (DocumentDescription
    -> Maybe ReviewStatus -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe ReviewStatus)
     (Maybe ReviewStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe ReviewStatus
reviewStatus :: Maybe ReviewStatus
$sel:reviewStatus:DocumentDescription' :: DocumentDescription -> Maybe ReviewStatus
reviewStatus} -> Maybe ReviewStatus
reviewStatus) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe ReviewStatus
a -> DocumentDescription
s {$sel:reviewStatus:DocumentDescription' :: Maybe ReviewStatus
reviewStatus = Maybe ReviewStatus
a} :: DocumentDescription)

-- | Details about the document attachments, including names, locations,
-- sizes, and so on.
documentDescription_attachmentsInformation :: Lens.Lens' DocumentDescription (Prelude.Maybe [AttachmentInformation])
documentDescription_attachmentsInformation :: (Maybe [AttachmentInformation]
 -> f (Maybe [AttachmentInformation]))
-> DocumentDescription -> f DocumentDescription
documentDescription_attachmentsInformation = (DocumentDescription -> Maybe [AttachmentInformation])
-> (DocumentDescription
    -> Maybe [AttachmentInformation] -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe [AttachmentInformation])
     (Maybe [AttachmentInformation])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe [AttachmentInformation]
attachmentsInformation :: Maybe [AttachmentInformation]
$sel:attachmentsInformation:DocumentDescription' :: DocumentDescription -> Maybe [AttachmentInformation]
attachmentsInformation} -> Maybe [AttachmentInformation]
attachmentsInformation) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe [AttachmentInformation]
a -> DocumentDescription
s {$sel:attachmentsInformation:DocumentDescription' :: Maybe [AttachmentInformation]
attachmentsInformation = Maybe [AttachmentInformation]
a} :: DocumentDescription) ((Maybe [AttachmentInformation]
  -> f (Maybe [AttachmentInformation]))
 -> DocumentDescription -> f DocumentDescription)
-> ((Maybe [AttachmentInformation]
     -> f (Maybe [AttachmentInformation]))
    -> Maybe [AttachmentInformation]
    -> f (Maybe [AttachmentInformation]))
-> (Maybe [AttachmentInformation]
    -> f (Maybe [AttachmentInformation]))
-> DocumentDescription
-> f DocumentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AttachmentInformation]
  [AttachmentInformation]
  [AttachmentInformation]
  [AttachmentInformation]
-> Iso
     (Maybe [AttachmentInformation])
     (Maybe [AttachmentInformation])
     (Maybe [AttachmentInformation])
     (Maybe [AttachmentInformation])
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
  [AttachmentInformation]
  [AttachmentInformation]
  [AttachmentInformation]
  [AttachmentInformation]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The default version.
documentDescription_defaultVersion :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_defaultVersion :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_defaultVersion = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
defaultVersion :: Maybe Text
$sel:defaultVersion:DocumentDescription' :: DocumentDescription -> Maybe Text
defaultVersion} -> Maybe Text
defaultVersion) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:defaultVersion:DocumentDescription' :: Maybe Text
defaultVersion = Maybe Text
a} :: DocumentDescription)

-- | The target type which defines the kinds of resources the document can
-- run on. For example, @\/AWS::EC2::Instance@. For a list of valid
-- resource types, see
-- <https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html Amazon Web Services resource and property types reference>
-- in the /CloudFormation User Guide/.
documentDescription_targetType :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_targetType :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_targetType = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
targetType :: Maybe Text
$sel:targetType:DocumentDescription' :: DocumentDescription -> Maybe Text
targetType} -> Maybe Text
targetType) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:targetType:DocumentDescription' :: Maybe Text
targetType = Maybe Text
a} :: DocumentDescription)

-- | The Amazon Web Services user account that created the document.
documentDescription_owner :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_owner :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_owner = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
owner :: Maybe Text
$sel:owner:DocumentDescription' :: DocumentDescription -> Maybe Text
owner} -> Maybe Text
owner) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:owner:DocumentDescription' :: Maybe Text
owner = Maybe Text
a} :: DocumentDescription)

-- | The list of OS platforms compatible with this SSM document.
documentDescription_platformTypes :: Lens.Lens' DocumentDescription (Prelude.Maybe [PlatformType])
documentDescription_platformTypes :: (Maybe [PlatformType] -> f (Maybe [PlatformType]))
-> DocumentDescription -> f DocumentDescription
documentDescription_platformTypes = (DocumentDescription -> Maybe [PlatformType])
-> (DocumentDescription
    -> Maybe [PlatformType] -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe [PlatformType])
     (Maybe [PlatformType])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe [PlatformType]
platformTypes :: Maybe [PlatformType]
$sel:platformTypes:DocumentDescription' :: DocumentDescription -> Maybe [PlatformType]
platformTypes} -> Maybe [PlatformType]
platformTypes) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe [PlatformType]
a -> DocumentDescription
s {$sel:platformTypes:DocumentDescription' :: Maybe [PlatformType]
platformTypes = Maybe [PlatformType]
a} :: DocumentDescription) ((Maybe [PlatformType] -> f (Maybe [PlatformType]))
 -> DocumentDescription -> f DocumentDescription)
-> ((Maybe [PlatformType] -> f (Maybe [PlatformType]))
    -> Maybe [PlatformType] -> f (Maybe [PlatformType]))
-> (Maybe [PlatformType] -> f (Maybe [PlatformType]))
-> DocumentDescription
-> f DocumentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [PlatformType] [PlatformType] [PlatformType] [PlatformType]
-> Iso
     (Maybe [PlatformType])
     (Maybe [PlatformType])
     (Maybe [PlatformType])
     (Maybe [PlatformType])
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 [PlatformType] [PlatformType] [PlatformType] [PlatformType]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The date when the document was created.
documentDescription_createdDate :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.UTCTime)
documentDescription_createdDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentDescription -> f DocumentDescription
documentDescription_createdDate = (DocumentDescription -> Maybe POSIX)
-> (DocumentDescription -> Maybe POSIX -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe POSIX
createdDate :: Maybe POSIX
$sel:createdDate:DocumentDescription' :: DocumentDescription -> Maybe POSIX
createdDate} -> Maybe POSIX
createdDate) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe POSIX
a -> DocumentDescription
s {$sel:createdDate:DocumentDescription' :: Maybe POSIX
createdDate = Maybe POSIX
a} :: DocumentDescription) ((Maybe POSIX -> f (Maybe POSIX))
 -> DocumentDescription -> f DocumentDescription)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentDescription
-> f DocumentDescription
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 document format, either JSON or YAML.
documentDescription_documentFormat :: Lens.Lens' DocumentDescription (Prelude.Maybe DocumentFormat)
documentDescription_documentFormat :: (Maybe DocumentFormat -> f (Maybe DocumentFormat))
-> DocumentDescription -> f DocumentDescription
documentDescription_documentFormat = (DocumentDescription -> Maybe DocumentFormat)
-> (DocumentDescription
    -> Maybe DocumentFormat -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe DocumentFormat)
     (Maybe DocumentFormat)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe DocumentFormat
documentFormat :: Maybe DocumentFormat
$sel:documentFormat:DocumentDescription' :: DocumentDescription -> Maybe DocumentFormat
documentFormat} -> Maybe DocumentFormat
documentFormat) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe DocumentFormat
a -> DocumentDescription
s {$sel:documentFormat:DocumentDescription' :: Maybe DocumentFormat
documentFormat = Maybe DocumentFormat
a} :: DocumentDescription)

-- | The version of the document that is currently under review.
documentDescription_pendingReviewVersion :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_pendingReviewVersion :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_pendingReviewVersion = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
pendingReviewVersion :: Maybe Text
$sel:pendingReviewVersion:DocumentDescription' :: DocumentDescription -> Maybe Text
pendingReviewVersion} -> Maybe Text
pendingReviewVersion) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:pendingReviewVersion:DocumentDescription' :: Maybe Text
pendingReviewVersion = Maybe Text
a} :: DocumentDescription)

-- | The name of the SSM document.
documentDescription_name :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_name :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_name = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
name :: Maybe Text
$sel:name:DocumentDescription' :: DocumentDescription -> Maybe Text
name} -> Maybe Text
name) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:name:DocumentDescription' :: Maybe Text
name = Maybe Text
a} :: DocumentDescription)

-- | The hash type of the document. Valid values include @Sha256@ or @Sha1@.
--
-- Sha1 hashes have been deprecated.
documentDescription_hashType :: Lens.Lens' DocumentDescription (Prelude.Maybe DocumentHashType)
documentDescription_hashType :: (Maybe DocumentHashType -> f (Maybe DocumentHashType))
-> DocumentDescription -> f DocumentDescription
documentDescription_hashType = (DocumentDescription -> Maybe DocumentHashType)
-> (DocumentDescription
    -> Maybe DocumentHashType -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe DocumentHashType)
     (Maybe DocumentHashType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe DocumentHashType
hashType :: Maybe DocumentHashType
$sel:hashType:DocumentDescription' :: DocumentDescription -> Maybe DocumentHashType
hashType} -> Maybe DocumentHashType
hashType) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe DocumentHashType
a -> DocumentDescription
s {$sel:hashType:DocumentDescription' :: Maybe DocumentHashType
hashType = Maybe DocumentHashType
a} :: DocumentDescription)

-- | A description of the parameters for a document.
documentDescription_parameters :: Lens.Lens' DocumentDescription (Prelude.Maybe [DocumentParameter])
documentDescription_parameters :: (Maybe [DocumentParameter] -> f (Maybe [DocumentParameter]))
-> DocumentDescription -> f DocumentDescription
documentDescription_parameters = (DocumentDescription -> Maybe [DocumentParameter])
-> (DocumentDescription
    -> Maybe [DocumentParameter] -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe [DocumentParameter])
     (Maybe [DocumentParameter])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe [DocumentParameter]
parameters :: Maybe [DocumentParameter]
$sel:parameters:DocumentDescription' :: DocumentDescription -> Maybe [DocumentParameter]
parameters} -> Maybe [DocumentParameter]
parameters) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe [DocumentParameter]
a -> DocumentDescription
s {$sel:parameters:DocumentDescription' :: Maybe [DocumentParameter]
parameters = Maybe [DocumentParameter]
a} :: DocumentDescription) ((Maybe [DocumentParameter] -> f (Maybe [DocumentParameter]))
 -> DocumentDescription -> f DocumentDescription)
-> ((Maybe [DocumentParameter] -> f (Maybe [DocumentParameter]))
    -> Maybe [DocumentParameter] -> f (Maybe [DocumentParameter]))
-> (Maybe [DocumentParameter] -> f (Maybe [DocumentParameter]))
-> DocumentDescription
-> f DocumentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [DocumentParameter]
  [DocumentParameter]
  [DocumentParameter]
  [DocumentParameter]
-> Iso
     (Maybe [DocumentParameter])
     (Maybe [DocumentParameter])
     (Maybe [DocumentParameter])
     (Maybe [DocumentParameter])
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
  [DocumentParameter]
  [DocumentParameter]
  [DocumentParameter]
  [DocumentParameter]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The document version.
documentDescription_documentVersion :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_documentVersion :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_documentVersion = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
documentVersion :: Maybe Text
$sel:documentVersion:DocumentDescription' :: DocumentDescription -> Maybe Text
documentVersion} -> Maybe Text
documentVersion) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:documentVersion:DocumentDescription' :: Maybe Text
documentVersion = Maybe Text
a} :: DocumentDescription)

-- | The user in your organization who created the document.
documentDescription_author :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_author :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_author = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
author :: Maybe Text
$sel:author:DocumentDescription' :: DocumentDescription -> Maybe Text
author} -> Maybe Text
author) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:author:DocumentDescription' :: Maybe Text
author = Maybe Text
a} :: DocumentDescription)

-- | The friendly name of the SSM document. This value can differ for each
-- version of the document. If you want to update this value, see
-- UpdateDocument.
documentDescription_displayName :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_displayName :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_displayName = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
displayName :: Maybe Text
$sel:displayName:DocumentDescription' :: DocumentDescription -> Maybe Text
displayName} -> Maybe Text
displayName) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:displayName:DocumentDescription' :: Maybe Text
displayName = Maybe Text
a} :: DocumentDescription)

-- | A message returned by Amazon Web Services Systems Manager that explains
-- the @Status@ value. For example, a @Failed@ status might be explained by
-- the @StatusInformation@ message, \"The specified S3 bucket doesn\'t
-- exist. Verify that the URL of the S3 bucket is correct.\"
documentDescription_statusInformation :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_statusInformation :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_statusInformation = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
statusInformation :: Maybe Text
$sel:statusInformation:DocumentDescription' :: DocumentDescription -> Maybe Text
statusInformation} -> Maybe Text
statusInformation) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:statusInformation:DocumentDescription' :: Maybe Text
statusInformation = Maybe Text
a} :: DocumentDescription)

-- | A description of the document.
documentDescription_description :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_description :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_description = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
description :: Maybe Text
$sel:description:DocumentDescription' :: DocumentDescription -> Maybe Text
description} -> Maybe Text
description) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:description:DocumentDescription' :: Maybe Text
description = Maybe Text
a} :: DocumentDescription)

-- | A list of SSM documents required by a document. For example, an
-- @ApplicationConfiguration@ document requires an
-- @ApplicationConfigurationSchema@ document.
documentDescription_requires :: Lens.Lens' DocumentDescription (Prelude.Maybe (Prelude.NonEmpty DocumentRequires))
documentDescription_requires :: (Maybe (NonEmpty DocumentRequires)
 -> f (Maybe (NonEmpty DocumentRequires)))
-> DocumentDescription -> f DocumentDescription
documentDescription_requires = (DocumentDescription -> Maybe (NonEmpty DocumentRequires))
-> (DocumentDescription
    -> Maybe (NonEmpty DocumentRequires) -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe (NonEmpty DocumentRequires))
     (Maybe (NonEmpty DocumentRequires))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe (NonEmpty DocumentRequires)
requires :: Maybe (NonEmpty DocumentRequires)
$sel:requires:DocumentDescription' :: DocumentDescription -> Maybe (NonEmpty DocumentRequires)
requires} -> Maybe (NonEmpty DocumentRequires)
requires) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe (NonEmpty DocumentRequires)
a -> DocumentDescription
s {$sel:requires:DocumentDescription' :: Maybe (NonEmpty DocumentRequires)
requires = Maybe (NonEmpty DocumentRequires)
a} :: DocumentDescription) ((Maybe (NonEmpty DocumentRequires)
  -> f (Maybe (NonEmpty DocumentRequires)))
 -> DocumentDescription -> f DocumentDescription)
-> ((Maybe (NonEmpty DocumentRequires)
     -> f (Maybe (NonEmpty DocumentRequires)))
    -> Maybe (NonEmpty DocumentRequires)
    -> f (Maybe (NonEmpty DocumentRequires)))
-> (Maybe (NonEmpty DocumentRequires)
    -> f (Maybe (NonEmpty DocumentRequires)))
-> DocumentDescription
-> f DocumentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty DocumentRequires)
  (NonEmpty DocumentRequires)
  (NonEmpty DocumentRequires)
  (NonEmpty DocumentRequires)
-> Iso
     (Maybe (NonEmpty DocumentRequires))
     (Maybe (NonEmpty DocumentRequires))
     (Maybe (NonEmpty DocumentRequires))
     (Maybe (NonEmpty DocumentRequires))
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
  (NonEmpty DocumentRequires)
  (NonEmpty DocumentRequires)
  (NonEmpty DocumentRequires)
  (NonEmpty DocumentRequires)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Details about the review of a document.
documentDescription_reviewInformation :: Lens.Lens' DocumentDescription (Prelude.Maybe (Prelude.NonEmpty ReviewInformation))
documentDescription_reviewInformation :: (Maybe (NonEmpty ReviewInformation)
 -> f (Maybe (NonEmpty ReviewInformation)))
-> DocumentDescription -> f DocumentDescription
documentDescription_reviewInformation = (DocumentDescription -> Maybe (NonEmpty ReviewInformation))
-> (DocumentDescription
    -> Maybe (NonEmpty ReviewInformation) -> DocumentDescription)
-> Lens
     DocumentDescription
     DocumentDescription
     (Maybe (NonEmpty ReviewInformation))
     (Maybe (NonEmpty ReviewInformation))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe (NonEmpty ReviewInformation)
reviewInformation :: Maybe (NonEmpty ReviewInformation)
$sel:reviewInformation:DocumentDescription' :: DocumentDescription -> Maybe (NonEmpty ReviewInformation)
reviewInformation} -> Maybe (NonEmpty ReviewInformation)
reviewInformation) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe (NonEmpty ReviewInformation)
a -> DocumentDescription
s {$sel:reviewInformation:DocumentDescription' :: Maybe (NonEmpty ReviewInformation)
reviewInformation = Maybe (NonEmpty ReviewInformation)
a} :: DocumentDescription) ((Maybe (NonEmpty ReviewInformation)
  -> f (Maybe (NonEmpty ReviewInformation)))
 -> DocumentDescription -> f DocumentDescription)
-> ((Maybe (NonEmpty ReviewInformation)
     -> f (Maybe (NonEmpty ReviewInformation)))
    -> Maybe (NonEmpty ReviewInformation)
    -> f (Maybe (NonEmpty ReviewInformation)))
-> (Maybe (NonEmpty ReviewInformation)
    -> f (Maybe (NonEmpty ReviewInformation)))
-> DocumentDescription
-> f DocumentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty ReviewInformation)
  (NonEmpty ReviewInformation)
  (NonEmpty ReviewInformation)
  (NonEmpty ReviewInformation)
-> Iso
     (Maybe (NonEmpty ReviewInformation))
     (Maybe (NonEmpty ReviewInformation))
     (Maybe (NonEmpty ReviewInformation))
     (Maybe (NonEmpty ReviewInformation))
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
  (NonEmpty ReviewInformation)
  (NonEmpty ReviewInformation)
  (NonEmpty ReviewInformation)
  (NonEmpty ReviewInformation)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The tags, or metadata, that have been applied to the document.
documentDescription_tags :: Lens.Lens' DocumentDescription (Prelude.Maybe [Tag])
documentDescription_tags :: (Maybe [Tag] -> f (Maybe [Tag]))
-> DocumentDescription -> f DocumentDescription
documentDescription_tags = (DocumentDescription -> Maybe [Tag])
-> (DocumentDescription -> Maybe [Tag] -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe [Tag]) (Maybe [Tag])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:DocumentDescription' :: DocumentDescription -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe [Tag]
a -> DocumentDescription
s {$sel:tags:DocumentDescription' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: DocumentDescription) ((Maybe [Tag] -> f (Maybe [Tag]))
 -> DocumentDescription -> f DocumentDescription)
-> ((Maybe [Tag] -> f (Maybe [Tag]))
    -> Maybe [Tag] -> f (Maybe [Tag]))
-> (Maybe [Tag] -> f (Maybe [Tag]))
-> DocumentDescription
-> f DocumentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Tag] [Tag] [Tag] [Tag]
-> Iso (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag])
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 [Tag] [Tag] [Tag] [Tag]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The latest version of the document.
documentDescription_latestVersion :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_latestVersion :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_latestVersion = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
latestVersion :: Maybe Text
$sel:latestVersion:DocumentDescription' :: DocumentDescription -> Maybe Text
latestVersion} -> Maybe Text
latestVersion) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:latestVersion:DocumentDescription' :: Maybe Text
latestVersion = Maybe Text
a} :: DocumentDescription)

-- | The version of the document currently approved for use in the
-- organization.
documentDescription_approvedVersion :: Lens.Lens' DocumentDescription (Prelude.Maybe Prelude.Text)
documentDescription_approvedVersion :: (Maybe Text -> f (Maybe Text))
-> DocumentDescription -> f DocumentDescription
documentDescription_approvedVersion = (DocumentDescription -> Maybe Text)
-> (DocumentDescription -> Maybe Text -> DocumentDescription)
-> Lens
     DocumentDescription DocumentDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentDescription' {Maybe Text
approvedVersion :: Maybe Text
$sel:approvedVersion:DocumentDescription' :: DocumentDescription -> Maybe Text
approvedVersion} -> Maybe Text
approvedVersion) (\s :: DocumentDescription
s@DocumentDescription' {} Maybe Text
a -> DocumentDescription
s {$sel:approvedVersion:DocumentDescription' :: Maybe Text
approvedVersion = Maybe Text
a} :: DocumentDescription)

instance Core.FromJSON DocumentDescription where
  parseJSON :: Value -> Parser DocumentDescription
parseJSON =
    String
-> (Object -> Parser DocumentDescription)
-> Value
-> Parser DocumentDescription
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DocumentDescription"
      ( \Object
x ->
          Maybe DocumentStatus
-> Maybe DocumentType
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ReviewStatus
-> Maybe [AttachmentInformation]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [PlatformType]
-> Maybe POSIX
-> Maybe DocumentFormat
-> Maybe Text
-> Maybe Text
-> Maybe DocumentHashType
-> Maybe [DocumentParameter]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe (NonEmpty DocumentRequires)
-> Maybe (NonEmpty ReviewInformation)
-> Maybe [Tag]
-> Maybe Text
-> Maybe Text
-> DocumentDescription
DocumentDescription'
            (Maybe DocumentStatus
 -> Maybe DocumentType
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe ReviewStatus
 -> Maybe [AttachmentInformation]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [PlatformType]
 -> Maybe POSIX
 -> Maybe DocumentFormat
 -> Maybe Text
 -> Maybe Text
 -> Maybe DocumentHashType
 -> Maybe [DocumentParameter]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe (NonEmpty DocumentRequires)
 -> Maybe (NonEmpty ReviewInformation)
 -> Maybe [Tag]
 -> Maybe Text
 -> Maybe Text
 -> DocumentDescription)
-> Parser (Maybe DocumentStatus)
-> Parser
     (Maybe DocumentType
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReviewStatus
      -> Maybe [AttachmentInformation]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe DocumentStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
            Parser
  (Maybe DocumentType
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReviewStatus
   -> Maybe [AttachmentInformation]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe DocumentType)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReviewStatus
      -> Maybe [AttachmentInformation]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DocumentType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DocumentType")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReviewStatus
   -> Maybe [AttachmentInformation]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ReviewStatus
      -> Maybe [AttachmentInformation]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"Hash")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ReviewStatus
   -> Maybe [AttachmentInformation]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe ReviewStatus
      -> Maybe [AttachmentInformation]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"VersionName")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe ReviewStatus
   -> Maybe [AttachmentInformation]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe ReviewStatus
      -> Maybe [AttachmentInformation]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"SchemaVersion")
            Parser
  (Maybe Text
   -> Maybe ReviewStatus
   -> Maybe [AttachmentInformation]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe ReviewStatus
      -> Maybe [AttachmentInformation]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"Sha1")
            Parser
  (Maybe ReviewStatus
   -> Maybe [AttachmentInformation]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe ReviewStatus)
-> Parser
     (Maybe [AttachmentInformation]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ReviewStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReviewStatus")
            Parser
  (Maybe [AttachmentInformation]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe [AttachmentInformation])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [AttachmentInformation]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AttachmentsInformation"
                            Parser (Maybe (Maybe [AttachmentInformation]))
-> Maybe [AttachmentInformation]
-> Parser (Maybe [AttachmentInformation])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [AttachmentInformation]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"DefaultVersion")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"TargetType")
            Parser
  (Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"Owner")
            Parser
  (Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe [PlatformType])
-> Parser
     (Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [PlatformType]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PlatformTypes" Parser (Maybe (Maybe [PlatformType]))
-> Maybe [PlatformType] -> Parser (Maybe [PlatformType])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [PlatformType]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"CreatedDate")
            Parser
  (Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe DocumentFormat)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DocumentFormat)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DocumentFormat")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"PendingReviewVersion")
            Parser
  (Maybe Text
   -> Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe DocumentHashType
      -> Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"Name")
            Parser
  (Maybe DocumentHashType
   -> Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe DocumentHashType)
-> Parser
     (Maybe [DocumentParameter]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DocumentHashType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"HashType")
            Parser
  (Maybe [DocumentParameter]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe [DocumentParameter])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [DocumentParameter]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Parameters" Parser (Maybe (Maybe [DocumentParameter]))
-> Maybe [DocumentParameter] -> Parser (Maybe [DocumentParameter])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [DocumentParameter]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"DocumentVersion")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"Author")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"DisplayName")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"StatusInformation")
            Parser
  (Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser
     (Maybe (NonEmpty DocumentRequires)
      -> Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag]
      -> Maybe Text
      -> Maybe Text
      -> DocumentDescription)
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
"Description")
            Parser
  (Maybe (NonEmpty DocumentRequires)
   -> Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag]
   -> Maybe Text
   -> Maybe Text
   -> DocumentDescription)
-> Parser (Maybe (NonEmpty DocumentRequires))
-> Parser
     (Maybe (NonEmpty ReviewInformation)
      -> Maybe [Tag] -> Maybe Text -> Maybe Text -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty DocumentRequires))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Requires")
            Parser
  (Maybe (NonEmpty ReviewInformation)
   -> Maybe [Tag] -> Maybe Text -> Maybe Text -> DocumentDescription)
-> Parser (Maybe (NonEmpty ReviewInformation))
-> Parser
     (Maybe [Tag] -> Maybe Text -> Maybe Text -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty ReviewInformation))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReviewInformation")
            Parser
  (Maybe [Tag] -> Maybe Text -> Maybe Text -> DocumentDescription)
-> Parser (Maybe [Tag])
-> Parser (Maybe Text -> Maybe Text -> DocumentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Tag]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Tags" Parser (Maybe (Maybe [Tag])) -> Maybe [Tag] -> Parser (Maybe [Tag])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Tag]
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe Text -> Maybe Text -> DocumentDescription)
-> Parser (Maybe Text)
-> Parser (Maybe Text -> DocumentDescription)
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
"LatestVersion")
            Parser (Maybe Text -> DocumentDescription)
-> Parser (Maybe Text) -> Parser DocumentDescription
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
"ApprovedVersion")
      )

instance Prelude.Hashable DocumentDescription

instance Prelude.NFData DocumentDescription