{-# 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.EC2.ReportInstanceStatus
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Submits feedback about the status of an instance. The instance must be
-- in the @running@ state. If your experience with the instance differs
-- from the instance status returned by DescribeInstanceStatus, use
-- ReportInstanceStatus to report your experience with the instance. Amazon
-- EC2 collects this information to improve the accuracy of status checks.
--
-- Use of this action does not change the value returned by
-- DescribeInstanceStatus.
module Amazonka.EC2.ReportInstanceStatus
  ( -- * Creating a Request
    ReportInstanceStatus (..),
    newReportInstanceStatus,

    -- * Request Lenses
    reportInstanceStatus_description,
    reportInstanceStatus_dryRun,
    reportInstanceStatus_endTime,
    reportInstanceStatus_startTime,
    reportInstanceStatus_instances,
    reportInstanceStatus_reasonCodes,
    reportInstanceStatus_status,

    -- * Destructuring the Response
    ReportInstanceStatusResponse (..),
    newReportInstanceStatusResponse,
  )
where

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

-- | /See:/ 'newReportInstanceStatus' smart constructor.
data ReportInstanceStatus = ReportInstanceStatus'
  { -- | Descriptive text about the health state of your instance.
    ReportInstanceStatus -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    ReportInstanceStatus -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The time at which the reported instance health state ended.
    ReportInstanceStatus -> Maybe ISO8601
endTime :: Prelude.Maybe Data.ISO8601,
    -- | The time at which the reported instance health state began.
    ReportInstanceStatus -> Maybe ISO8601
startTime :: Prelude.Maybe Data.ISO8601,
    -- | The instances.
    ReportInstanceStatus -> [Text]
instances :: [Prelude.Text],
    -- | The reason codes that describe the health state of your instance.
    --
    -- -   @instance-stuck-in-state@: My instance is stuck in a state.
    --
    -- -   @unresponsive@: My instance is unresponsive.
    --
    -- -   @not-accepting-credentials@: My instance is not accepting my
    --     credentials.
    --
    -- -   @password-not-available@: A password is not available for my
    --     instance.
    --
    -- -   @performance-network@: My instance is experiencing performance
    --     problems that I believe are network related.
    --
    -- -   @performance-instance-store@: My instance is experiencing
    --     performance problems that I believe are related to the instance
    --     stores.
    --
    -- -   @performance-ebs-volume@: My instance is experiencing performance
    --     problems that I believe are related to an EBS volume.
    --
    -- -   @performance-other@: My instance is experiencing performance
    --     problems.
    --
    -- -   @other@: [explain using the description parameter]
    ReportInstanceStatus -> [ReportInstanceReasonCodes]
reasonCodes :: [ReportInstanceReasonCodes],
    -- | The status of all instances listed.
    ReportInstanceStatus -> ReportStatusType
status :: ReportStatusType
  }
  deriving (ReportInstanceStatus -> ReportInstanceStatus -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReportInstanceStatus -> ReportInstanceStatus -> Bool
$c/= :: ReportInstanceStatus -> ReportInstanceStatus -> Bool
== :: ReportInstanceStatus -> ReportInstanceStatus -> Bool
$c== :: ReportInstanceStatus -> ReportInstanceStatus -> Bool
Prelude.Eq, ReadPrec [ReportInstanceStatus]
ReadPrec ReportInstanceStatus
Int -> ReadS ReportInstanceStatus
ReadS [ReportInstanceStatus]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ReportInstanceStatus]
$creadListPrec :: ReadPrec [ReportInstanceStatus]
readPrec :: ReadPrec ReportInstanceStatus
$creadPrec :: ReadPrec ReportInstanceStatus
readList :: ReadS [ReportInstanceStatus]
$creadList :: ReadS [ReportInstanceStatus]
readsPrec :: Int -> ReadS ReportInstanceStatus
$creadsPrec :: Int -> ReadS ReportInstanceStatus
Prelude.Read, Int -> ReportInstanceStatus -> ShowS
[ReportInstanceStatus] -> ShowS
ReportInstanceStatus -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReportInstanceStatus] -> ShowS
$cshowList :: [ReportInstanceStatus] -> ShowS
show :: ReportInstanceStatus -> String
$cshow :: ReportInstanceStatus -> String
showsPrec :: Int -> ReportInstanceStatus -> ShowS
$cshowsPrec :: Int -> ReportInstanceStatus -> ShowS
Prelude.Show, forall x. Rep ReportInstanceStatus x -> ReportInstanceStatus
forall x. ReportInstanceStatus -> Rep ReportInstanceStatus x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ReportInstanceStatus x -> ReportInstanceStatus
$cfrom :: forall x. ReportInstanceStatus -> Rep ReportInstanceStatus x
Prelude.Generic)

