{-# 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.UpdateScheduledAudit
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a scheduled audit, including which checks are performed and how
-- often the audit takes place.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions UpdateScheduledAudit>
-- action.
module Amazonka.IoT.UpdateScheduledAudit
  ( -- * Creating a Request
    UpdateScheduledAudit (..),
    newUpdateScheduledAudit,

    -- * Request Lenses
    updateScheduledAudit_dayOfMonth,
    updateScheduledAudit_dayOfWeek,
    updateScheduledAudit_frequency,
    updateScheduledAudit_targetCheckNames,
    updateScheduledAudit_scheduledAuditName,

    -- * Destructuring the Response
    UpdateScheduledAuditResponse (..),
    newUpdateScheduledAuditResponse,

    -- * Response Lenses
    updateScheduledAuditResponse_scheduledAuditArn,
    updateScheduledAuditResponse_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:/ 'newUpdateScheduledAudit' smart constructor.
data UpdateScheduledAudit = UpdateScheduledAudit'
  { -- | The day of the month on which the scheduled audit takes place. This can
    -- be @1@ through @31@ or @LAST@. This field is required if the @frequency@
    -- parameter is set to @MONTHLY@. If days 29-31 are specified, and the
    -- month does not have that many days, the audit takes place on the
    -- \"LAST\" day of the month.
    UpdateScheduledAudit -> Maybe Text
dayOfMonth :: Prelude.Maybe Prelude.Text,
    -- | The day of the week on which the scheduled audit takes place. This can
    -- be one of @SUN@, @MON@, @TUE@, @WED@, @THU@, @FRI@, or @SAT@. This field
    -- is required if the \"frequency\" parameter is set to @WEEKLY@ or
    -- @BIWEEKLY@.
    UpdateScheduledAudit -> Maybe DayOfWeek
dayOfWeek :: Prelude.Maybe DayOfWeek,
    -- | How often the scheduled audit takes place, either @DAILY@, @WEEKLY@,
    -- @BIWEEKLY@, or @MONTHLY@. The start time of each audit is determined by
    -- the system.
    UpdateScheduledAudit -> Maybe AuditFrequency
frequency :: Prelude.Maybe AuditFrequency,
    -- | Which checks are performed during the scheduled audit. Checks must be
    -- enabled for your account. (Use @DescribeAccountAuditConfiguration@ to
    -- see the list of all checks, including those that are enabled or use
    -- @UpdateAccountAuditConfiguration@ to select which checks are enabled.)
    UpdateScheduledAudit -> Maybe [Text]
targetCheckNames :: Prelude.Maybe [Prelude.Text],
    -- | The name of the scheduled audit. (Max. 128 chars)
    UpdateScheduledAudit -> Text
scheduledAuditName :: Prelude.Text
  }
  deriving (UpdateScheduledAudit -> UpdateScheduledAudit -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateScheduledAudit -> UpdateScheduledAudit -> Bool
$c/= :: UpdateScheduledAudit -> UpdateScheduledAudit -> Bool
== :: UpdateScheduledAudit -> UpdateScheduledAudit -> Bool
$c== :: UpdateScheduledAudit -> UpdateScheduledAudit -> Bool
Prelude.Eq, ReadPrec [UpdateScheduledAudit]
ReadPrec UpdateScheduledAudit
Int -> ReadS UpdateScheduledAudit
ReadS [UpdateScheduledAudit]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateScheduledAudit]
$creadListPrec :: ReadPrec [UpdateScheduledAudit]
readPrec :: ReadPrec UpdateScheduledAudit
$creadPrec :: ReadPrec UpdateScheduledAudit
readList :: ReadS [UpdateScheduledAudit]
$creadList :: ReadS [UpdateScheduledAudit]
readsPrec :: Int -> ReadS UpdateScheduledAudit
$creadsPrec :: Int -> ReadS UpdateScheduledAudit
Prelude.Read, Int -> UpdateScheduledAudit -> ShowS
[UpdateScheduledAudit] -> ShowS
UpdateScheduledAudit -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateScheduledAudit] -> ShowS
$cshowList :: [UpdateScheduledAudit] -> ShowS
show :: UpdateScheduledAudit -> String
$cshow :: UpdateScheduledAudit -> String
showsPrec :: Int -> UpdateScheduledAudit -> ShowS
$cshowsPrec :: Int -> UpdateScheduledAudit -> ShowS
Prelude.Show, forall x. Rep UpdateScheduledAudit x -> UpdateScheduledAudit
forall x. UpdateScheduledAudit -> Rep UpdateScheduledAudit x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateScheduledAudit x -> UpdateScheduledAudit
$cfrom :: forall x. UpdateScheduledAudit -> Rep UpdateScheduledAudit x
Prelude.Generic)

