{-# 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.CreateAssociationBatchRequestEntry
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SSM.Types.CreateAssociationBatchRequestEntry where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SSM.Types.AlarmConfiguration
import Amazonka.SSM.Types.AssociationComplianceSeverity
import Amazonka.SSM.Types.AssociationSyncCompliance
import Amazonka.SSM.Types.InstanceAssociationOutputLocation
import Amazonka.SSM.Types.Target
import Amazonka.SSM.Types.TargetLocation

-- | Describes the association of a Amazon Web Services Systems Manager
-- document (SSM document) and a managed node.
--
-- /See:/ 'newCreateAssociationBatchRequestEntry' smart constructor.
data CreateAssociationBatchRequestEntry = CreateAssociationBatchRequestEntry'
  { CreateAssociationBatchRequestEntry -> Maybe AlarmConfiguration
alarmConfiguration :: Prelude.Maybe AlarmConfiguration,
    -- | By default, when you create a new associations, the system runs it
    -- immediately after it is created and then according to the schedule you
    -- specified. Specify this option if you don\'t want an association to run
    -- immediately after you create it. This parameter isn\'t supported for
    -- rate expressions.
    CreateAssociationBatchRequestEntry -> Maybe Bool
applyOnlyAtCronInterval :: Prelude.Maybe Prelude.Bool,
    -- | Specify a descriptive name for the association.
    CreateAssociationBatchRequestEntry -> Maybe Text
associationName :: Prelude.Maybe Prelude.Text,
    -- | Specify the target for the association. This target is required for
    -- associations that use an Automation runbook and target resources by
    -- using rate controls. Automation is a capability of Amazon Web Services
    -- Systems Manager.
    CreateAssociationBatchRequestEntry -> Maybe Text
automationTargetParameterName :: Prelude.Maybe Prelude.Text,
    -- | The names or Amazon Resource Names (ARNs) of the Change Calendar type
    -- documents your associations are gated under. The associations only run
    -- when that Change Calendar is open. For more information, see
    -- <https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar Amazon Web Services Systems Manager Change Calendar>.
    CreateAssociationBatchRequestEntry -> Maybe [Text]
calendarNames :: Prelude.Maybe [Prelude.Text],
    -- | The severity level to assign to the association.
    CreateAssociationBatchRequestEntry
-> Maybe AssociationComplianceSeverity
complianceSeverity :: Prelude.Maybe AssociationComplianceSeverity,
    -- | The document version.
    CreateAssociationBatchRequestEntry -> Maybe Text
documentVersion :: Prelude.Maybe Prelude.Text,
    -- | The managed node ID.
    --
    -- @InstanceId@ has been deprecated. To specify a managed node ID for an
    -- association, use the @Targets@ parameter. Requests that include the
    -- parameter @InstanceID@ with Systems Manager documents (SSM documents)
    -- that use schema version 2.0 or later will fail. In addition, if you use
    -- the parameter @InstanceId@, you can\'t use the parameters
    -- @AssociationName@, @DocumentVersion@, @MaxErrors@, @MaxConcurrency@,
    -- @OutputLocation@, or @ScheduleExpression@. To use these parameters, you
    -- must use the @Targets@ parameter.
    CreateAssociationBatchRequestEntry -> Maybe Text
instanceId :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of targets allowed to run the association at the same
    -- time. You can specify a number, for example 10, or a percentage of the
    -- target set, for example 10%. The default value is 100%, which means all
    -- targets run the association at the same time.
    --
    -- If a new managed node starts and attempts to run an association while
    -- Systems Manager is running @MaxConcurrency@ associations, the
    -- association is allowed to run. During the next association interval, the
    -- new managed node will process its association within the limit specified
    -- for @MaxConcurrency@.
    CreateAssociationBatchRequestEntry -> Maybe Text
maxConcurrency :: Prelude.Maybe Prelude.Text,
    -- | The number of errors that are allowed before the system stops sending
    -- requests to run the association on additional targets. You can specify
    -- either an absolute number of errors, for example 10, or a percentage of
    -- the target set, for example 10%. If you specify 3, for example, the
    -- system stops sending requests when the fourth error is received. If you
    -- specify 0, then the system stops sending requests after the first error
    -- is returned. If you run an association on 50 managed nodes and set
    -- @MaxError@ to 10%, then the system stops sending the request when the
    -- sixth error is received.
    --
    -- Executions that are already running an association when @MaxErrors@ is
    -- reached are allowed to complete, but some of these executions may fail
    -- as well. If you need to ensure that there won\'t be more than max-errors
    -- failed executions, set @MaxConcurrency@ to 1 so that executions proceed
    -- one at a time.
    CreateAssociationBatchRequestEntry -> Maybe Text
maxErrors :: Prelude.Maybe Prelude.Text,
    -- | An S3 bucket where you want to store the results of this request.
    CreateAssociationBatchRequestEntry
-> Maybe InstanceAssociationOutputLocation
outputLocation :: Prelude.Maybe InstanceAssociationOutputLocation,
    -- | A description of the parameters for a document.
    CreateAssociationBatchRequestEntry
-> Maybe (Sensitive (HashMap Text [Text]))
parameters :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text [Prelude.Text])),
    -- | A cron expression that specifies a schedule when the association runs.
    CreateAssociationBatchRequestEntry -> Maybe Text
scheduleExpression :: Prelude.Maybe Prelude.Text,
    -- | Number of days to wait after the scheduled day to run an association.
    CreateAssociationBatchRequestEntry -> Maybe Natural
scheduleOffset :: Prelude.Maybe Prelude.Natural,
    -- | The mode for generating association compliance. You can specify @AUTO@
    -- or @MANUAL@. In @AUTO@ mode, the system uses the status of the
    -- association execution to determine the compliance status. If the
    -- association execution runs successfully, then the association is
    -- @COMPLIANT@. If the association execution doesn\'t run successfully, the
    -- association is @NON-COMPLIANT@.
    --
    -- In @MANUAL@ mode, you must specify the @AssociationId@ as a parameter
    -- for the PutComplianceItems API operation. In this case, compliance data
    -- isn\'t managed by State Manager, a capability of Amazon Web Services
    -- Systems Manager. It is managed by your direct call to the
    -- PutComplianceItems API operation.
    --
    -- By default, all associations use @AUTO@ mode.
    CreateAssociationBatchRequestEntry
