{-# 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.AppSync.GetSchemaCreationStatus
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves the current status of a schema creation operation.
module Amazonka.AppSync.GetSchemaCreationStatus
  ( -- * Creating a Request
    GetSchemaCreationStatus (..),
    newGetSchemaCreationStatus,

    -- * Request Lenses
    getSchemaCreationStatus_apiId,

    -- * Destructuring the Response
    GetSchemaCreationStatusResponse (..),
    newGetSchemaCreationStatusResponse,

    -- * Response Lenses
    getSchemaCreationStatusResponse_details,
    getSchemaCreationStatusResponse_status,
    getSchemaCreationStatusResponse_httpStatus,
  )
where

import Amazonka.AppSync.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:/ 'newGetSchemaCreationStatus' smart constructor.
data GetSchemaCreationStatus = GetSchemaCreationStatus'
  { -- | The API ID.
    GetSchemaCreationStatus -> Text
apiId :: Prelude.Text
  }
  deriving (GetSchemaCreationStatus -> GetSchemaCreationStatus -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetSchemaCreationStatus -> GetSchemaCreationStatus -> Bool
$c/= :: GetSchemaCreationStatus -> GetSchemaCreationStatus -> Bool
== :: GetSchemaCreationStatus -> GetSchemaCreationStatus -> Bool
$c== :: GetSchemaCreationStatus -> GetSchemaCreationStatus -> Bool
Prelude.Eq, ReadPrec [GetSchemaCreationStatus]
ReadPrec GetSchemaCreationStatus
Int -> ReadS GetSchemaCreationStatus
ReadS [GetSchemaCreationStatus]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetSchemaCreationStatus]
$creadListPrec :: ReadPrec [GetSchemaCreationStatus]
readPrec :: ReadPrec GetSchemaCreationStatus
$creadPrec :: ReadPrec GetSchemaCreationStatus
readList :: ReadS [GetSchemaCreationStatus]
$creadList :: ReadS [GetSchemaCreationStatus]
readsPrec :: Int -> ReadS GetSchemaCreationStatus
$creadsPrec :: Int -> ReadS GetSchemaCreationStatus
Prelude.Read, Int -> GetSchemaCreationStatus -> ShowS
[GetSchemaCreationStatus] -> ShowS
GetSchemaCreationStatus -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetSchemaCreationStatus] -> ShowS
$cshowList :: [GetSchemaCreationStatus] -> ShowS
show :: GetSchemaCreationStatus -> String
$cshow :: GetSchemaCreationStatus -> String
showsPrec :: Int -> GetSchemaCreationStatus -> ShowS
$cshowsPrec :: Int -> GetSchemaCreationStatus -> ShowS
Prelude.Show, forall x. Rep GetSchemaCreationStatus x -> GetSchemaCreationStatus
forall x. GetSchemaCreationStatus -> Rep GetSchemaCreationStatus x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetSchemaCreationStatus x -> GetSchemaCreationStatus
$cfrom :: forall x. GetSchemaCreationStatus -> Rep GetSchemaCreationStatus x
Prelude.Generic)

-- |
-- Create a value of 'GetSchemaCreationStatus' 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:
--
-- 'apiId', 'getSchemaCreationStatus_apiId' - The API ID.
newGetSchemaCreationStatus ::
  -- | 'apiId'
  Prelude.Text ->
  GetSchemaCreationStatus
newGetSchemaCreationStatus :: Text -> GetSchemaCreationStatus
newGetSchemaCreationStatus Text
pApiId_ =
  GetSchemaCreationStatus' {$sel:apiId:GetSchemaCreationStatus' :: Text
apiId = Text
pApiId_}

-- | The API ID.
getSchemaCreationStatus_apiId :: Lens.Lens' GetSchemaCreationStatus Prelude.Text
getSchemaCreationStatus_apiId :: Lens' GetSchemaCreationStatus Text
getSchemaCreationStatus_apiId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSchemaCreationStatus' {Text
apiId :: Text
$sel:apiId:GetSchemaCreationStatus' :: GetSchemaCreationStatus -> Text
apiId} -> Text
apiId) (\s :: GetSchemaCreationStatus
s@GetSchemaCreationStatus' {} Text
a -> GetSchemaCreationStatus
s {$sel:apiId:GetSchemaCreationStatus' :: Text
apiId = Text
a} :: GetSchemaCreationStatus)

