{-# 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.DocumentIdentifier
-- 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.DocumentIdentifier where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SSM.Types.DocumentFormat
import Amazonka.SSM.Types.DocumentRequires
import Amazonka.SSM.Types.DocumentType
import Amazonka.SSM.Types.PlatformType
import Amazonka.SSM.Types.ReviewStatus
import Amazonka.SSM.Types.Tag

-- | Describes the name of a SSM document.
--
-- /See:/ 'newDocumentIdentifier' smart constructor.
data DocumentIdentifier = DocumentIdentifier'
  { -- | The document type.
    DocumentIdentifier -> Maybe DocumentType
documentType :: Prelude.Maybe DocumentType,
    -- | An optional field specifying the version of the artifact associated with
    -- the document. For example, \"Release 12, Update 6\". This value is
    -- unique across all versions of a document, and can\'t be changed.
    DocumentIdentifier -> Maybe Text
versionName :: Prelude.Maybe Prelude.Text,
    -- | The schema version.
    DocumentIdentifier -> Maybe Text
schemaVersion :: Prelude.Maybe Prelude.Text,
    -- | The current status of a document review.
    DocumentIdentifier -> Maybe ReviewStatus
reviewStatus :: Prelude.Maybe ReviewStatus,
    -- | 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/.
    DocumentIdentifier -> Maybe Text
targetType :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services user account that created the document.
    DocumentIdentifier -> Maybe Text
owner :: Prelude.Maybe Prelude.Text,
    -- | The operating system platform.
    DocumentIdentifier -> Maybe [PlatformType]
platformTypes :: Prelude.Maybe [PlatformType],
    -- | The date the SSM document was created.
    DocumentIdentifier -> Maybe POSIX
createdDate :: Prelude.Maybe Core.POSIX,
    -- | The document format, either JSON or YAML.
    DocumentIdentifier -> Maybe DocumentFormat
documentFormat :: Prelude.Maybe DocumentFormat,
    -- | The name of the SSM document.
    DocumentIdentifier -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The document version.
    DocumentIdentifier -> Maybe Text
documentVersion :: Prelude.Maybe Prelude.Text,
    -- | The user in your organization who created the document.
    DocumentIdentifier -> Maybe Text
author :: Prelude.Maybe Prelude.Text,
    -- | An optional field where you can specify a friendly name for the SSM
    -- document. This value can differ for each version of the document. If you
    -- want to update this value, see UpdateDocument.
    DocumentIdentifier -> Maybe Text
displayName :: Prelude.Maybe Prelude.Text,
    -- | A list of SSM documents required by a document. For example, an
    -- @ApplicationConfiguration@ document requires an
    -- @ApplicationConfigurationSchema@ document.
    DocumentIdentifier -> Maybe (NonEmpty DocumentRequires)
requires :: Prelude.Maybe (Prelude.NonEmpty DocumentRequires),
    -- | The tags, or metadata, that have been applied to the document.
    DocumentIdentifier -> Maybe [Tag]
tags :: Prelude.Maybe [Tag]
  }
  deriving (DocumentIdentifier -> DocumentIdentifier -> Bool
(DocumentIdentifier -> DocumentIdentifier -> Bool)
-> (DocumentIdentifier -> DocumentIdentifier -> Bool)
-> Eq DocumentIdentifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DocumentIdentifier -> DocumentIdentifier -> Bool
$c/= :: DocumentIdentifier -> DocumentIdentifier -> Bool
== :: DocumentIdentifier -> DocumentIdentifier -> Bool
$c== :: DocumentIdentifier -> DocumentIdentifier -> Bool
Prelude.Eq, ReadPrec [DocumentIdentifier]
ReadPrec DocumentIdentifier
Int -> ReadS DocumentIdentifier
ReadS [DocumentIdentifier]
(Int -> ReadS DocumentIdentifier)
-> ReadS [DocumentIdentifier]
-> ReadPrec DocumentIdentifier
-> ReadPrec [DocumentIdentifier]
-> Read DocumentIdentifier
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DocumentIdentifier]
$creadListPrec :: ReadPrec [DocumentIdentifier]
readPrec :: ReadPrec DocumentIdentifier
$creadPrec :: ReadPrec DocumentIdentifier
readList :: ReadS [DocumentIdentifier]
$creadList :: ReadS [DocumentIdentifier]
readsPrec :: Int -> ReadS DocumentIdentifier
$creadsPrec :: Int -> ReadS DocumentIdentifier
Prelude.Read, Int -> DocumentIdentifier -> ShowS
[DocumentIdentifier] -> ShowS
DocumentIdentifier -> String
(Int -> DocumentIdentifier -> ShowS)
-> (DocumentIdentifier -> String)
-> ([DocumentIdentifier] -> ShowS)
-> Show DocumentIdentifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DocumentIdentifier] -> ShowS
$cshowList :: [DocumentIdentifier] -> ShowS
show :: DocumentIdentifier -> String
$cshow :: DocumentIdentifier -> String
showsPrec :: Int -> DocumentIdentifier -> ShowS
$cshowsPrec :: Int -> DocumentIdentifier -> ShowS
Prelude.Show, (forall x. DocumentIdentifier -> Rep DocumentIdentifier x)
-> (forall x. Rep DocumentIdentifier x -> DocumentIdentifier)
-> Generic DocumentIdentifier
forall x. Rep DocumentIdentifier x -> DocumentIdentifier
forall x. DocumentIdentifier -> Rep DocumentIdentifier x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DocumentIdentifier x -> DocumentIdentifier
$cfrom :: forall x. DocumentIdentifier -> Rep DocumentIdentifier x
Prelude.Generic)