-> Maybe AssociationSyncCompliance
syncCompliance :: Prelude.Maybe AssociationSyncCompliance,
    -- | Use this action to create an association in multiple Regions and
    -- multiple accounts.
    CreateAssociationBatchRequestEntry
-> Maybe (NonEmpty TargetLocation)
targetLocations :: Prelude.Maybe (Prelude.NonEmpty TargetLocation),
    -- | A key-value mapping of document parameters to target resources. Both
    -- Targets and TargetMaps can\'t be specified together.
    CreateAssociationBatchRequestEntry -> Maybe [HashMap Text [Text]]
targetMaps :: Prelude.Maybe [Prelude.HashMap Prelude.Text [Prelude.Text]],
    -- | The managed nodes targeted by the request.
    CreateAssociationBatchRequestEntry -> Maybe [Target]
targets :: Prelude.Maybe [Target],
    -- | The name of the SSM document that contains the configuration information
    -- for the managed node. You can specify Command or Automation runbooks.
    --
    -- You can specify Amazon Web Services-predefined documents, documents you
    -- created, or a document that is shared with you from another account.
    --
    -- For SSM documents that are shared with you from other Amazon Web
    -- Services accounts, you must specify the complete SSM document ARN, in
    -- the following format:
    --
    -- @arn:aws:ssm:@/@region@/@:@/@account-id@/@:document\/@/@document-name@/@ @
    --
    -- For example:
    --
    -- @arn:aws:ssm:us-east-2:12345678912:document\/My-Shared-Document@
    --
    -- For Amazon Web Services-predefined documents and SSM documents you
    -- created in your account, you only need to specify the document name. For
    -- example, @AWS-ApplyPatchBaseline@ or @My-Document@.
    CreateAssociationBatchRequestEntry -> Text
name :: Prelude.Text
  }
  deriving (CreateAssociationBatchRequestEntry
-> CreateAssociationBatchRequestEntry -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateAssociationBatchRequestEntry
-> CreateAssociationBatchRequestEntry -> Bool
$c/= :: CreateAssociationBatchRequestEntry
-> CreateAssociationBatchRequestEntry -> Bool
== :: CreateAssociationBatchRequestEntry
-> CreateAssociationBatchRequestEntry -> Bool
$c== :: CreateAssociationBatchRequestEntry
-> CreateAssociationBatchRequestEntry -> Bool
Prelude.Eq, Int -> CreateAssociationBatchRequestEntry -> ShowS
[CreateAssociationBatchRequestEntry] -> ShowS
CreateAssociationBatchRequestEntry -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateAssociationBatchRequestEntry] -> ShowS
$cshowList :: [CreateAssociationBatchRequestEntry] -> ShowS
show :: CreateAssociationBatchRequestEntry -> String
$cshow :: CreateAssociationBatchRequestEntry -> String
showsPrec :: Int -> CreateAssociationBatchRequestEntry -> ShowS
$cshowsPrec :: Int -> CreateAssociationBatchRequestEntry -> ShowS
Prelude.Show, forall x.
Rep CreateAssociationBatchRequestEntry x
-> CreateAssociationBatchRequestEntry
forall x.
CreateAssociationBatchRequestEntry
-> Rep CreateAssociationBatchRequestEntry x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateAssociationBatchRequestEntry x
-> CreateAssociationBatchRequestEntry
$cfrom :: forall x.
CreateAssociationBatchRequestEntry
-> Rep CreateAssociationBatchRequestEntry x
Prelude.Generic)