instance Core.AWSRequest GetSchemaCreationStatus where
  type
    AWSResponse GetSchemaCreationStatus =
      GetSchemaCreationStatusResponse
  request :: (Service -> Service)
-> GetSchemaCreationStatus -> Request GetSchemaCreationStatus
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetSchemaCreationStatus
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetSchemaCreationStatus)))
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
-> Maybe SchemaStatus -> Int -> GetSchemaCreationStatusResponse
GetSchemaCreationStatusResponse'
            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
"details")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"status")
            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 GetSchemaCreationStatus where
  hashWithSalt :: Int -> GetSchemaCreationStatus -> Int
hashWithSalt Int
_salt GetSchemaCreationStatus' {Text
apiId :: Text
$sel:apiId:GetSchemaCreationStatus' :: GetSchemaCreationStatus -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
apiId

instance Prelude.NFData GetSchemaCreationStatus where
  rnf :: GetSchemaCreationStatus -> ()
rnf GetSchemaCreationStatus' {Text
apiId :: Text
$sel:apiId:GetSchemaCreationStatus' :: GetSchemaCreationStatus -> Text
..} = forall a. NFData a => a -> ()
Prelude.rnf Text
apiId

instance Data.ToHeaders GetSchemaCreationStatus where
  toHeaders :: GetSchemaCreationStatus -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath GetSchemaCreationStatus where
  toPath :: GetSchemaCreationStatus -> ByteString
toPath GetSchemaCreationStatus' {Text
apiId :: Text
$sel:apiId:GetSchemaCreationStatus' :: GetSchemaCreationStatus -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/v1/apis/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
apiId, ByteString
"/schemacreation"]

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

