packages feed

amazonka-iot-2.0: gen/Amazonka/IoT/ListRelatedResourcesForAuditFinding.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.IoT.ListRelatedResourcesForAuditFinding
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- The related resources of an Audit finding. The following resources can
-- be returned from calling this API:
--
-- -   DEVICE_CERTIFICATE
--
-- -   CA_CERTIFICATE
--
-- -   IOT_POLICY
--
-- -   COGNITO_IDENTITY_POOL
--
-- -   CLIENT_ID
--
-- -   ACCOUNT_SETTINGS
--
-- -   ROLE_ALIAS
--
-- -   IAM_ROLE
--
-- -   ISSUER_CERTIFICATE
--
-- This API is similar to DescribeAuditFinding\'s
-- <https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuditFinding.html RelatedResources>
-- but provides pagination and is not limited to 10 resources. When calling
-- <https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuditFinding.html DescribeAuditFinding>
-- for the intermediate CA revoked for active device certificates check,
-- RelatedResources will not be populated. You must use this API,
-- ListRelatedResourcesForAuditFinding, to list the certificates.
module Amazonka.IoT.ListRelatedResourcesForAuditFinding
  ( -- * Creating a Request
    ListRelatedResourcesForAuditFinding (..),
    newListRelatedResourcesForAuditFinding,

    -- * Request Lenses
    listRelatedResourcesForAuditFinding_maxResults,
    listRelatedResourcesForAuditFinding_nextToken,
    listRelatedResourcesForAuditFinding_findingId,

    -- * Destructuring the Response
    ListRelatedResourcesForAuditFindingResponse (..),
    newListRelatedResourcesForAuditFindingResponse,

    -- * Response Lenses
    listRelatedResourcesForAuditFindingResponse_nextToken,
    listRelatedResourcesForAuditFindingResponse_relatedResources,
    listRelatedResourcesForAuditFindingResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoT.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newListRelatedResourcesForAuditFinding' smart constructor.
data ListRelatedResourcesForAuditFinding = ListRelatedResourcesForAuditFinding'
  { -- | The maximum number of results to return at one time.
    maxResults :: Prelude.Maybe Prelude.Natural,
    -- | A token that can be used to retrieve the next set of results, or @null@
    -- if there are no additional results.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The finding Id.
    findingId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListRelatedResourcesForAuditFinding' 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', 'listRelatedResourcesForAuditFinding_maxResults' - The maximum number of results to return at one time.
--
-- 'nextToken', 'listRelatedResourcesForAuditFinding_nextToken' - A token that can be used to retrieve the next set of results, or @null@
-- if there are no additional results.
--
-- 'findingId', 'listRelatedResourcesForAuditFinding_findingId' - The finding Id.
newListRelatedResourcesForAuditFinding ::
  -- | 'findingId'
  Prelude.Text ->
  ListRelatedResourcesForAuditFinding
newListRelatedResourcesForAuditFinding pFindingId_ =
  ListRelatedResourcesForAuditFinding'
    { maxResults =
        Prelude.Nothing,
      nextToken = Prelude.Nothing,
      findingId = pFindingId_
    }

-- | The maximum number of results to return at one time.
listRelatedResourcesForAuditFinding_maxResults :: Lens.Lens' ListRelatedResourcesForAuditFinding (Prelude.Maybe Prelude.Natural)
listRelatedResourcesForAuditFinding_maxResults = Lens.lens (\ListRelatedResourcesForAuditFinding' {maxResults} -> maxResults) (\s@ListRelatedResourcesForAuditFinding' {} a -> s {maxResults = a} :: ListRelatedResourcesForAuditFinding)

-- | A token that can be used to retrieve the next set of results, or @null@
-- if there are no additional results.
listRelatedResourcesForAuditFinding_nextToken :: Lens.Lens' ListRelatedResourcesForAuditFinding (Prelude.Maybe Prelude.Text)
listRelatedResourcesForAuditFinding_nextToken = Lens.lens (\ListRelatedResourcesForAuditFinding' {nextToken} -> nextToken) (\s@ListRelatedResourcesForAuditFinding' {} a -> s {nextToken = a} :: ListRelatedResourcesForAuditFinding)

-- | The finding Id.
listRelatedResourcesForAuditFinding_findingId :: Lens.Lens' ListRelatedResourcesForAuditFinding Prelude.Text
listRelatedResourcesForAuditFinding_findingId = Lens.lens (\ListRelatedResourcesForAuditFinding' {findingId} -> findingId) (\s@ListRelatedResourcesForAuditFinding' {} a -> s {findingId = a} :: ListRelatedResourcesForAuditFinding)

instance
  Core.AWSRequest
    ListRelatedResourcesForAuditFinding
  where
  type
    AWSResponse ListRelatedResourcesForAuditFinding =
      ListRelatedResourcesForAuditFindingResponse
  request overrides =
    Request.get (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          ListRelatedResourcesForAuditFindingResponse'
            Prelude.<$> (x Data..?> "nextToken")
            Prelude.<*> ( x
                            Data..?> "relatedResources"
                            Core..!@ Prelude.mempty
                        )
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    ListRelatedResourcesForAuditFinding
  where
  hashWithSalt
    _salt
    ListRelatedResourcesForAuditFinding' {..} =
      _salt
        `Prelude.hashWithSalt` maxResults
        `Prelude.hashWithSalt` nextToken
        `Prelude.hashWithSalt` findingId

instance
  Prelude.NFData
    ListRelatedResourcesForAuditFinding
  where
  rnf ListRelatedResourcesForAuditFinding' {..} =
    Prelude.rnf maxResults
      `Prelude.seq` Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf findingId

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

instance
  Data.ToPath
    ListRelatedResourcesForAuditFinding
  where
  toPath = Prelude.const "/audit/relatedResources"

instance
  Data.ToQuery
    ListRelatedResourcesForAuditFinding
  where
  toQuery ListRelatedResourcesForAuditFinding' {..} =
    Prelude.mconcat
      [ "maxResults" Data.=: maxResults,
        "nextToken" Data.=: nextToken,
        "findingId" Data.=: findingId
      ]

-- | /See:/ 'newListRelatedResourcesForAuditFindingResponse' smart constructor.
data ListRelatedResourcesForAuditFindingResponse = ListRelatedResourcesForAuditFindingResponse'
  { -- | A token that can be used to retrieve the next set of results, or @null@
    -- for the first API call.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The related resources.
    relatedResources :: Prelude.Maybe [RelatedResource],
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListRelatedResourcesForAuditFindingResponse' 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:
--
-- 'nextToken', 'listRelatedResourcesForAuditFindingResponse_nextToken' - A token that can be used to retrieve the next set of results, or @null@
-- for the first API call.
--
-- 'relatedResources', 'listRelatedResourcesForAuditFindingResponse_relatedResources' - The related resources.
--
-- 'httpStatus', 'listRelatedResourcesForAuditFindingResponse_httpStatus' - The response's http status code.
newListRelatedResourcesForAuditFindingResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListRelatedResourcesForAuditFindingResponse
newListRelatedResourcesForAuditFindingResponse
  pHttpStatus_ =
    ListRelatedResourcesForAuditFindingResponse'
      { nextToken =
          Prelude.Nothing,
        relatedResources =
          Prelude.Nothing,
        httpStatus = pHttpStatus_
      }

-- | A token that can be used to retrieve the next set of results, or @null@
-- for the first API call.
listRelatedResourcesForAuditFindingResponse_nextToken :: Lens.Lens' ListRelatedResourcesForAuditFindingResponse (Prelude.Maybe Prelude.Text)
listRelatedResourcesForAuditFindingResponse_nextToken = Lens.lens (\ListRelatedResourcesForAuditFindingResponse' {nextToken} -> nextToken) (\s@ListRelatedResourcesForAuditFindingResponse' {} a -> s {nextToken = a} :: ListRelatedResourcesForAuditFindingResponse)

-- | The related resources.
listRelatedResourcesForAuditFindingResponse_relatedResources :: Lens.Lens' ListRelatedResourcesForAuditFindingResponse (Prelude.Maybe [RelatedResource])
listRelatedResourcesForAuditFindingResponse_relatedResources = Lens.lens (\ListRelatedResourcesForAuditFindingResponse' {relatedResources} -> relatedResources) (\s@ListRelatedResourcesForAuditFindingResponse' {} a -> s {relatedResources = a} :: ListRelatedResourcesForAuditFindingResponse) Prelude.. Lens.mapping Lens.coerced

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

instance
  Prelude.NFData
    ListRelatedResourcesForAuditFindingResponse
  where
  rnf ListRelatedResourcesForAuditFindingResponse' {..} =
    Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf relatedResources
      `Prelude.seq` Prelude.rnf httpStatus