-- |
-- Create a value of 'UpdateScheduledAudit' 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:
--
-- 'dayOfMonth', 'updateScheduledAudit_dayOfMonth' - The day of the month on which the scheduled audit takes place. This can
-- be @1@ through @31@ or @LAST@. This field is required if the @frequency@
-- parameter is set to @MONTHLY@. If days 29-31 are specified, and the
-- month does not have that many days, the audit takes place on the
-- \"LAST\" day of the month.
--
-- 'dayOfWeek', 'updateScheduledAudit_dayOfWeek' - The day of the week on which the scheduled audit takes place. This can
-- be one of @SUN@, @MON@, @TUE@, @WED@, @THU@, @FRI@, or @SAT@. This field
-- is required if the \"frequency\" parameter is set to @WEEKLY@ or
-- @BIWEEKLY@.
--
-- 'frequency', 'updateScheduledAudit_frequency' - How often the scheduled audit takes place, either @DAILY@, @WEEKLY@,
-- @BIWEEKLY@, or @MONTHLY@. The start time of each audit is determined by
-- the system.
--
-- 'targetCheckNames', 'updateScheduledAudit_targetCheckNames' - Which checks are performed during the scheduled audit. Checks must be
-- enabled for your account. (Use @DescribeAccountAuditConfiguration@ to
-- see the list of all checks, including those that are enabled or use
-- @UpdateAccountAuditConfiguration@ to select which checks are enabled.)
--
-- 'scheduledAuditName', 'updateScheduledAudit_scheduledAuditName' - The name of the scheduled audit. (Max. 128 chars)
newUpdateScheduledAudit ::
  -- | 'scheduledAuditName'
  Prelude.Text ->
  UpdateScheduledAudit
newUpdateScheduledAudit :: Text -> UpdateScheduledAudit
newUpdateScheduledAudit Text
pScheduledAuditName_ =
  UpdateScheduledAudit'
    { $sel:dayOfMonth:UpdateScheduledAudit' :: Maybe Text
dayOfMonth = forall a. Maybe a
Prelude.Nothing,
      $sel:dayOfWeek:UpdateScheduledAudit' :: Maybe DayOfWeek
dayOfWeek = forall a. Maybe a
Prelude.Nothing,
      $sel:frequency:UpdateScheduledAudit' :: Maybe AuditFrequency
frequency = forall a. Maybe a
Prelude.Nothing,
      $sel:targetCheckNames:UpdateScheduledAudit' :: Maybe [Text]
targetCheckNames = forall a. Maybe a
Prelude.Nothing,
      $sel:scheduledAuditName:UpdateScheduledAudit' :: Text
scheduledAuditName = Text
pScheduledAuditName_
    }

-- | The day of the month on which the scheduled audit takes place. This can
-- be @1@ through @31@ or @LAST@. This field is required if the @frequency@
-- parameter is set to @MONTHLY@. If days 29-31 are specified, and the
-- month does not have that many days, the audit takes place on the
-- \"LAST\" day of the month.
updateScheduledAudit_dayOfMonth :: Lens.Lens' UpdateScheduledAudit (Prelude.Maybe Prelude.Text)
updateScheduledAudit_dayOfMonth :: Lens' UpdateScheduledAudit (Maybe Text)
updateScheduledAudit_dayOfMonth = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateScheduledAudit' {Maybe Text
dayOfMonth :: Maybe Text
$sel:dayOfMonth:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe Text
dayOfMonth} -> Maybe Text
dayOfMonth) (\s :: UpdateScheduledAudit
s@UpdateScheduledAudit' {} Maybe Text
a -> UpdateScheduledAudit
s {$sel:dayOfMonth:UpdateScheduledAudit' :: Maybe Text
dayOfMonth = Maybe Text
a} :: UpdateScheduledAudit)