-- |
-- Create a value of 'DocumentIdentifier' 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:
--
-- 'documentType', 'documentIdentifier_documentType' - The document type.
--
-- 'versionName', 'documentIdentifier_versionName' - An optional field specifying the version of the artifact associated with
-- the document. For example, \"Release 12, Update 6\". This value is
-- unique across all versions of a document, and can\'t be changed.
--
-- 'schemaVersion', 'documentIdentifier_schemaVersion' - The schema version.
--
-- 'reviewStatus', 'documentIdentifier_reviewStatus' - The current status of a document review.
--
-- 'targetType', 'documentIdentifier_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', 'documentIdentifier_owner' - The Amazon Web Services user account that created the document.
--
-- 'platformTypes', 'documentIdentifier_platformTypes' - The operating system platform.
--
-- 'createdDate', 'documentIdentifier_createdDate' - The date the SSM document was created.
--
-- 'documentFormat', 'documentIdentifier_documentFormat' - The document format, either JSON or YAML.
--
-- 'name', 'documentIdentifier_name' - The name of the SSM document.
--
-- 'documentVersion', 'documentIdentifier_documentVersion' - The document version.
--
-- 'author', 'documentIdentifier_author' - The user in your organization who created the document.
--
-- 'displayName', 'documentIdentifier_displayName' - An optional field where you can specify a friendly name for the SSM
-- document. This value can differ for each version of the document. If you
-- want to update this value, see UpdateDocument.
--
-- 'requires', 'documentIdentifier_requires' - A list of SSM documents required by a document. For example, an
-- @ApplicationConfiguration@ document requires an
-- @ApplicationConfigurationSchema@ document.
--
-- 'tags', 'documentIdentifier_tags' - The tags, or metadata, that have been applied to the document.
newDocumentIdentifier ::
  DocumentIdentifier
newDocumentIdentifier :: DocumentIdentifier
newDocumentIdentifier =
  DocumentIdentifier' :: Maybe DocumentType
-> Maybe Text
-> Maybe Text
-> Maybe ReviewStatus
-> Maybe Text
-> Maybe Text
-> Maybe [PlatformType]
-> Maybe POSIX
-> Maybe DocumentFormat
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe (NonEmpty DocumentRequires)
-> Maybe [Tag]
-> DocumentIdentifier
DocumentIdentifier'
    { $sel:documentType:DocumentIdentifier' :: Maybe DocumentType
documentType = Maybe DocumentType
forall a. Maybe a
Prelude.Nothing,
      $sel:versionName:DocumentIdentifier' :: Maybe Text
versionName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:schemaVersion:DocumentIdentifier' :: Maybe Text
schemaVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:reviewStatus:DocumentIdentifier' :: Maybe ReviewStatus
reviewStatus = Maybe ReviewStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:targetType:DocumentIdentifier' :: Maybe Text
targetType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:owner:DocumentIdentifier' :: Maybe Text
owner = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformTypes:DocumentIdentifier' :: Maybe [PlatformType]
platformTypes = Maybe [PlatformType]
forall a. Maybe a
Prelude.Nothing,
      $sel:createdDate:DocumentIdentifier' :: Maybe POSIX
createdDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:documentFormat:DocumentIdentifier' :: Maybe DocumentFormat
documentFormat = Maybe DocumentFormat
forall a. Maybe a
Prelude.Nothing,
      $sel:name:DocumentIdentifier' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:documentVersion:DocumentIdentifier' :: Maybe Text
documentVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:author:DocumentIdentifier' :: Maybe Text
author = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:displayName:DocumentIdentifier' :: Maybe Text
displayName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:requires:DocumentIdentifier' :: Maybe (NonEmpty DocumentRequires)
requires = Maybe (NonEmpty DocumentRequires)
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:DocumentIdentifier' :: Maybe [Tag]
tags = Maybe [Tag]
forall a. Maybe a
Prelude.Nothing
    }

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