-- |
-- Create a value of 'CreateAssociationBatchRequestEntry' 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:
--
-- 'alarmConfiguration', 'createAssociationBatchRequestEntry_alarmConfiguration' - Undocumented member.
--
-- 'applyOnlyAtCronInterval', 'createAssociationBatchRequestEntry_applyOnlyAtCronInterval' - By default, when you create a new associations, the system runs it
-- immediately after it is created and then according to the schedule you
-- specified. Specify this option if you don\'t want an association to run
-- immediately after you create it. This parameter isn\'t supported for
-- rate expressions.
--
-- 'associationName', 'createAssociationBatchRequestEntry_associationName' - Specify a descriptive name for the association.
--
-- 'automationTargetParameterName', 'createAssociationBatchRequestEntry_automationTargetParameterName' - Specify the target for the association. This target is required for
-- associations that use an Automation runbook and target resources by
-- using rate controls. Automation is a capability of Amazon Web Services
-- Systems Manager.
--
-- 'calendarNames', 'createAssociationBatchRequestEntry_calendarNames' - The names or Amazon Resource Names (ARNs) of the Change Calendar type
-- documents your associations are gated under. The associations only run
-- when that Change Calendar is open. For more information, see
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar Amazon Web Services Systems Manager Change Calendar>.
--
-- 'complianceSeverity', 'createAssociationBatchRequestEntry_complianceSeverity' - The severity level to assign to the association.
--
-- 'documentVersion', 'createAssociationBatchRequestEntry_documentVersion' - The document version.
--
-- 'instanceId', 'createAssociationBatchRequestEntry_instanceId' - The managed node ID.
--
-- @InstanceId@ has been deprecated. To specify a managed node ID for an
-- association, use the @Targets@ parameter. Requests that include the
-- parameter @InstanceID@ with Systems Manager documents (SSM documents)
-- that use schema version 2.0 or later will fail. In addition, if you use
-- the parameter @InstanceId@, you can\'t use the parameters
-- @AssociationName@, @DocumentVersion@, @MaxErrors@, @MaxConcurrency@,
-- @OutputLocation@, or @ScheduleExpression@. To use these parameters, you
-- must use the @Targets@ parameter.
--
-- 'maxConcurrency', 'createAssociationBatchRequestEntry_maxConcurrency' - The maximum number of targets allowed to run the association at the same
-- time. You can specify a number, for example 10, or a percentage of the
-- target set, for example 10%. The default value is 100%, which means all
-- targets run the association at the same time.
--
-- If a new managed node starts and attempts to run an association while
-- Systems Manager is running @MaxConcurrency@ associations, the
-- association is allowed to run. During the next association interval, the
-- new managed node will process its association within the limit specified
-- for @MaxConcurrency@.
--
-- 'maxErrors', 'createAssociationBatchRequestEntry_maxErrors' - The number of errors that are allowed before the system stops sending
-- requests to run the association on additional targets. You can specify
-- either an absolute number of errors, for example 10, or a percentage of
-- the target set, for example 10%. If you specify 3, for example, the
-- system stops sending requests when the fourth error is received. If you
-- specify 0, then the system stops sending requests after the first error
-- is returned. If you run an association on 50 managed nodes and set
-- @MaxError@ to 10%, then the system stops sending the request when the
-- sixth error is received.
--
-- Executions that are already running an association when @MaxErrors@ is
-- reached are allowed to complete, but some of these executions may fail
-- as well. If you need to ensure that there won\'t be more than max-errors
-- failed executions, set @MaxConcurrency@ to 1 so that executions proceed
-- one at a time.
--
-- 'outputLocation', 'createAssociationBatchRequestEntry_outputLocation' - An S3 bucket where you want to store the results of this request.
--
-- 'parameters', 'createAssociationBatchRequestEntry_parameters' - A description of the parameters for a document.
--
-- 'scheduleExpression', 'createAssociationBatchRequestEntry_scheduleExpression' - A cron expression that specifies a schedule when the association runs.
--
-- 'scheduleOffset', 'createAssociationBatchRequestEntry_scheduleOffset' - Number of days to wait after the scheduled day to run an association.
--
-- 'syncCompliance', 'createAssociationBatchRequestEntry_syncCompliance' - The mode for generating association compliance. You can specify @AUTO@
-- or @MANUAL@. In @AUTO@ mode, the system uses the status of the
-- association execution to determine the compliance status. If the
-- association execution runs successfully, then the association is
-- @COMPLIANT@. If the association execution doesn\'t run successfully, the
-- association is @NON-COMPLIANT@.
--
-- In @MANUAL@ mode, you must specify the @AssociationId@ as a parameter
-- for the PutComplianceItems API operation. In this case, compliance data
-- isn\'t managed by State Manager, a capability of Amazon Web Services
-- Systems Manager. It is managed by your direct call to the
-- PutComplianceItems API operation.
--
-- By default, all associations use @AUTO@ mode.
--
-- 'targetLocations', 'createAssociationBatchRequestEntry_targetLocations' - Use this action to create an association in multiple Regions and
-- multiple accounts.
--
-- 'targetMaps', 'createAssociationBatchRequestEntry_targetMaps' - A key-value mapping of document parameters to target resources. Both
-- Targets and TargetMaps can\'t be specified together.
--
-- 'targets', 'createAssociationBatchRequestEntry_targets' - The managed nodes targeted by the request.
--
-- 'name', 'createAssociationBatchRequestEntry_name' - The name of the SSM document that contains the configuration information
-- for the managed node. You can specify Command or Automation runbooks.
--
-- You can specify Amazon Web Services-predefined documents, documents you
-- created, or a document that is shared with you from another account.
--
-- For SSM documents that are shared with you from other Amazon Web
-- Services accounts, you must specify the complete SSM document ARN, in
-- the following format:
--
-- @arn:aws:ssm:@/@region@/@:@/@account-id@/@:document\/@/@document-name@/@ @
--
-- For example:
--
-- @arn:aws:ssm:us-east-2:12345678912:document\/My-Shared-Document@
--
-- For Amazon Web Services-predefined documents and SSM documents you
-- created in your account, you only need to specify the document name. For
-- example, @AWS-ApplyPatchBaseline@ or @My-Document@.
newCreateAssociationBatchRequestEntry ::
  -- | 'name'
  Prelude.Text ->
  CreateAssociationBatchRequestEntry
newCreateAssociationBatchRequestEntry :: Text -> CreateAssociationBatchRequestEntry
newCreateAssociationBatchRequestEntry Text
pName_ =
  CreateAssociationBatchRequestEntry'
    { $sel:alarmConfiguration:CreateAssociationBatchRequestEntry' :: Maybe AlarmConfiguration
alarmConfiguration =
        forall a. Maybe a
Prelude.Nothing,
      $sel:applyOnlyAtCronInterval:CreateAssociationBatchRequestEntry' :: Maybe Bool
applyOnlyAtCronInterval =
        forall a. Maybe a
Prelude.Nothing,
      $sel:associationName:CreateAssociationBatchRequestEntry' :: Maybe Text
associationName = forall a. Maybe a
Prelude.Nothing,
      $sel:automationTargetParameterName:CreateAssociationBatchRequestEntry' :: Maybe Text
automationTargetParameterName =
        forall a. Maybe a
Prelude.Nothing,
      $sel:calendarNames:CreateAssociationBatchRequestEntry' :: Maybe [Text]
calendarNames = forall a. Maybe a
Prelude.Nothing,
      $sel:complianceSeverity:CreateAssociationBatchRequestEntry' :: Maybe AssociationComplianceSeverity
complianceSeverity = forall a. Maybe a
Prelude.Nothing,
      $sel:documentVersion:CreateAssociationBatchRequestEntry' :: Maybe Text
documentVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceId:CreateAssociationBatchRequestEntry' :: Maybe Text
instanceId = forall a. Maybe a
Prelude.Nothing,
      $sel:maxConcurrency:CreateAssociationBatchRequestEntry' :: Maybe Text
maxConcurrency = forall a. Maybe a
Prelude.Nothing,
      $sel:maxErrors:CreateAssociationBatchRequestEntry' :: Maybe Text
maxErrors = forall a. Maybe a
Prelude.Nothing,
      $sel:outputLocation:CreateAssociationBatchRequestEntry' :: Maybe InstanceAssociationOutputLocation
outputLocation = forall a. Maybe a
Prelude.Nothing,
      $sel:parameters:CreateAssociationBatchRequestEntry' :: Maybe (Sensitive (HashMap Text [Text]))
parameters = forall a. Maybe a
Prelude.Nothing,
      $sel:scheduleExpression:CreateAssociationBatchRequestEntry' :: Maybe Text
scheduleExpression = forall a. Maybe a
Prelude.Nothing,
      $sel:scheduleOffset:CreateAssociationBatchRequestEntry' :: Maybe Natural
scheduleOffset = forall a. Maybe a
Prelude.Nothing,
      $sel:syncCompliance:CreateAssociationBatchRequestEntry' :: Maybe AssociationSyncCompliance
syncCompliance = forall a. Maybe a
Prelude.Nothing,
      $sel:targetLocations:CreateAssociationBatchRequestEntry' :: Maybe (NonEmpty TargetLocation)
targetLocations = forall a. Maybe a
Prelude.Nothing,
      $sel:targetMaps:CreateAssociationBatchRequestEntry' :: Maybe [HashMap Text [Text]]
targetMaps = forall a. Maybe a
Prelude.Nothing,
      $sel:targets:CreateAssociationBatchRequestEntry' :: Maybe [Target]
targets = forall a. Maybe a
Prelude.Nothing,
      $sel:name:CreateAssociationBatchRequestEntry' :: Text
name = Text
pName_
    }