-- | The day of the week on which the scheduled audit takes place. This can
-- be one of @SUN@, @MON@, @TUE@, @WED@, @THU@, @FRI@, or @SAT@. This field
-- is required if the \"frequency\" parameter is set to @WEEKLY@ or
-- @BIWEEKLY@.
updateScheduledAudit_dayOfWeek :: Lens.Lens' UpdateScheduledAudit (Prelude.Maybe DayOfWeek)
updateScheduledAudit_dayOfWeek :: Lens' UpdateScheduledAudit (Maybe DayOfWeek)
updateScheduledAudit_dayOfWeek = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateScheduledAudit' {Maybe DayOfWeek
dayOfWeek :: Maybe DayOfWeek
$sel:dayOfWeek:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe DayOfWeek
dayOfWeek} -> Maybe DayOfWeek
dayOfWeek) (\s :: UpdateScheduledAudit
s@UpdateScheduledAudit' {} Maybe DayOfWeek
a -> UpdateScheduledAudit
s {$sel:dayOfWeek:UpdateScheduledAudit' :: Maybe DayOfWeek
dayOfWeek = Maybe DayOfWeek
a} :: UpdateScheduledAudit)

-- | How often the scheduled audit takes place, either @DAILY@, @WEEKLY@,
-- @BIWEEKLY@, or @MONTHLY@. The start time of each audit is determined by
-- the system.
updateScheduledAudit_frequency :: Lens.Lens' UpdateScheduledAudit (Prelude.Maybe AuditFrequency)
updateScheduledAudit_frequency :: Lens' UpdateScheduledAudit (Maybe AuditFrequency)
updateScheduledAudit_frequency = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateScheduledAudit' {Maybe AuditFrequency
frequency :: Maybe AuditFrequency
$sel:frequency:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe AuditFrequency
frequency} -> Maybe AuditFrequency
frequency) (\s :: UpdateScheduledAudit
s@UpdateScheduledAudit' {} Maybe AuditFrequency
a -> UpdateScheduledAudit
s {$sel:frequency:UpdateScheduledAudit' :: Maybe AuditFrequency
frequency = Maybe AuditFrequency
a} :: UpdateScheduledAudit)

-- | Which checks are performed during the scheduled audit. Checks must be
-- enabled for your account. (Use @DescribeAccountAuditConfiguration@ to
-- see the list of all checks, including those that are enabled or use
-- @UpdateAccountAuditConfiguration@ to select which checks are enabled.)
updateScheduledAudit_targetCheckNames :: Lens.Lens' UpdateScheduledAudit (Prelude.Maybe [Prelude.Text])
updateScheduledAudit_targetCheckNames :: Lens' UpdateScheduledAudit (Maybe [Text])
updateScheduledAudit_targetCheckNames = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateScheduledAudit' {Maybe [Text]
targetCheckNames :: Maybe [Text]
$sel:targetCheckNames:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe [Text]
targetCheckNames} -> Maybe [Text]
targetCheckNames) (\s :: UpdateScheduledAudit
s@UpdateScheduledAudit' {} Maybe [Text]
a -> UpdateScheduledAudit
s {$sel:targetCheckNames:UpdateScheduledAudit' :: Maybe [Text]
targetCheckNames = Maybe [Text]
a} :: UpdateScheduledAudit) 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 scheduled audit. (Max. 128 chars)
updateScheduledAudit_scheduledAuditName :: Lens.Lens' UpdateScheduledAudit Prelude.Text
updateScheduledAudit_scheduledAuditName :: Lens' UpdateScheduledAudit Text
updateScheduledAudit_scheduledAuditName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateScheduledAudit' {Text
scheduledAuditName :: Text
$sel:scheduledAuditName:UpdateScheduledAudit' :: UpdateScheduledAudit -> Text
scheduledAuditName} -> Text
scheduledAuditName) (\s :: UpdateScheduledAudit
s@UpdateScheduledAudit' {} Text
a -> UpdateScheduledAudit
s {$sel:scheduledAuditName:UpdateScheduledAudit' :: Text
scheduledAuditName = Text
a} :: UpdateScheduledAudit)

instance Core.AWSRequest UpdateScheduledAudit where
  type
    AWSResponse UpdateScheduledAudit =
      UpdateScheduledAuditResponse
  request :: (Service -> Service)
-> UpdateScheduledAudit -> Request UpdateScheduledAudit
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.patchJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateScheduledAudit
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateScheduledAudit)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Int -> UpdateScheduledAuditResponse
UpdateScheduledAuditResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"scheduledAuditArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable UpdateScheduledAudit where
  hashWithSalt :: Int -> UpdateScheduledAudit -> Int
