{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.CloudWatchEvents.RemoveTargets -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Removes the specified targets from the specified rule. When the rule is -- triggered, those targets are no longer be invoked. -- -- A successful execution of @RemoveTargets@ doesn\'t guarantee all targets -- are removed from the rule, it means that the target(s) listed in the -- request are removed. -- -- When you remove a target, when the associated rule triggers, removed -- targets might continue to be invoked. Allow a short period of time for -- changes to take effect. -- -- This action can partially fail if too many requests are made at the same -- time. If that happens, @FailedEntryCount@ is non-zero in the response -- and each entry in @FailedEntries@ provides the ID of the failed target -- and the error code. module Amazonka.CloudWatchEvents.RemoveTargets ( -- * Creating a Request RemoveTargets (..), newRemoveTargets, -- * Request Lenses removeTargets_eventBusName, removeTargets_force, removeTargets_rule, removeTargets_ids, -- * Destructuring the Response RemoveTargetsResponse (..), newRemoveTargetsResponse, -- * Response Lenses removeTargetsResponse_failedEntries, removeTargetsResponse_failedEntryCount, removeTargetsResponse_httpStatus, ) where import Amazonka.CloudWatchEvents.Types 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 qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newRemoveTargets' smart constructor. data RemoveTargets = RemoveTargets' { -- | The name or ARN of the event bus associated with the rule. If you omit -- this, the default event bus is used. eventBusName :: Prelude.Maybe Prelude.Text, -- | If this is a managed rule, created by an Amazon Web Services service on -- your behalf, you must specify @Force@ as @True@ to remove targets. This -- parameter is ignored for rules that are not managed rules. You can check -- whether a rule is a managed rule by using @DescribeRule@ or @ListRules@ -- and checking the @ManagedBy@ field of the response. force :: Prelude.Maybe Prelude.Bool, -- | The name of the rule. rule :: Prelude.Text, -- | The IDs of the targets to remove from the rule. ids :: Prelude.NonEmpty Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'RemoveTargets' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'eventBusName', 'removeTargets_eventBusName' - The name or ARN of the event bus associated with the rule. If you omit -- this, the default event bus is used. -- -- 'force', 'removeTargets_force' - If this is a managed rule, created by an Amazon Web Services service on -- your behalf, you must specify @Force@ as @True@ to remove targets. This -- parameter is ignored for rules that are not managed rules. You can check -- whether a rule is a managed rule by using @DescribeRule@ or @ListRules@ -- and checking the @ManagedBy@ field of the response. -- -- 'rule', 'removeTargets_rule' - The name of the rule. -- -- 'ids', 'removeTargets_ids' - The IDs of the targets to remove from the rule. newRemoveTargets :: -- | 'rule' Prelude.Text -> -- | 'ids' Prelude.NonEmpty Prelude.Text -> RemoveTargets newRemoveTargets pRule_ pIds_ = RemoveTargets' { eventBusName = Prelude.Nothing, force = Prelude.Nothing, rule = pRule_, ids = Lens.coerced Lens.# pIds_ } -- | The name or ARN of the event bus associated with the rule. If you omit -- this, the default event bus is used. removeTargets_eventBusName :: Lens.Lens' RemoveTargets (Prelude.Maybe Prelude.Text) removeTargets_eventBusName = Lens.lens (\RemoveTargets' {eventBusName} -> eventBusName) (\s@RemoveTargets' {} a -> s {eventBusName = a} :: RemoveTargets) -- | If this is a managed rule, created by an Amazon Web Services service on -- your behalf, you must specify @Force@ as @True@ to remove targets. This -- parameter is ignored for rules that are not managed rules. You can check -- whether a rule is a managed rule by using @DescribeRule@ or @ListRules@ -- and checking the @ManagedBy@ field of the response. removeTargets_force :: Lens.Lens' RemoveTargets (Prelude.Maybe Prelude.Bool) removeTargets_force = Lens.lens (\RemoveTargets' {force} -> force) (\s@RemoveTargets' {} a -> s {force = a} :: RemoveTargets) -- | The name of the rule. removeTargets_rule :: Lens.Lens' RemoveTargets Prelude.Text removeTargets_rule = Lens.lens (\RemoveTargets' {rule} -> rule) (\s@RemoveTargets' {} a -> s {rule = a} :: RemoveTargets) -- | The IDs of the targets to remove from the rule. removeTargets_ids :: Lens.Lens' RemoveTargets (Prelude.NonEmpty Prelude.Text) removeTargets_ids = Lens.lens (\RemoveTargets' {ids} -> ids) (\s@RemoveTargets' {} a -> s {ids = a} :: RemoveTargets) Prelude.. Lens.coerced instance Core.AWSRequest RemoveTargets where type AWSResponse RemoveTargets = RemoveTargetsResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> RemoveTargetsResponse' Prelude.<$> (x Data..?> "FailedEntries" Core..!@ Prelude.mempty) Prelude.<*> (x Data..?> "FailedEntryCount") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable RemoveTargets where hashWithSalt _salt RemoveTargets' {..} = _salt `Prelude.hashWithSalt` eventBusName `Prelude.hashWithSalt` force `Prelude.hashWithSalt` rule `Prelude.hashWithSalt` ids instance Prelude.NFData RemoveTargets where rnf RemoveTargets' {..} = Prelude.rnf eventBusName `Prelude.seq` Prelude.rnf force `Prelude.seq` Prelude.rnf rule `Prelude.seq` Prelude.rnf ids instance Data.ToHeaders RemoveTargets where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ("AWSEvents.RemoveTargets" :: Prelude.ByteString), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON RemoveTargets where toJSON RemoveTargets' {..} = Data.object ( Prelude.catMaybes [ ("EventBusName" Data..=) Prelude.<$> eventBusName, ("Force" Data..=) Prelude.<$> force, Prelude.Just ("Rule" Data..= rule), Prelude.Just ("Ids" Data..= ids) ] ) instance Data.ToPath RemoveTargets where toPath = Prelude.const "/" instance Data.ToQuery RemoveTargets where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newRemoveTargetsResponse' smart constructor. data RemoveTargetsResponse = RemoveTargetsResponse' { -- | The failed target entries. failedEntries :: Prelude.Maybe [RemoveTargetsResultEntry], -- | The number of failed entries. failedEntryCount :: Prelude.Maybe Prelude.Int, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'RemoveTargetsResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'failedEntries', 'removeTargetsResponse_failedEntries' - The failed target entries. -- -- 'failedEntryCount', 'removeTargetsResponse_failedEntryCount' - The number of failed entries. -- -- 'httpStatus', 'removeTargetsResponse_httpStatus' - The response's http status code. newRemoveTargetsResponse :: -- | 'httpStatus' Prelude.Int -> RemoveTargetsResponse newRemoveTargetsResponse pHttpStatus_ = RemoveTargetsResponse' { failedEntries = Prelude.Nothing, failedEntryCount = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The failed target entries. removeTargetsResponse_failedEntries :: Lens.Lens' RemoveTargetsResponse (Prelude.Maybe [RemoveTargetsResultEntry]) removeTargetsResponse_failedEntries = Lens.lens (\RemoveTargetsResponse' {failedEntries} -> failedEntries) (\s@RemoveTargetsResponse' {} a -> s {failedEntries = a} :: RemoveTargetsResponse) Prelude.. Lens.mapping Lens.coerced -- | The number of failed entries. removeTargetsResponse_failedEntryCount :: Lens.Lens' RemoveTargetsResponse (Prelude.Maybe Prelude.Int) removeTargetsResponse_failedEntryCount = Lens.lens (\RemoveTargetsResponse' {failedEntryCount} -> failedEntryCount) (\s@RemoveTargetsResponse' {} a -> s {failedEntryCount = a} :: RemoveTargetsResponse) -- | The response's http status code. removeTargetsResponse_httpStatus :: Lens.Lens' RemoveTargetsResponse Prelude.Int removeTargetsResponse_httpStatus = Lens.lens (\RemoveTargetsResponse' {httpStatus} -> httpStatus) (\s@RemoveTargetsResponse' {} a -> s {httpStatus = a} :: RemoveTargetsResponse) instance Prelude.NFData RemoveTargetsResponse where rnf RemoveTargetsResponse' {..} = Prelude.rnf failedEntries `Prelude.seq` Prelude.rnf failedEntryCount `Prelude.seq` Prelude.rnf httpStatus