-- | Undocumented member.
createAssociationBatchRequestEntry_alarmConfiguration :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe AlarmConfiguration)
createAssociationBatchRequestEntry_alarmConfiguration :: Lens' CreateAssociationBatchRequestEntry (Maybe AlarmConfiguration)
createAssociationBatchRequestEntry_alarmConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe AlarmConfiguration
alarmConfiguration :: Maybe AlarmConfiguration
$sel:alarmConfiguration:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe AlarmConfiguration
alarmConfiguration} -> Maybe AlarmConfiguration
alarmConfiguration) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe AlarmConfiguration
a -> CreateAssociationBatchRequestEntry
s {$sel:alarmConfiguration:CreateAssociationBatchRequestEntry' :: Maybe AlarmConfiguration
alarmConfiguration = Maybe AlarmConfiguration
a} :: CreateAssociationBatchRequestEntry)

-- | By default, when you create a new associations, the system runs it
-- immediately after it is created and then according to the schedule you
-- specified. Specify this option if you don\'t want an association to run
-- immediately after you create it. This parameter isn\'t supported for
-- rate expressions.
createAssociationBatchRequestEntry_applyOnlyAtCronInterval :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe Prelude.Bool)
createAssociationBatchRequestEntry_applyOnlyAtCronInterval :: Lens' CreateAssociationBatchRequestEntry (Maybe Bool)
createAssociationBatchRequestEntry_applyOnlyAtCronInterval = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe Bool
applyOnlyAtCronInterval :: Maybe Bool
$sel:applyOnlyAtCronInterval:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Bool
applyOnlyAtCronInterval} -> Maybe Bool
applyOnlyAtCronInterval) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe Bool
a -> CreateAssociationBatchRequestEntry
s {$sel:applyOnlyAtCronInterval:CreateAssociationBatchRequestEntry' :: Maybe Bool
applyOnlyAtCronInterval = Maybe Bool
a} :: CreateAssociationBatchRequestEntry)

-- | Specify a descriptive name for the association.
createAssociationBatchRequestEntry_associationName :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe Prelude.Text)
createAssociationBatchRequestEntry_associationName :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
createAssociationBatchRequestEntry_associationName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe Text
associationName :: Maybe Text
$sel:associationName:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
associationName} -> Maybe Text
associationName) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe Text
a -> CreateAssociationBatchRequestEntry
s {$sel:associationName:CreateAssociationBatchRequestEntry' :: Maybe Text
associationName = Maybe Text
a} :: CreateAssociationBatchRequestEntry)

-- | Specify the target for the association. This target is required for
-- associations that use an Automation runbook and target resources by
-- using rate controls. Automation is a capability of Amazon Web Services
-- Systems Manager.
createAssociationBatchRequestEntry_automationTargetParameterName :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe Prelude.Text)
createAssociationBatchRequestEntry_automationTargetParameterName :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
createAssociationBatchRequestEntry_automationTargetParameterName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe Text
automationTargetParameterName :: Maybe Text
$sel:automationTargetParameterName:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
automationTargetParameterName} -> Maybe Text
automationTargetParameterName) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe Text
a -> CreateAssociationBatchRequestEntry
s {$sel:automationTargetParameterName:CreateAssociationBatchRequestEntry' :: Maybe Text
automationTargetParameterName = Maybe Text
a} :: CreateAssociationBatchRequestEntry)

-- | The names or Amazon Resource Names (ARNs) of the Change Calendar type
-- documents your associations are gated under. The associations only run
-- when that Change Calendar is open. For more information, see
-- <https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar Amazon Web Services Systems Manager Change Calendar>.
createAssociationBatchRequestEntry_calendarNames :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe [Prelude.Text])
createAssociationBatchRequestEntry_calendarNames :: Lens' CreateAssociationBatchRequestEntry (Maybe [Text])
createAssociationBatchRequestEntry_calendarNames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe [Text]
calendarNames :: Maybe [Text]
$sel:calendarNames:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [Text]
calendarNames} -> Maybe [Text]
calendarNames) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe [Text]
a -> CreateAssociationBatchRequestEntry
s {$sel:calendarNames:CreateAssociationBatchRequestEntry' :: Maybe [Text]
calendarNames = Maybe [Text]
a} :: CreateAssociationBatchRequestEntry) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The severity level to assign to the association.
createAssociationBatchRequestEntry_complianceSeverity :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe AssociationComplianceSeverity)
createAssociationBatchRequestEntry_complianceSeverity :: Lens'
  CreateAssociationBatchRequestEntry
  (Maybe AssociationComplianceSeverity)