hashWithSalt Int
_salt UpdateScheduledAudit' {Maybe [Text]
Maybe Text
Maybe AuditFrequency
Maybe DayOfWeek
Text
scheduledAuditName :: Text
targetCheckNames :: Maybe [Text]
frequency :: Maybe AuditFrequency
dayOfWeek :: Maybe DayOfWeek
dayOfMonth :: Maybe Text
$sel:scheduledAuditName:UpdateScheduledAudit' :: UpdateScheduledAudit -> Text
$sel:targetCheckNames:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe [Text]
$sel:frequency:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe AuditFrequency
$sel:dayOfWeek:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe DayOfWeek
$sel:dayOfMonth:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dayOfMonth
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DayOfWeek
dayOfWeek
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AuditFrequency
frequency
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
targetCheckNames
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
scheduledAuditName

instance Prelude.NFData UpdateScheduledAudit where
  rnf :: UpdateScheduledAudit -> ()
rnf UpdateScheduledAudit' {Maybe [Text]
Maybe Text
Maybe AuditFrequency
Maybe DayOfWeek
Text
scheduledAuditName :: Text
targetCheckNames :: Maybe [Text]
frequency :: Maybe AuditFrequency
dayOfWeek :: Maybe DayOfWeek
dayOfMonth :: Maybe Text
$sel:scheduledAuditName:UpdateScheduledAudit' :: UpdateScheduledAudit -> Text
$sel:targetCheckNames:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe [Text]
$sel:frequency:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe AuditFrequency
$sel:dayOfWeek:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe DayOfWeek
$sel:dayOfMonth:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dayOfMonth
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DayOfWeek
dayOfWeek
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AuditFrequency
frequency
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
targetCheckNames
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
scheduledAuditName

instance Data.ToHeaders UpdateScheduledAudit where
  toHeaders :: UpdateScheduledAudit -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON UpdateScheduledAudit where
  toJSON :: UpdateScheduledAudit -> Value
toJSON UpdateScheduledAudit' {Maybe [Text]
Maybe Text
Maybe AuditFrequency
Maybe DayOfWeek
Text
scheduledAuditName :: Text
targetCheckNames :: Maybe [Text]
frequency :: Maybe AuditFrequency
dayOfWeek :: Maybe DayOfWeek
dayOfMonth :: Maybe Text
$sel:scheduledAuditName:UpdateScheduledAudit' :: UpdateScheduledAudit -> Text
$sel:targetCheckNames:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe [Text]
$sel:frequency:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe AuditFrequency
$sel:dayOfWeek:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe DayOfWeek
$sel:dayOfMonth:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"dayOfMonth" 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
dayOfMonth,
            (Key
"dayOfWeek" 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 DayOfWeek
dayOfWeek,
            (Key
"frequency" 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 AuditFrequency
frequency,
            (Key
"targetCheckNames" 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]
targetCheckNames
          ]
      )

instance Data.ToPath UpdateScheduledAudit where
  toPath :: UpdateScheduledAudit -> ByteString
toPath UpdateScheduledAudit' {Maybe [Text]
Maybe Text
Maybe AuditFrequency
Maybe DayOfWeek
Text
scheduledAuditName :: Text
targetCheckNames :: Maybe [Text]
frequency :: Maybe AuditFrequency
dayOfWeek :: Maybe DayOfWeek
dayOfMonth :: Maybe Text
$sel:scheduledAuditName:UpdateScheduledAudit' :: UpdateScheduledAudit -> Text
$sel:targetCheckNames:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe [Text]
$sel:frequency:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe AuditFrequency
$sel:dayOfWeek:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe DayOfWeek
$sel:dayOfMonth:UpdateScheduledAudit' :: UpdateScheduledAudit -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/audit/scheduledaudits/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
scheduledAuditName
      ]

instance Data.ToQuery UpdateScheduledAudit where
  toQuery :: UpdateScheduledAudit -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdateScheduledAuditResponse' smart constructor.