-- |
-- Create a value of 'ReportInstanceStatus' 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:
--
-- 'description', 'reportInstanceStatus_description' - Descriptive text about the health state of your instance.
--
-- 'dryRun', 'reportInstanceStatus_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'endTime', 'reportInstanceStatus_endTime' - The time at which the reported instance health state ended.
--
-- 'startTime', 'reportInstanceStatus_startTime' - The time at which the reported instance health state began.
--
-- 'instances', 'reportInstanceStatus_instances' - The instances.
--
-- 'reasonCodes', 'reportInstanceStatus_reasonCodes' - The reason codes that describe the health state of your instance.
--
-- -   @instance-stuck-in-state@: My instance is stuck in a state.
--
-- -   @unresponsive@: My instance is unresponsive.
--
-- -   @not-accepting-credentials@: My instance is not accepting my
--     credentials.
--
-- -   @password-not-available@: A password is not available for my
--     instance.
--
-- -   @performance-network@: My instance is experiencing performance
--     problems that I believe are network related.
--
-- -   @performance-instance-store@: My instance is experiencing
--     performance problems that I believe are related to the instance
--     stores.
--
-- -   @performance-ebs-volume@: My instance is experiencing performance
--     problems that I believe are related to an EBS volume.
--
-- -   @performance-other@: My instance is experiencing performance
--     problems.
--
-- -   @other@: [explain using the description parameter]
--
-- 'status', 'reportInstanceStatus_status' - The status of all instances listed.
newReportInstanceStatus ::
  -- | 'status'
  ReportStatusType ->
  ReportInstanceStatus
newReportInstanceStatus :: ReportStatusType -> ReportInstanceStatus
newReportInstanceStatus ReportStatusType
pStatus_ =
  ReportInstanceStatus'
    { $sel:description:ReportInstanceStatus' :: Maybe Text
description =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dryRun:ReportInstanceStatus' :: Maybe Bool
dryRun = forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:ReportInstanceStatus' :: Maybe ISO8601
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:ReportInstanceStatus' :: Maybe ISO8601
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:instances:ReportInstanceStatus' :: [Text]
instances = forall a. Monoid a => a
Prelude.mempty,
      $sel:reasonCodes:ReportInstanceStatus' :: [ReportInstanceReasonCodes]
reasonCodes = forall a. Monoid a => a
Prelude.mempty,
      $sel:status:ReportInstanceStatus' :: ReportStatusType
status = ReportStatusType
pStatus_
    }

-- | Descriptive text about the health state of your instance.
reportInstanceStatus_description :: Lens.Lens' ReportInstanceStatus (Prelude.Maybe Prelude.Text)
reportInstanceStatus_description :: Lens' ReportInstanceStatus (Maybe Text)
reportInstanceStatus_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportInstanceStatus' {Maybe Text
description :: Maybe Text
$sel:description:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe Text
description} -> Maybe Text
description) (\s :: ReportInstanceStatus
s@ReportInstanceStatus' {} Maybe Text
a -> ReportInstanceStatus
s {$sel:description:ReportInstanceStatus' :: Maybe Text
description = Maybe Text
a} :: ReportInstanceStatus)

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
reportInstanceStatus_dryRun :: Lens.Lens' ReportInstanceStatus (Prelude.Maybe Prelude.Bool)
reportInstanceStatus_dryRun :: Lens' ReportInstanceStatus (Maybe Bool)
reportInstanceStatus_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportInstanceStatus' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: ReportInstanceStatus
s@ReportInstanceStatus' {} Maybe Bool
a -> ReportInstanceStatus
s {$sel:dryRun:ReportInstanceStatus' :: Maybe Bool
dryRun = Maybe Bool
a} :: ReportInstanceStatus)