createAssociationBatchRequestEntry_complianceSeverity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe AssociationComplianceSeverity
complianceSeverity :: Maybe AssociationComplianceSeverity
$sel:complianceSeverity:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe AssociationComplianceSeverity
complianceSeverity} -> Maybe AssociationComplianceSeverity
complianceSeverity) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe AssociationComplianceSeverity
a -> CreateAssociationBatchRequestEntry
s {$sel:complianceSeverity:CreateAssociationBatchRequestEntry' :: Maybe AssociationComplianceSeverity
complianceSeverity = Maybe AssociationComplianceSeverity
a} :: CreateAssociationBatchRequestEntry)

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

-- | The managed node ID.
--
-- @InstanceId@ has been deprecated. To specify a managed node ID for an
-- association, use the @Targets@ parameter. Requests that include the
-- parameter @InstanceID@ with Systems Manager documents (SSM documents)
-- that use schema version 2.0 or later will fail. In addition, if you use
-- the parameter @InstanceId@, you can\'t use the parameters
-- @AssociationName@, @DocumentVersion@, @MaxErrors@, @MaxConcurrency@,
-- @OutputLocation@, or @ScheduleExpression@. To use these parameters, you
-- must use the @Targets@ parameter.
createAssociationBatchRequestEntry_instanceId :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe Prelude.Text)
createAssociationBatchRequestEntry_instanceId :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
createAssociationBatchRequestEntry_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe Text
instanceId :: Maybe Text
$sel:instanceId:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
instanceId} -> Maybe Text
instanceId) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe Text
a -> CreateAssociationBatchRequestEntry
s {$sel:instanceId:CreateAssociationBatchRequestEntry' :: Maybe Text
instanceId = Maybe Text
a} :: CreateAssociationBatchRequestEntry)

-- | The maximum number of targets allowed to run the association at the same
-- time. You can specify a number, for example 10, or a percentage of the
-- target set, for example 10%. The default value is 100%, which means all
-- targets run the association at the same time.
--
-- If a new managed node starts and attempts to run an association while
-- Systems Manager is running @MaxConcurrency@ associations, the
-- association is allowed to run. During the next association interval, the
-- new managed node will process its association within the limit specified
-- for @MaxConcurrency@.
createAssociationBatchRequestEntry_maxConcurrency :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe Prelude.Text)
createAssociationBatchRequestEntry_maxConcurrency :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
createAssociationBatchRequestEntry_maxConcurrency = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe Text
maxConcurrency :: Maybe Text
$sel:maxConcurrency:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
maxConcurrency} -> Maybe Text
maxConcurrency) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe Text
a -> CreateAssociationBatchRequestEntry
s {$sel:maxConcurrency:CreateAssociationBatchRequestEntry' :: Maybe Text
maxConcurrency = Maybe Text
a} :: CreateAssociationBatchRequestEntry)

-- | The number of errors that are allowed before the system stops sending
-- requests to run the association on additional targets. You can specify
-- either an absolute number of errors, for example 10, or a percentage of
-- the target set, for example 10%. If you specify 3, for example, the
-- system stops sending requests when the fourth error is received. If you
-- specify 0, then the system stops sending requests after the first error
-- is returned. If you run an association on 50 managed nodes and set
-- @MaxError@ to 10%, then the system stops sending the request when the
-- sixth error is received.
--
-- Executions that are already running an association when @MaxErrors@ is
-- reached are allowed to complete, but some of these executions may fail
-- as well. If you need to ensure that there won\'t be more than max-errors
-- failed executions, set @MaxConcurrency@ to 1 so that executions proceed
-- one at a time.
createAssociationBatchRequestEntry_maxErrors :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe Prelude.Text)
createAssociationBatchRequestEntry_maxErrors :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
createAssociationBatchRequestEntry_maxErrors = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe Text
maxErrors :: Maybe Text
$sel:maxErrors:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
maxErrors} -> Maybe Text
maxErrors) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe Text
a -> CreateAssociationBatchRequestEntry
s {$sel:maxErrors:CreateAssociationBatchRequestEntry' :: Maybe Text
maxErrors = Maybe Text
a} :: CreateAssociationBatchRequestEntry)

-- | An S3 bucket where you want to store the results of this request.
createAssociationBatchRequestEntry_outputLocation :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe InstanceAssociationOutputLocation)
createAssociationBatchRequestEntry_outputLocation :: Lens'
  CreateAssociationBatchRequestEntry
  (Maybe InstanceAssociationOutputLocation)
createAssociationBatchRequestEntry_outputLocation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe InstanceAssociationOutputLocation
outputLocation :: Maybe InstanceAssociationOutputLocation
$sel:outputLocation:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe InstanceAssociationOutputLocation
outputLocation} -> Maybe InstanceAssociationOutputLocation
outputLocation) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe InstanceAssociationOutputLocation
a -> CreateAssociationBatchRequestEntry
s {$sel:outputLocation:CreateAssociationBatchRequestEntry' :: Maybe InstanceAssociationOutputLocation
outputLocation = Maybe InstanceAssociationOutputLocation
a} :: CreateAssociationBatchRequestEntry)

-- | A description of the parameters for a document.
createAssociationBatchRequestEntry_parameters :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe (Prelude.HashMap Prelude.Text [Prelude.Text]))
createAssociationBatchRequestEntry_parameters :: Lens'
  CreateAssociationBatchRequestEntry (Maybe (HashMap Text [Text]))
createAssociationBatchRequestEntry_parameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe (Sensitive (HashMap Text [Text]))
parameters :: Maybe (Sensitive (HashMap Text [Text]))
$sel:parameters:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe (Sensitive (HashMap Text [Text]))
parameters} -> Maybe (Sensitive (HashMap Text [Text]))
parameters) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe (Sensitive (HashMap Text [Text]))
a -> CreateAssociationBatchRequestEntry
s {$sel:parameters:CreateAssociationBatchRequestEntry' :: Maybe (Sensitive (HashMap Text [Text]))
parameters = Maybe (Sensitive (HashMap Text [Text]))
a} :: CreateAssociationBatchRequestEntry) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping (forall a. Iso' (Sensitive a) a
Data._Sensitive forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced)

-- | A cron expression that specifies a schedule when the association runs.
createAssociationBatchRequestEntry_scheduleExpression :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe Prelude.Text)
createAssociationBatchRequestEntry_scheduleExpression :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
createAssociationBatchRequestEntry_scheduleExpression = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe Text
scheduleExpression :: Maybe Text
$sel:scheduleExpression:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
scheduleExpression} -> Maybe Text
scheduleExpression) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe Text
a -> CreateAssociationBatchRequestEntry
s {$sel:scheduleExpression:CreateAssociationBatchRequestEntry' :: Maybe Text
scheduleExpression = Maybe Text
a} :: CreateAssociationBatchRequestEntry)

-- | Number of days to wait after the scheduled day to run an association.
createAssociationBatchRequestEntry_scheduleOffset :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe Prelude.Natural)
createAssociationBatchRequestEntry_scheduleOffset :: Lens' CreateAssociationBatchRequestEntry (Maybe Natural)
createAssociationBatchRequestEntry_scheduleOffset = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe Natural
scheduleOffset :: Maybe Natural
$sel:scheduleOffset:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Natural
scheduleOffset} -> Maybe Natural
scheduleOffset) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe Natural
a -> CreateAssociationBatchRequestEntry
s {$sel:scheduleOffset:CreateAssociationBatchRequestEntry' :: Maybe Natural
scheduleOffset = Maybe Natural
a} :: CreateAssociationBatchRequestEntry)

-- | The mode for generating association compliance. You can specify @AUTO@
-- or @MANUAL@. In @AUTO@ mode, the system uses the status of the
-- association execution to determine the compliance status. If the
-- association execution runs successfully, then the association is
-- @COMPLIANT@. If the association execution doesn\'t run successfully, the
-- association is @NON-COMPLIANT@.
--
-- In @MANUAL@ mode, you must specify the @AssociationId@ as a parameter
-- for the PutComplianceItems API operation. In this case, compliance data
-- isn\'t managed by State Manager, a capability of Amazon Web Services
-- Systems Manager. It is managed by your direct call to the
-- PutComplianceItems API operation.
--
-- By default, all associations use @AUTO@ mode.
createAssociationBatchRequestEntry_syncCompliance :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe AssociationSyncCompliance)
createAssociationBatchRequestEntry_syncCompliance :: Lens'
  CreateAssociationBatchRequestEntry
  (Maybe AssociationSyncCompliance)
createAssociationBatchRequestEntry_syncCompliance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe AssociationSyncCompliance
syncCompliance :: Maybe AssociationSyncCompliance
$sel:syncCompliance:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe AssociationSyncCompliance
syncCompliance} -> Maybe AssociationSyncCompliance
syncCompliance) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe AssociationSyncCompliance
a -> CreateAssociationBatchRequestEntry
s {$sel:syncCompliance:CreateAssociationBatchRequestEntry' :: Maybe AssociationSyncCompliance
syncCompliance = Maybe AssociationSyncCompliance
a} :: CreateAssociationBatchRequestEntry)

-- | Use this action to create an association in multiple Regions and
-- multiple accounts.
createAssociationBatchRequestEntry_targetLocations :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe (Prelude.NonEmpty TargetLocation))
createAssociationBatchRequestEntry_targetLocations :: Lens'
  CreateAssociationBatchRequestEntry
  (Maybe (NonEmpty TargetLocation))
createAssociationBatchRequestEntry_targetLocations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe (NonEmpty TargetLocation)
targetLocations :: Maybe (NonEmpty TargetLocation)
$sel:targetLocations:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe (NonEmpty TargetLocation)
targetLocations} -> Maybe (NonEmpty TargetLocation)
targetLocations) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe (NonEmpty TargetLocation)
a -> CreateAssociationBatchRequestEntry
s {$sel:targetLocations:CreateAssociationBatchRequestEntry' :: Maybe (NonEmpty TargetLocation)
targetLocations = Maybe (NonEmpty TargetLocation)
a} :: CreateAssociationBatchRequestEntry) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A key-value mapping of document parameters to target resources. Both
-- Targets and TargetMaps can\'t be specified together.
createAssociationBatchRequestEntry_targetMaps :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe [Prelude.HashMap Prelude.Text [Prelude.Text]])
createAssociationBatchRequestEntry_targetMaps :: Lens'
  CreateAssociationBatchRequestEntry (Maybe [HashMap Text [Text]])