data UpdateScheduledAuditResponse = UpdateScheduledAuditResponse'
  { -- | The ARN of the scheduled audit.
    UpdateScheduledAuditResponse -> Maybe Text
scheduledAuditArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    UpdateScheduledAuditResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateScheduledAuditResponse
-> UpdateScheduledAuditResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateScheduledAuditResponse
-> UpdateScheduledAuditResponse -> Bool
$c/= :: UpdateScheduledAuditResponse
-> UpdateScheduledAuditResponse -> Bool
== :: UpdateScheduledAuditResponse
-> UpdateScheduledAuditResponse -> Bool
$c== :: UpdateScheduledAuditResponse
-> UpdateScheduledAuditResponse -> Bool
Prelude.Eq, ReadPrec [UpdateScheduledAuditResponse]
ReadPrec UpdateScheduledAuditResponse
Int -> ReadS UpdateScheduledAuditResponse
ReadS [UpdateScheduledAuditResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateScheduledAuditResponse]
$creadListPrec :: ReadPrec [UpdateScheduledAuditResponse]
readPrec :: ReadPrec UpdateScheduledAuditResponse
$creadPrec :: ReadPrec UpdateScheduledAuditResponse
readList :: ReadS [UpdateScheduledAuditResponse]
$creadList :: ReadS [UpdateScheduledAuditResponse]
readsPrec :: Int -> ReadS UpdateScheduledAuditResponse
$creadsPrec :: Int -> ReadS UpdateScheduledAuditResponse
Prelude.Read, Int -> UpdateScheduledAuditResponse -> ShowS
[UpdateScheduledAuditResponse] -> ShowS
UpdateScheduledAuditResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateScheduledAuditResponse] -> ShowS
$cshowList :: [UpdateScheduledAuditResponse] -> ShowS
show :: UpdateScheduledAuditResponse -> String
$cshow :: UpdateScheduledAuditResponse -> String
showsPrec :: Int -> UpdateScheduledAuditResponse -> ShowS
$cshowsPrec :: Int -> UpdateScheduledAuditResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateScheduledAuditResponse x -> UpdateScheduledAuditResponse
forall x.
UpdateScheduledAuditResponse -> Rep UpdateScheduledAuditResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateScheduledAuditResponse x -> UpdateScheduledAuditResponse
$cfrom :: forall x.
UpdateScheduledAuditResponse -> Rep UpdateScheduledAuditResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateScheduledAuditResponse' 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:
--
-- 'scheduledAuditArn', 'updateScheduledAuditResponse_scheduledAuditArn' - The ARN of the scheduled audit.
--
-- 'httpStatus', 'updateScheduledAuditResponse_httpStatus' - The response's http status code.
newUpdateScheduledAuditResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateScheduledAuditResponse
newUpdateScheduledAuditResponse :: Int -> UpdateScheduledAuditResponse
newUpdateScheduledAuditResponse Int
pHttpStatus_ =
  UpdateScheduledAuditResponse'
    { $sel:scheduledAuditArn:UpdateScheduledAuditResponse' :: Maybe Text
scheduledAuditArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateScheduledAuditResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the scheduled audit.
updateScheduledAuditResponse_scheduledAuditArn :: Lens.Lens' UpdateScheduledAuditResponse (Prelude.Maybe Prelude.Text)
updateScheduledAuditResponse_scheduledAuditArn :: Lens' UpdateScheduledAuditResponse (Maybe Text)
updateScheduledAuditResponse_scheduledAuditArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateScheduledAuditResponse' {Maybe Text
scheduledAuditArn :: Maybe Text
$sel:scheduledAuditArn:UpdateScheduledAuditResponse' :: UpdateScheduledAuditResponse -> Maybe Text
scheduledAuditArn} -> Maybe Text
scheduledAuditArn) (\s :: UpdateScheduledAuditResponse
s@UpdateScheduledAuditResponse' {} Maybe Text
a -> UpdateScheduledAuditResponse
s {$sel:scheduledAuditArn:UpdateScheduledAuditResponse' :: Maybe Text
scheduledAuditArn = Maybe Text
a} :: UpdateScheduledAuditResponse)

-- | The response's http status code.
updateScheduledAuditResponse_httpStatus :: Lens.Lens' UpdateScheduledAuditResponse Prelude.Int
updateScheduledAuditResponse_httpStatus :: Lens' UpdateScheduledAuditResponse Int
updateScheduledAuditResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateScheduledAuditResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateScheduledAuditResponse' :: UpdateScheduledAuditResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateScheduledAuditResponse
s@UpdateScheduledAuditResponse' {} Int
a -> UpdateScheduledAuditResponse
s {$sel:httpStatus:UpdateScheduledAuditResponse' :: Int
httpStatus = Int
a} :: UpdateScheduledAuditResponse)

instance Prelude.NFData UpdateScheduledAuditResponse where
  rnf :: UpdateScheduledAuditResponse -> ()
rnf UpdateScheduledAuditResponse' {Int
Maybe Text
httpStatus :: Int
scheduledAuditArn :: Maybe Text
$sel:httpStatus:UpdateScheduledAuditResponse' :: UpdateScheduledAuditResponse -> Int
$sel:scheduledAuditArn:UpdateScheduledAuditResponse' :: UpdateScheduledAuditResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
scheduledAuditArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus