packages feed

amazonka-cloudwatch-2.0: gen/Amazonka/CloudWatch/ListManagedInsightRules.hs

{-# 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.CloudWatch.ListManagedInsightRules
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns a list that contains the number of managed Contributor Insights
-- rules in your account.
module Amazonka.CloudWatch.ListManagedInsightRules
  ( -- * Creating a Request
    ListManagedInsightRules (..),
    newListManagedInsightRules,

    -- * Request Lenses
    listManagedInsightRules_maxResults,
    listManagedInsightRules_nextToken,
    listManagedInsightRules_resourceARN,

    -- * Destructuring the Response
    ListManagedInsightRulesResponse (..),
    newListManagedInsightRulesResponse,

    -- * Response Lenses
    listManagedInsightRulesResponse_managedRules,
    listManagedInsightRulesResponse_nextToken,
    listManagedInsightRulesResponse_httpStatus,
  )
where

import Amazonka.CloudWatch.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:/ 'newListManagedInsightRules' smart constructor.
data ListManagedInsightRules = ListManagedInsightRules'
  { -- | The maximum number of results to return in one operation. If you omit
    -- this parameter, the default number is used. The default number is @100@.
    maxResults :: Prelude.Maybe Prelude.Natural,
    -- | Include this value to get the next set of rules if the value was
    -- returned by the previous operation.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The ARN of an Amazon Web Services resource that has managed Contributor
    -- Insights rules.
    resourceARN :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListManagedInsightRules' 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:
--
-- 'maxResults', 'listManagedInsightRules_maxResults' - The maximum number of results to return in one operation. If you omit
-- this parameter, the default number is used. The default number is @100@.
--
-- 'nextToken', 'listManagedInsightRules_nextToken' - Include this value to get the next set of rules if the value was
-- returned by the previous operation.
--
-- 'resourceARN', 'listManagedInsightRules_resourceARN' - The ARN of an Amazon Web Services resource that has managed Contributor
-- Insights rules.
newListManagedInsightRules ::
  -- | 'resourceARN'
  Prelude.Text ->
  ListManagedInsightRules
newListManagedInsightRules pResourceARN_ =
  ListManagedInsightRules'
    { maxResults =
        Prelude.Nothing,
      nextToken = Prelude.Nothing,
      resourceARN = pResourceARN_
    }

-- | The maximum number of results to return in one operation. If you omit
-- this parameter, the default number is used. The default number is @100@.
listManagedInsightRules_maxResults :: Lens.Lens' ListManagedInsightRules (Prelude.Maybe Prelude.Natural)
listManagedInsightRules_maxResults = Lens.lens (\ListManagedInsightRules' {maxResults} -> maxResults) (\s@ListManagedInsightRules' {} a -> s {maxResults = a} :: ListManagedInsightRules)

-- | Include this value to get the next set of rules if the value was
-- returned by the previous operation.
listManagedInsightRules_nextToken :: Lens.Lens' ListManagedInsightRules (Prelude.Maybe Prelude.Text)
listManagedInsightRules_nextToken = Lens.lens (\ListManagedInsightRules' {nextToken} -> nextToken) (\s@ListManagedInsightRules' {} a -> s {nextToken = a} :: ListManagedInsightRules)

-- | The ARN of an Amazon Web Services resource that has managed Contributor
-- Insights rules.
listManagedInsightRules_resourceARN :: Lens.Lens' ListManagedInsightRules Prelude.Text
listManagedInsightRules_resourceARN = Lens.lens (\ListManagedInsightRules' {resourceARN} -> resourceARN) (\s@ListManagedInsightRules' {} a -> s {resourceARN = a} :: ListManagedInsightRules)

instance Core.AWSRequest ListManagedInsightRules where
  type
    AWSResponse ListManagedInsightRules =
      ListManagedInsightRulesResponse
  request overrides =
    Request.postQuery (overrides defaultService)
  response =
    Response.receiveXMLWrapper
      "ListManagedInsightRulesResult"
      ( \s h x ->
          ListManagedInsightRulesResponse'
            Prelude.<$> ( x
                            Data..@? "ManagedRules"
                            Core..!@ Prelude.mempty
                            Prelude.>>= Core.may (Data.parseXMLList "member")
                        )
            Prelude.<*> (x Data..@? "NextToken")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable ListManagedInsightRules where
  hashWithSalt _salt ListManagedInsightRules' {..} =
    _salt
      `Prelude.hashWithSalt` maxResults
      `Prelude.hashWithSalt` nextToken
      `Prelude.hashWithSalt` resourceARN

instance Prelude.NFData ListManagedInsightRules where
  rnf ListManagedInsightRules' {..} =
    Prelude.rnf maxResults
      `Prelude.seq` Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf resourceARN

instance Data.ToHeaders ListManagedInsightRules where
  toHeaders = Prelude.const Prelude.mempty

instance Data.ToPath ListManagedInsightRules where
  toPath = Prelude.const "/"

instance Data.ToQuery ListManagedInsightRules where
  toQuery ListManagedInsightRules' {..} =
    Prelude.mconcat
      [ "Action"
          Data.=: ("ListManagedInsightRules" :: Prelude.ByteString),
        "Version"
          Data.=: ("2010-08-01" :: Prelude.ByteString),
        "MaxResults" Data.=: maxResults,
        "NextToken" Data.=: nextToken,
        "ResourceARN" Data.=: resourceARN
      ]

-- | /See:/ 'newListManagedInsightRulesResponse' smart constructor.
data ListManagedInsightRulesResponse = ListManagedInsightRulesResponse'
  { -- | The managed rules that are available for the specified Amazon Web
    -- Services resource.
    managedRules :: Prelude.Maybe [ManagedRuleDescription],
    -- | Include this value to get the next set of rules if the value was
    -- returned by the previous operation.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListManagedInsightRulesResponse' 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:
--
-- 'managedRules', 'listManagedInsightRulesResponse_managedRules' - The managed rules that are available for the specified Amazon Web
-- Services resource.
--
-- 'nextToken', 'listManagedInsightRulesResponse_nextToken' - Include this value to get the next set of rules if the value was
-- returned by the previous operation.
--
-- 'httpStatus', 'listManagedInsightRulesResponse_httpStatus' - The response's http status code.
newListManagedInsightRulesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListManagedInsightRulesResponse
newListManagedInsightRulesResponse pHttpStatus_ =
  ListManagedInsightRulesResponse'
    { managedRules =
        Prelude.Nothing,
      nextToken = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The managed rules that are available for the specified Amazon Web
-- Services resource.
listManagedInsightRulesResponse_managedRules :: Lens.Lens' ListManagedInsightRulesResponse (Prelude.Maybe [ManagedRuleDescription])
listManagedInsightRulesResponse_managedRules = Lens.lens (\ListManagedInsightRulesResponse' {managedRules} -> managedRules) (\s@ListManagedInsightRulesResponse' {} a -> s {managedRules = a} :: ListManagedInsightRulesResponse) Prelude.. Lens.mapping Lens.coerced

-- | Include this value to get the next set of rules if the value was
-- returned by the previous operation.
listManagedInsightRulesResponse_nextToken :: Lens.Lens' ListManagedInsightRulesResponse (Prelude.Maybe Prelude.Text)
listManagedInsightRulesResponse_nextToken = Lens.lens (\ListManagedInsightRulesResponse' {nextToken} -> nextToken) (\s@ListManagedInsightRulesResponse' {} a -> s {nextToken = a} :: ListManagedInsightRulesResponse)

-- | The response's http status code.
listManagedInsightRulesResponse_httpStatus :: Lens.Lens' ListManagedInsightRulesResponse Prelude.Int
listManagedInsightRulesResponse_httpStatus = Lens.lens (\ListManagedInsightRulesResponse' {httpStatus} -> httpStatus) (\s@ListManagedInsightRulesResponse' {} a -> s {httpStatus = a} :: ListManagedInsightRulesResponse)

instance
  Prelude.NFData
    ListManagedInsightRulesResponse
  where
  rnf ListManagedInsightRulesResponse' {..} =
    Prelude.rnf managedRules
      `Prelude.seq` Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf httpStatus