createAssociationBatchRequestEntry_targetMaps = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe [HashMap Text [Text]]
targetMaps :: Maybe [HashMap Text [Text]]
$sel:targetMaps:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [HashMap Text [Text]]
targetMaps} -> Maybe [HashMap Text [Text]]
targetMaps) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe [HashMap Text [Text]]
a -> CreateAssociationBatchRequestEntry
s {$sel:targetMaps:CreateAssociationBatchRequestEntry' :: Maybe [HashMap Text [Text]]
targetMaps = Maybe [HashMap Text [Text]]
a} :: CreateAssociationBatchRequestEntry) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The managed nodes targeted by the request.
createAssociationBatchRequestEntry_targets :: Lens.Lens' CreateAssociationBatchRequestEntry (Prelude.Maybe [Target])
createAssociationBatchRequestEntry_targets :: Lens' CreateAssociationBatchRequestEntry (Maybe [Target])
createAssociationBatchRequestEntry_targets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Maybe [Target]
targets :: Maybe [Target]
$sel:targets:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [Target]
targets} -> Maybe [Target]
targets) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Maybe [Target]
a -> CreateAssociationBatchRequestEntry
s {$sel:targets:CreateAssociationBatchRequestEntry' :: Maybe [Target]
targets = Maybe [Target]
a} :: CreateAssociationBatchRequestEntry) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the SSM document that contains the configuration information
-- for the managed node. You can specify Command or Automation runbooks.
--
-- You can specify Amazon Web Services-predefined documents, documents you
-- created, or a document that is shared with you from another account.
--
-- For SSM documents that are shared with you from other Amazon Web
-- Services accounts, you must specify the complete SSM document ARN, in
-- the following format:
--
-- @arn:aws:ssm:@/@region@/@:@/@account-id@/@:document\/@/@document-name@/@ @
--
-- For example:
--
-- @arn:aws:ssm:us-east-2:12345678912:document\/My-Shared-Document@
--
-- For Amazon Web Services-predefined documents and SSM documents you
-- created in your account, you only need to specify the document name. For
-- example, @AWS-ApplyPatchBaseline@ or @My-Document@.
createAssociationBatchRequestEntry_name :: Lens.Lens' CreateAssociationBatchRequestEntry Prelude.Text
createAssociationBatchRequestEntry_name :: Lens' CreateAssociationBatchRequestEntry Text
createAssociationBatchRequestEntry_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateAssociationBatchRequestEntry' {Text
name :: Text
$sel:name:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Text
name} -> Text
name) (\s :: CreateAssociationBatchRequestEntry
s@CreateAssociationBatchRequestEntry' {} Text
a -> CreateAssociationBatchRequestEntry
s {$sel:name:CreateAssociationBatchRequestEntry' :: Text
name = Text
a} :: CreateAssociationBatchRequestEntry)

instance
  Data.FromJSON
    CreateAssociationBatchRequestEntry
  where
  parseJSON :: Value -> Parser CreateAssociationBatchRequestEntry
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"CreateAssociationBatchRequestEntry"
      ( \Object
x ->
          Maybe AlarmConfiguration
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe AssociationComplianceSeverity
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InstanceAssociationOutputLocation
-> Maybe (Sensitive (HashMap Text [Text]))
-> Maybe Text
-> Maybe Natural
-> Maybe AssociationSyncCompliance
-> Maybe (NonEmpty TargetLocation)
-> Maybe [HashMap Text [Text]]
-> Maybe [Target]
-> Text
-> CreateAssociationBatchRequestEntry
CreateAssociationBatchRequestEntry'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AlarmConfiguration")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ApplyOnlyAtCronInterval")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AssociationName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AutomationTargetParameterName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CalendarNames" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ComplianceSeverity")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DocumentVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InstanceId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MaxConcurrency")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MaxErrors")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"OutputLocation")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Parameters" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ScheduleExpression")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ScheduleOffset")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SyncCompliance")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"TargetLocations")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"TargetMaps" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Targets" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Name")
      )

instance
  Prelude.Hashable
    CreateAssociationBatchRequestEntry
  where
  hashWithSalt :: Int -> CreateAssociationBatchRequestEntry -> Int
hashWithSalt
    Int
_salt
    CreateAssociationBatchRequestEntry' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [HashMap Text [Text]]
Maybe [Target]
Maybe (NonEmpty TargetLocation)
Maybe Text
Maybe (Sensitive (HashMap Text [Text]))
Maybe AlarmConfiguration
Maybe AssociationComplianceSeverity
Maybe AssociationSyncCompliance
Maybe InstanceAssociationOutputLocation
Text
name :: Text
targets :: Maybe [Target]
targetMaps :: Maybe [HashMap Text [Text]]
targetLocations :: Maybe (NonEmpty TargetLocation)
syncCompliance :: Maybe AssociationSyncCompliance
scheduleOffset :: Maybe Natural
scheduleExpression :: Maybe Text
parameters :: Maybe (Sensitive (HashMap Text [Text]))
outputLocation :: Maybe InstanceAssociationOutputLocation
maxErrors :: Maybe Text
maxConcurrency :: Maybe Text
instanceId :: Maybe Text
documentVersion :: Maybe Text
complianceSeverity :: Maybe AssociationComplianceSeverity
calendarNames :: Maybe [Text]
automationTargetParameterName :: Maybe Text
associationName :: Maybe Text
applyOnlyAtCronInterval :: Maybe Bool
alarmConfiguration :: Maybe AlarmConfiguration
$sel:name:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Text
$sel:targets:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [Target]
$sel:targetMaps:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [HashMap Text [Text]]
$sel:targetLocations:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe (NonEmpty TargetLocation)
$sel:syncCompliance:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe AssociationSyncCompliance
$sel:scheduleOffset:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Natural
$sel:scheduleExpression:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:parameters:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe (Sensitive (HashMap Text [Text]))
$sel:outputLocation:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe InstanceAssociationOutputLocation
$sel:maxErrors:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:maxConcurrency:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:instanceId:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:documentVersion:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:complianceSeverity:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe AssociationComplianceSeverity
$sel:calendarNames:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [Text]
$sel:automationTargetParameterName:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:associationName:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:applyOnlyAtCronInterval:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Bool
$sel:alarmConfiguration:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe AlarmConfiguration
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AlarmConfiguration
alarmConfiguration
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
applyOnlyAtCronInterval
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
associationName
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
automationTargetParameterName
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
calendarNames
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AssociationComplianceSeverity
complianceSeverity
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
documentVersion
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
maxConcurrency
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
maxErrors
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceAssociationOutputLocation
outputLocation
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive (HashMap Text [Text]))
parameters
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
scheduleExpression
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
scheduleOffset
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AssociationSyncCompliance
syncCompliance
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty TargetLocation)
targetLocations
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HashMap Text [Text]]
targetMaps
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Target]
targets
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance
  Prelude.NFData
    CreateAssociationBatchRequestEntry
  where
  rnf :: CreateAssociationBatchRequestEntry -> ()