-- | An optional field specifying the version of the artifact associated with
-- the document. For example, \"Release 12, Update 6\". This value is
-- unique across all versions of a document, and can\'t be changed.
documentIdentifier_versionName :: Lens.Lens' DocumentIdentifier (Prelude.Maybe Prelude.Text)
documentIdentifier_versionName :: (Maybe Text -> f (Maybe Text))
-> DocumentIdentifier -> f DocumentIdentifier
documentIdentifier_versionName = (DocumentIdentifier -> Maybe Text)
-> (DocumentIdentifier -> Maybe Text -> DocumentIdentifier)
-> Lens
     DocumentIdentifier DocumentIdentifier (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentIdentifier' {Maybe Text
versionName :: Maybe Text
$sel:versionName:DocumentIdentifier' :: DocumentIdentifier -> Maybe Text
versionName} -> Maybe Text
versionName) (\s :: DocumentIdentifier
s@DocumentIdentifier' {} Maybe Text
a -> DocumentIdentifier
s {$sel:versionName:DocumentIdentifier' :: Maybe Text
versionName = Maybe Text
a} :: DocumentIdentifier)

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

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

-- | 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/.
documentIdentifier_targetType :: Lens.Lens' DocumentIdentifier (Prelude.Maybe Prelude.Text)
documentIdentifier_targetType :: (Maybe Text -> f (Maybe Text))
-> DocumentIdentifier -> f DocumentIdentifier
documentIdentifier_targetType = (DocumentIdentifier -> Maybe Text)
-> (DocumentIdentifier -> Maybe Text -> DocumentIdentifier)
-> Lens
     DocumentIdentifier DocumentIdentifier (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentIdentifier' {Maybe Text
targetType :: Maybe Text
$sel:targetType:DocumentIdentifier' :: DocumentIdentifier -> Maybe Text
targetType} -> Maybe Text
targetType) (\s :: DocumentIdentifier
s@DocumentIdentifier' {} Maybe Text
a -> DocumentIdentifier
s {$sel:targetType:DocumentIdentifier' :: Maybe Text
targetType = Maybe Text
a} :: DocumentIdentifier)

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

-- | The operating system platform.
documentIdentifier_platformTypes :: Lens.Lens' DocumentIdentifier (Prelude.Maybe [PlatformType])
documentIdentifier_platformTypes :: (Maybe [PlatformType] -> f (Maybe [PlatformType]))
-> DocumentIdentifier -> f DocumentIdentifier
documentIdentifier_platformTypes = (DocumentIdentifier -> Maybe [PlatformType])
-> (DocumentIdentifier
    -> Maybe [PlatformType] -> DocumentIdentifier)
-> Lens
     DocumentIdentifier
     DocumentIdentifier
     (Maybe [PlatformType])
     (Maybe [PlatformType])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentIdentifier' {Maybe [PlatformType]
platformTypes :: Maybe [PlatformType]
$sel:platformTypes:DocumentIdentifier' :: DocumentIdentifier -> Maybe [PlatformType]
platformTypes} -> Maybe [PlatformType]
platformTypes) (\s :: DocumentIdentifier
s@DocumentIdentifier' {} Maybe [PlatformType]
a -> DocumentIdentifier
s {$sel:platformTypes:DocumentIdentifier' :: Maybe [PlatformType]
platformTypes = Maybe [PlatformType]
a} :: DocumentIdentifier) ((Maybe [PlatformType] -> f (Maybe [PlatformType]))
 -> DocumentIdentifier -> f DocumentIdentifier)
-> ((Maybe [PlatformType] -> f (Maybe [PlatformType]))
    -> Maybe [PlatformType] -> f (Maybe [PlatformType]))