-- | The time at which the reported instance health state ended.
reportInstanceStatus_endTime :: Lens.Lens' ReportInstanceStatus (Prelude.Maybe Prelude.UTCTime)
reportInstanceStatus_endTime :: Lens' ReportInstanceStatus (Maybe UTCTime)
reportInstanceStatus_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportInstanceStatus' {Maybe ISO8601
endTime :: Maybe ISO8601
$sel:endTime:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe ISO8601
endTime} -> Maybe ISO8601
endTime) (\s :: ReportInstanceStatus
s@ReportInstanceStatus' {} Maybe ISO8601
a -> ReportInstanceStatus
s {$sel:endTime:ReportInstanceStatus' :: Maybe ISO8601
endTime = Maybe ISO8601
a} :: ReportInstanceStatus) 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 :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The time at which the reported instance health state began.
reportInstanceStatus_startTime :: Lens.Lens' ReportInstanceStatus (Prelude.Maybe Prelude.UTCTime)
reportInstanceStatus_startTime :: Lens' ReportInstanceStatus (Maybe UTCTime)
reportInstanceStatus_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportInstanceStatus' {Maybe ISO8601
startTime :: Maybe ISO8601
$sel:startTime:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe ISO8601
startTime} -> Maybe ISO8601
startTime) (\s :: ReportInstanceStatus
s@ReportInstanceStatus' {} Maybe ISO8601
a -> ReportInstanceStatus
s {$sel:startTime:ReportInstanceStatus' :: Maybe ISO8601
startTime = Maybe ISO8601
a} :: ReportInstanceStatus) 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 :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The instances.
reportInstanceStatus_instances :: Lens.Lens' ReportInstanceStatus [Prelude.Text]
reportInstanceStatus_instances :: Lens' ReportInstanceStatus [Text]
reportInstanceStatus_instances = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportInstanceStatus' {[Text]
instances :: [Text]
$sel:instances:ReportInstanceStatus' :: ReportInstanceStatus -> [Text]
instances} -> [Text]
instances) (\s :: ReportInstanceStatus
s@ReportInstanceStatus' {} [Text]
a -> ReportInstanceStatus
s {$sel:instances:ReportInstanceStatus' :: [Text]
instances = [Text]
a} :: ReportInstanceStatus) 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

-- | The reason codes that describe the health state of your instance.
--
-- -   @instance-stuck-in-state@: My instance is stuck in a state.
--
-- -   @unresponsive@: My instance is unresponsive.
--
-- -   @not-accepting-credentials@: My instance is not accepting my
--     credentials.
--
-- -   @password-not-available@: A password is not available for my
--     instance.
--
-- -   @performance-network@: My instance is experiencing performance
--     problems that I believe are network related.
--
-- -   @performance-instance-store@: My instance is experiencing
--     performance problems that I believe are related to the instance
--     stores.
--
-- -   @performance-ebs-volume@: My instance is experiencing performance
--     problems that I believe are related to an EBS volume.
--
-- -   @performance-other@: My instance is experiencing performance
--     problems.
--
-- -   @other@: [explain using the description parameter]
reportInstanceStatus_reasonCodes :: Lens.Lens' ReportInstanceStatus [ReportInstanceReasonCodes]
reportInstanceStatus_reasonCodes :: Lens' ReportInstanceStatus [ReportInstanceReasonCodes]
reportInstanceStatus_reasonCodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportInstanceStatus' {[ReportInstanceReasonCodes]
reasonCodes :: [ReportInstanceReasonCodes]
$sel:reasonCodes:ReportInstanceStatus' :: ReportInstanceStatus -> [ReportInstanceReasonCodes]
reasonCodes} -> [ReportInstanceReasonCodes]
reasonCodes) (\s :: ReportInstanceStatus
s@ReportInstanceStatus' {} [ReportInstanceReasonCodes]
a -> ReportInstanceStatus
s {$sel:reasonCodes:ReportInstanceStatus' :: [ReportInstanceReasonCodes]
reasonCodes = [ReportInstanceReasonCodes]
a} :: ReportInstanceStatus) 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

-- | The status of all instances listed.
reportInstanceStatus_status :: Lens.Lens' ReportInstanceStatus ReportStatusType
reportInstanceStatus_status :: Lens' ReportInstanceStatus ReportStatusType
reportInstanceStatus_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportInstanceStatus' {ReportStatusType
status :: ReportStatusType
$sel:status:ReportInstanceStatus' :: ReportInstanceStatus -> ReportStatusType
status} -> ReportStatusType
status) (\s :: ReportInstanceStatus
s@ReportInstanceStatus' {} ReportStatusType
a -> ReportInstanceStatus
s {$sel:status:ReportInstanceStatus' :: ReportStatusType
status = ReportStatusType
a} :: ReportInstanceStatus)

instance Core.AWSRequest ReportInstanceStatus where
  type
    AWSResponse ReportInstanceStatus =
      ReportInstanceStatusResponse
  request :: (Service -> Service)
-> ReportInstanceStatus -> Request ReportInstanceStatus
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ReportInstanceStatus
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ReportInstanceStatus)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull ReportInstanceStatusResponse
ReportInstanceStatusResponse'

instance Prelude.Hashable ReportInstanceStatus where
  hashWithSalt :: Int -> ReportInstanceStatus -> Int
hashWithSalt Int
_salt ReportInstanceStatus' {[Text]
[ReportInstanceReasonCodes]
Maybe Bool
Maybe Text
Maybe ISO8601
ReportStatusType
status :: ReportStatusType
reasonCodes :: [ReportInstanceReasonCodes]
instances :: [Text]
startTime :: Maybe ISO8601
endTime :: Maybe ISO8601
dryRun :: Maybe Bool
description :: Maybe Text
$sel:status:ReportInstanceStatus' :: ReportInstanceStatus -> ReportStatusType
$sel:reasonCodes:ReportInstanceStatus' :: ReportInstanceStatus -> [ReportInstanceReasonCodes]
$sel:instances:ReportInstanceStatus' :: ReportInstanceStatus -> [Text]
$sel:startTime:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe ISO8601
$sel:endTime:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe ISO8601
$sel:dryRun:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe Bool
$sel:description:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Text]
instances
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [ReportInstanceReasonCodes]
reasonCodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ReportStatusType
status

instance Prelude.NFData ReportInstanceStatus where
  rnf :: ReportInstanceStatus -> ()
rnf ReportInstanceStatus' {[Text]
[ReportInstanceReasonCodes]
Maybe Bool
Maybe Text
Maybe ISO8601
ReportStatusType
status :: ReportStatusType
reasonCodes :: [ReportInstanceReasonCodes]
instances :: [Text]
startTime :: Maybe ISO8601
endTime :: Maybe ISO8601
dryRun :: Maybe Bool
description :: Maybe Text
$sel:status:ReportInstanceStatus' :: ReportInstanceStatus -> ReportStatusType
$sel:reasonCodes:ReportInstanceStatus' :: ReportInstanceStatus -> [ReportInstanceReasonCodes]
$sel:instances:ReportInstanceStatus' :: ReportInstanceStatus -> [Text]
$sel:startTime:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe ISO8601
$sel:endTime:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe ISO8601
$sel:dryRun:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe Bool
$sel:description:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Text]
instances
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [ReportInstanceReasonCodes]
reasonCodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ReportStatusType
status

instance Data.ToHeaders ReportInstanceStatus where
  toHeaders :: ReportInstanceStatus -> [Header]
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath ReportInstanceStatus where
  toPath :: ReportInstanceStatus -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery ReportInstanceStatus where
  toQuery :: ReportInstanceStatus -> QueryString
toQuery ReportInstanceStatus' {[Text]
[ReportInstanceReasonCodes]
Maybe Bool
Maybe Text
Maybe ISO8601
ReportStatusType
status :: ReportStatusType
reasonCodes :: [ReportInstanceReasonCodes]
instances :: [Text]
startTime :: Maybe ISO8601
endTime :: Maybe ISO8601
dryRun :: Maybe Bool
description :: Maybe Text
$sel:status:ReportInstanceStatus' :: ReportInstanceStatus -> ReportStatusType
$sel:reasonCodes:ReportInstanceStatus' :: ReportInstanceStatus -> [ReportInstanceReasonCodes]
$sel:instances:ReportInstanceStatus' :: ReportInstanceStatus -> [Text]
$sel:startTime:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe ISO8601
$sel:endTime:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe ISO8601
$sel:dryRun:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe Bool
$sel:description:ReportInstanceStatus' :: ReportInstanceStatus -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"ReportInstanceStatus" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"Description" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
description,
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"EndTime" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ISO8601
endTime,
        ByteString
"StartTime" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ISO8601
startTime,
        forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"InstanceId" [Text]
instances,
        forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"ReasonCode" [ReportInstanceReasonCodes]
reasonCodes,
        ByteString
"Status" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ReportStatusType
status
      ]

-- | /See:/ 'newReportInstanceStatusResponse' smart constructor.
data ReportInstanceStatusResponse = ReportInstanceStatusResponse'
  {
  }
  deriving (ReportInstanceStatusResponse
-> ReportInstanceStatusResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReportInstanceStatusResponse
-> ReportInstanceStatusResponse -> Bool
$c/= :: ReportInstanceStatusResponse
-> ReportInstanceStatusResponse -> Bool
== :: ReportInstanceStatusResponse
-> ReportInstanceStatusResponse -> Bool
$c== :: ReportInstanceStatusResponse
-> ReportInstanceStatusResponse -> Bool
Prelude.Eq, ReadPrec [ReportInstanceStatusResponse]
ReadPrec ReportInstanceStatusResponse
Int -> ReadS ReportInstanceStatusResponse
ReadS [ReportInstanceStatusResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ReportInstanceStatusResponse]
$creadListPrec :: ReadPrec [ReportInstanceStatusResponse]
readPrec :: ReadPrec ReportInstanceStatusResponse
$creadPrec :: ReadPrec ReportInstanceStatusResponse
readList :: ReadS [ReportInstanceStatusResponse]
$creadList :: ReadS [ReportInstanceStatusResponse]
readsPrec :: Int -> ReadS ReportInstanceStatusResponse
$creadsPrec :: Int -> ReadS ReportInstanceStatusResponse
Prelude.Read, Int -> ReportInstanceStatusResponse -> ShowS
[ReportInstanceStatusResponse] -> ShowS
ReportInstanceStatusResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReportInstanceStatusResponse] -> ShowS
$cshowList :: [ReportInstanceStatusResponse] -> ShowS
show :: ReportInstanceStatusResponse -> String
$cshow :: ReportInstanceStatusResponse -> String
showsPrec :: Int -> ReportInstanceStatusResponse -> ShowS
$cshowsPrec :: Int -> ReportInstanceStatusResponse -> ShowS
Prelude.Show, forall x.
Rep ReportInstanceStatusResponse x -> ReportInstanceStatusResponse
forall x.
ReportInstanceStatusResponse -> Rep ReportInstanceStatusResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ReportInstanceStatusResponse x -> ReportInstanceStatusResponse
$cfrom :: forall x.
ReportInstanceStatusResponse -> Rep ReportInstanceStatusResponse x
Prelude.Generic)

-- |
-- Create a value of 'ReportInstanceStatusResponse' 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.
newReportInstanceStatusResponse ::
  ReportInstanceStatusResponse
newReportInstanceStatusResponse :: ReportInstanceStatusResponse
newReportInstanceStatusResponse =
  ReportInstanceStatusResponse
ReportInstanceStatusResponse'

instance Prelude.NFData ReportInstanceStatusResponse where
  rnf :: ReportInstanceStatusResponse -> ()
rnf ReportInstanceStatusResponse
_ = ()