rnf CreateAssociationBatchRequestEntry' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [HashMap Text [Text]]
Maybe [Target]
Maybe (NonEmpty TargetLocation)
Maybe Text
Maybe (Sensitive (HashMap Text [Text]))
Maybe AlarmConfiguration
Maybe AssociationComplianceSeverity
Maybe AssociationSyncCompliance
Maybe InstanceAssociationOutputLocation
Text
name :: Text
targets :: Maybe [Target]
targetMaps :: Maybe [HashMap Text [Text]]
targetLocations :: Maybe (NonEmpty TargetLocation)
syncCompliance :: Maybe AssociationSyncCompliance
scheduleOffset :: Maybe Natural
scheduleExpression :: Maybe Text
parameters :: Maybe (Sensitive (HashMap Text [Text]))
outputLocation :: Maybe InstanceAssociationOutputLocation
maxErrors :: Maybe Text
maxConcurrency :: Maybe Text
instanceId :: Maybe Text
documentVersion :: Maybe Text
complianceSeverity :: Maybe AssociationComplianceSeverity
calendarNames :: Maybe [Text]
automationTargetParameterName :: Maybe Text
associationName :: Maybe Text
applyOnlyAtCronInterval :: Maybe Bool
alarmConfiguration :: Maybe AlarmConfiguration
$sel:name:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Text
$sel:targets:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [Target]
$sel:targetMaps:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [HashMap Text [Text]]
$sel:targetLocations:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe (NonEmpty TargetLocation)
$sel:syncCompliance:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe AssociationSyncCompliance
$sel:scheduleOffset:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Natural
$sel:scheduleExpression:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:parameters:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe (Sensitive (HashMap Text [Text]))
$sel:outputLocation:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe InstanceAssociationOutputLocation
$sel:maxErrors:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:maxConcurrency:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:instanceId:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:documentVersion:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:complianceSeverity:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe AssociationComplianceSeverity
$sel:calendarNames:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [Text]
$sel:automationTargetParameterName:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:associationName:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:applyOnlyAtCronInterval:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Bool
$sel:alarmConfiguration:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe AlarmConfiguration
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AlarmConfiguration
alarmConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
applyOnlyAtCronInterval
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
associationName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
automationTargetParameterName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
calendarNames
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AssociationComplianceSeverity
complianceSeverity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
documentVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
maxConcurrency
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
maxErrors
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceAssociationOutputLocation
outputLocation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive (HashMap Text [Text]))
parameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
scheduleExpression
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
scheduleOffset
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AssociationSyncCompliance
syncCompliance
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty TargetLocation)
targetLocations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HashMap Text [Text]]
targetMaps
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Target]
targets
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name

instance
  Data.ToJSON
    CreateAssociationBatchRequestEntry
  where
  toJSON :: CreateAssociationBatchRequestEntry -> Value
toJSON CreateAssociationBatchRequestEntry' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe [HashMap Text [Text]]
Maybe [Target]
Maybe (NonEmpty TargetLocation)
Maybe Text
Maybe (Sensitive (HashMap Text [Text]))
Maybe AlarmConfiguration
Maybe AssociationComplianceSeverity
Maybe AssociationSyncCompliance
Maybe InstanceAssociationOutputLocation
Text
name :: Text
targets :: Maybe [Target]
targetMaps :: Maybe [HashMap Text [Text]]
targetLocations :: Maybe (NonEmpty TargetLocation)
syncCompliance :: Maybe AssociationSyncCompliance
scheduleOffset :: Maybe Natural
scheduleExpression :: Maybe Text
parameters :: Maybe (Sensitive (HashMap Text [Text]))
outputLocation :: Maybe InstanceAssociationOutputLocation
maxErrors :: Maybe Text
maxConcurrency :: Maybe Text
instanceId :: Maybe Text
documentVersion :: Maybe Text
complianceSeverity :: Maybe AssociationComplianceSeverity
calendarNames :: Maybe [Text]
automationTargetParameterName :: Maybe Text
associationName :: Maybe Text
applyOnlyAtCronInterval :: Maybe Bool
alarmConfiguration :: Maybe AlarmConfiguration
$sel:name:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Text
$sel:targets:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [Target]
$sel:targetMaps:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [HashMap Text [Text]]
$sel:targetLocations:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe (NonEmpty TargetLocation)
$sel:syncCompliance:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe AssociationSyncCompliance
$sel:scheduleOffset:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Natural
$sel:scheduleExpression:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:parameters:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe (Sensitive (HashMap Text [Text]))
$sel:outputLocation:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe InstanceAssociationOutputLocation
$sel:maxErrors:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:maxConcurrency:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:instanceId:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:documentVersion:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:complianceSeverity:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry
-> Maybe AssociationComplianceSeverity
$sel:calendarNames:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe [Text]
$sel:automationTargetParameterName:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:associationName:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Text
$sel:applyOnlyAtCronInterval:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe Bool
$sel:alarmConfiguration:CreateAssociationBatchRequestEntry' :: CreateAssociationBatchRequestEntry -> Maybe AlarmConfiguration
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AlarmConfiguration" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AlarmConfiguration
alarmConfiguration,
            (Key
"ApplyOnlyAtCronInterval" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
applyOnlyAtCronInterval,
            (Key
"AssociationName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
associationName,
            (Key
"AutomationTargetParameterName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
automationTargetParameterName,
            (Key
"CalendarNames" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
calendarNames,
            (Key
"ComplianceSeverity" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AssociationComplianceSeverity
complianceSeverity,
            (Key
"DocumentVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
documentVersion,
            (Key
"InstanceId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
instanceId,
            (Key
"MaxConcurrency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
maxConcurrency,
            (Key
"MaxErrors" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
maxErrors,
            (Key
"OutputLocation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe InstanceAssociationOutputLocation
outputLocation,
            (Key
"Parameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive (HashMap Text [Text]))
parameters,
            (Key
"ScheduleExpression" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
scheduleExpression,
            (Key
"ScheduleOffset" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
scheduleOffset,
            (Key
"SyncCompliance" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AssociationSyncCompliance
syncCompliance,
            (Key
"TargetLocations" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty TargetLocation)
targetLocations,
            (Key
"TargetMaps" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [HashMap Text [Text]]
targetMaps,
            (Key
"Targets" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Target]
targets,
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name)
          ]
      )