-> (Maybe [PlatformType] -> f (Maybe [PlatformType]))
-> DocumentIdentifier
-> f DocumentIdentifier
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 the SSM document was created.
documentIdentifier_createdDate :: Lens.Lens' DocumentIdentifier (Prelude.Maybe Prelude.UTCTime)
documentIdentifier_createdDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentIdentifier -> f DocumentIdentifier
documentIdentifier_createdDate = (DocumentIdentifier -> Maybe POSIX)
-> (DocumentIdentifier -> Maybe POSIX -> DocumentIdentifier)
-> Lens
     DocumentIdentifier DocumentIdentifier (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentIdentifier' {Maybe POSIX
createdDate :: Maybe POSIX
$sel:createdDate:DocumentIdentifier' :: DocumentIdentifier -> Maybe POSIX
createdDate} -> Maybe POSIX
createdDate) (\s :: DocumentIdentifier
s@DocumentIdentifier' {} Maybe POSIX
a -> DocumentIdentifier
s {$sel:createdDate:DocumentIdentifier' :: Maybe POSIX
createdDate = Maybe POSIX
a} :: DocumentIdentifier) ((Maybe POSIX -> f (Maybe POSIX))
 -> DocumentIdentifier -> f DocumentIdentifier)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> DocumentIdentifier
-> f DocumentIdentifier
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.
documentIdentifier_documentFormat :: Lens.Lens' DocumentIdentifier (Prelude.Maybe DocumentFormat)
documentIdentifier_documentFormat :: (Maybe DocumentFormat -> f (Maybe DocumentFormat))
-> DocumentIdentifier -> f DocumentIdentifier
documentIdentifier_documentFormat = (DocumentIdentifier -> Maybe DocumentFormat)
-> (DocumentIdentifier
    -> Maybe DocumentFormat -> DocumentIdentifier)
-> Lens
     DocumentIdentifier
     DocumentIdentifier
     (Maybe DocumentFormat)
     (Maybe DocumentFormat)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DocumentIdentifier' {Maybe DocumentFormat
documentFormat :: Maybe DocumentFormat
$sel:documentFormat:DocumentIdentifier' :: DocumentIdentifier -> Maybe DocumentFormat
documentFormat} -> Maybe DocumentFormat
documentFormat) (\s :: DocumentIdentifier
s@DocumentIdentifier' {} Maybe DocumentFormat
a -> DocumentIdentifier
s {$sel:documentFormat:DocumentIdentifier' :: Maybe DocumentFormat
documentFormat = Maybe DocumentFormat
a} :: DocumentIdentifier)

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

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

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

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

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

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

instance Core.FromJSON DocumentIdentifier where
  parseJSON :: Value -> Parser DocumentIdentifier
parseJSON =
    String
-> (Object -> Parser DocumentIdentifier)
-> Value
-> Parser DocumentIdentifier
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"DocumentIdentifier"
      ( \Object
x ->
          Maybe DocumentType
-> Maybe Text
-> Maybe Text
-> Maybe ReviewStatus
-> Maybe Text
-> Maybe Text
-> Maybe [PlatformType]
-> Maybe POSIX
-> Maybe DocumentFormat
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe (NonEmpty DocumentRequires)
-> Maybe [Tag]
-> DocumentIdentifier
DocumentIdentifier'
            (Maybe DocumentType
 -> Maybe Text
 -> Maybe Text
 -> Maybe ReviewStatus
 -> Maybe Text
 -> Maybe Text
 -> Maybe [PlatformType]
 -> Maybe POSIX
 -> Maybe DocumentFormat
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe (NonEmpty DocumentRequires)
 -> Maybe [Tag]
 -> DocumentIdentifier)
-> Parser (Maybe DocumentType)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe ReviewStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
forall (f :: * -> *) a b. Functor 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 ReviewStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe ReviewStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 ReviewStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe Text)
-> Parser
     (Maybe ReviewStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 ReviewStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe ReviewStatus)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 Text
   -> Maybe Text
   -> Maybe [PlatformType]
   -> Maybe POSIX
   -> Maybe DocumentFormat
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe Text)
-> Parser
     (Maybe [PlatformType]
      -> Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe [PlatformType])
-> Parser
     (Maybe POSIX
      -> Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe DocumentFormat
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe DocumentFormat)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag]
      -> DocumentIdentifier)
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 (NonEmpty DocumentRequires)
   -> Maybe [Tag]
   -> DocumentIdentifier)
-> Parser (Maybe Text)
-> Parser
     (Maybe (NonEmpty DocumentRequires)
      -> Maybe [Tag] -> DocumentIdentifier)
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 (NonEmpty DocumentRequires)
   -> Maybe [Tag] -> DocumentIdentifier)
-> Parser (Maybe (NonEmpty DocumentRequires))
-> Parser (Maybe [Tag] -> DocumentIdentifier)
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 [Tag] -> DocumentIdentifier)
-> Parser (Maybe [Tag]) -> Parser DocumentIdentifier
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)
      )

instance Prelude.Hashable DocumentIdentifier

instance Prelude.NFData DocumentIdentifier