-- | /See:/ 'newGetSchemaCreationStatusResponse' smart constructor.
data GetSchemaCreationStatusResponse = GetSchemaCreationStatusResponse'
  { -- | Detailed information about the status of the schema creation operation.
    GetSchemaCreationStatusResponse -> Maybe Text
details :: Prelude.Maybe Prelude.Text,
    -- | The current state of the schema (PROCESSING, FAILED, SUCCESS, or
    -- NOT_APPLICABLE). When the schema is in the ACTIVE state, you can add
    -- data.
    GetSchemaCreationStatusResponse -> Maybe SchemaStatus
status :: Prelude.Maybe SchemaStatus,
    -- | The response's http status code.
    GetSchemaCreationStatusResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetSchemaCreationStatusResponse
-> GetSchemaCreationStatusResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetSchemaCreationStatusResponse
-> GetSchemaCreationStatusResponse -> Bool
$c/= :: GetSchemaCreationStatusResponse
-> GetSchemaCreationStatusResponse -> Bool
== :: GetSchemaCreationStatusResponse
-> GetSchemaCreationStatusResponse -> Bool
$c== :: GetSchemaCreationStatusResponse
-> GetSchemaCreationStatusResponse -> Bool
Prelude.Eq, ReadPrec [GetSchemaCreationStatusResponse]
ReadPrec GetSchemaCreationStatusResponse
Int -> ReadS GetSchemaCreationStatusResponse
ReadS [GetSchemaCreationStatusResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetSchemaCreationStatusResponse]
$creadListPrec :: ReadPrec [GetSchemaCreationStatusResponse]
readPrec :: ReadPrec GetSchemaCreationStatusResponse
$creadPrec :: ReadPrec GetSchemaCreationStatusResponse
readList :: ReadS [GetSchemaCreationStatusResponse]
$creadList :: ReadS [GetSchemaCreationStatusResponse]
readsPrec :: Int -> ReadS GetSchemaCreationStatusResponse
$creadsPrec :: Int -> ReadS GetSchemaCreationStatusResponse
Prelude.Read, Int -> GetSchemaCreationStatusResponse -> ShowS
[GetSchemaCreationStatusResponse] -> ShowS
GetSchemaCreationStatusResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetSchemaCreationStatusResponse] -> ShowS
$cshowList :: [GetSchemaCreationStatusResponse] -> ShowS
show :: GetSchemaCreationStatusResponse -> String
$cshow :: GetSchemaCreationStatusResponse -> String
showsPrec :: Int -> GetSchemaCreationStatusResponse -> ShowS
$cshowsPrec :: Int -> GetSchemaCreationStatusResponse -> ShowS
Prelude.Show, forall x.
Rep GetSchemaCreationStatusResponse x
-> GetSchemaCreationStatusResponse
forall x.
GetSchemaCreationStatusResponse
-> Rep GetSchemaCreationStatusResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetSchemaCreationStatusResponse x
-> GetSchemaCreationStatusResponse
$cfrom :: forall x.
GetSchemaCreationStatusResponse
-> Rep GetSchemaCreationStatusResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetSchemaCreationStatusResponse' 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:
--
-- 'details', 'getSchemaCreationStatusResponse_details' - Detailed information about the status of the schema creation operation.
--
-- 'status', 'getSchemaCreationStatusResponse_status' - The current state of the schema (PROCESSING, FAILED, SUCCESS, or
-- NOT_APPLICABLE). When the schema is in the ACTIVE state, you can add
-- data.
--
-- 'httpStatus', 'getSchemaCreationStatusResponse_httpStatus' - The response's http status code.
newGetSchemaCreationStatusResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetSchemaCreationStatusResponse
newGetSchemaCreationStatusResponse :: Int -> GetSchemaCreationStatusResponse
newGetSchemaCreationStatusResponse Int
pHttpStatus_ =
  GetSchemaCreationStatusResponse'
    { $sel:details:GetSchemaCreationStatusResponse' :: Maybe Text
details =
        forall a. Maybe a
Prelude.Nothing,
      $sel:status:GetSchemaCreationStatusResponse' :: Maybe SchemaStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetSchemaCreationStatusResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Detailed information about the status of the schema creation operation.
getSchemaCreationStatusResponse_details :: Lens.Lens' GetSchemaCreationStatusResponse (Prelude.Maybe Prelude.Text)
getSchemaCreationStatusResponse_details :: Lens' GetSchemaCreationStatusResponse (Maybe Text)
getSchemaCreationStatusResponse_details = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSchemaCreationStatusResponse' {Maybe Text
details :: Maybe Text
$sel:details:GetSchemaCreationStatusResponse' :: GetSchemaCreationStatusResponse -> Maybe Text
details} -> Maybe Text
details) (\s :: GetSchemaCreationStatusResponse
s@GetSchemaCreationStatusResponse' {} Maybe Text
a -> GetSchemaCreationStatusResponse
s {$sel:details:GetSchemaCreationStatusResponse' :: Maybe Text
details = Maybe Text
a} :: GetSchemaCreationStatusResponse)

-- | The current state of the schema (PROCESSING, FAILED, SUCCESS, or
-- NOT_APPLICABLE). When the schema is in the ACTIVE state, you can add
-- data.
getSchemaCreationStatusResponse_status :: Lens.Lens' GetSchemaCreationStatusResponse (Prelude.Maybe SchemaStatus)
getSchemaCreationStatusResponse_status :: Lens' GetSchemaCreationStatusResponse (Maybe SchemaStatus)
getSchemaCreationStatusResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSchemaCreationStatusResponse' {Maybe SchemaStatus
status :: Maybe SchemaStatus
$sel:status:GetSchemaCreationStatusResponse' :: GetSchemaCreationStatusResponse -> Maybe SchemaStatus
status} -> Maybe SchemaStatus
status) (\s :: GetSchemaCreationStatusResponse
s@GetSchemaCreationStatusResponse' {} Maybe SchemaStatus
a -> GetSchemaCreationStatusResponse
s {$sel:status:GetSchemaCreationStatusResponse' :: Maybe SchemaStatus
status = Maybe SchemaStatus
a} :: GetSchemaCreationStatusResponse)

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

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