packages feed

amazonka-amplifybackend-2.0: gen/Amazonka/AmplifyBackend/GetBackendAPI.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.AmplifyBackend.GetBackendAPI
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets the details for a backend API.
module Amazonka.AmplifyBackend.GetBackendAPI
  ( -- * Creating a Request
    GetBackendAPI (..),
    newGetBackendAPI,

    -- * Request Lenses
    getBackendAPI_resourceConfig,
    getBackendAPI_appId,
    getBackendAPI_backendEnvironmentName,
    getBackendAPI_resourceName,

    -- * Destructuring the Response
    GetBackendAPIResponse (..),
    newGetBackendAPIResponse,

    -- * Response Lenses
    getBackendAPIResponse_appId,
    getBackendAPIResponse_backendEnvironmentName,
    getBackendAPIResponse_error,
    getBackendAPIResponse_resourceConfig,
    getBackendAPIResponse_resourceName,
    getBackendAPIResponse_httpStatus,
  )
where

import Amazonka.AmplifyBackend.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

-- | The request body for GetBackendAPI.
--
-- /See:/ 'newGetBackendAPI' smart constructor.
data GetBackendAPI = GetBackendAPI'
  { -- | Defines the resource configuration for the data model in your Amplify
    -- project.
    resourceConfig :: Prelude.Maybe BackendAPIResourceConfig,
    -- | The app ID.
    appId :: Prelude.Text,
    -- | The name of the backend environment.
    backendEnvironmentName :: Prelude.Text,
    -- | The name of this resource.
    resourceName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'GetBackendAPI' 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:
--
-- 'resourceConfig', 'getBackendAPI_resourceConfig' - Defines the resource configuration for the data model in your Amplify
-- project.
--
-- 'appId', 'getBackendAPI_appId' - The app ID.
--
-- 'backendEnvironmentName', 'getBackendAPI_backendEnvironmentName' - The name of the backend environment.
--
-- 'resourceName', 'getBackendAPI_resourceName' - The name of this resource.
newGetBackendAPI ::
  -- | 'appId'
  Prelude.Text ->
  -- | 'backendEnvironmentName'
  Prelude.Text ->
  -- | 'resourceName'
  Prelude.Text ->
  GetBackendAPI
newGetBackendAPI
  pAppId_
  pBackendEnvironmentName_
  pResourceName_ =
    GetBackendAPI'
      { resourceConfig = Prelude.Nothing,
        appId = pAppId_,
        backendEnvironmentName = pBackendEnvironmentName_,
        resourceName = pResourceName_
      }

-- | Defines the resource configuration for the data model in your Amplify
-- project.
getBackendAPI_resourceConfig :: Lens.Lens' GetBackendAPI (Prelude.Maybe BackendAPIResourceConfig)
getBackendAPI_resourceConfig = Lens.lens (\GetBackendAPI' {resourceConfig} -> resourceConfig) (\s@GetBackendAPI' {} a -> s {resourceConfig = a} :: GetBackendAPI)

-- | The app ID.
getBackendAPI_appId :: Lens.Lens' GetBackendAPI Prelude.Text
getBackendAPI_appId = Lens.lens (\GetBackendAPI' {appId} -> appId) (\s@GetBackendAPI' {} a -> s {appId = a} :: GetBackendAPI)

-- | The name of the backend environment.
getBackendAPI_backendEnvironmentName :: Lens.Lens' GetBackendAPI Prelude.Text
getBackendAPI_backendEnvironmentName = Lens.lens (\GetBackendAPI' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendAPI' {} a -> s {backendEnvironmentName = a} :: GetBackendAPI)

-- | The name of this resource.
getBackendAPI_resourceName :: Lens.Lens' GetBackendAPI Prelude.Text
getBackendAPI_resourceName = Lens.lens (\GetBackendAPI' {resourceName} -> resourceName) (\s@GetBackendAPI' {} a -> s {resourceName = a} :: GetBackendAPI)

instance Core.AWSRequest GetBackendAPI where
  type
    AWSResponse GetBackendAPI =
      GetBackendAPIResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          GetBackendAPIResponse'
            Prelude.<$> (x Data..?> "appId")
            Prelude.<*> (x Data..?> "backendEnvironmentName")
            Prelude.<*> (x Data..?> "error")
            Prelude.<*> (x Data..?> "resourceConfig")
            Prelude.<*> (x Data..?> "resourceName")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable GetBackendAPI where
  hashWithSalt _salt GetBackendAPI' {..} =
    _salt
      `Prelude.hashWithSalt` resourceConfig
      `Prelude.hashWithSalt` appId
      `Prelude.hashWithSalt` backendEnvironmentName
      `Prelude.hashWithSalt` resourceName

instance Prelude.NFData GetBackendAPI where
  rnf GetBackendAPI' {..} =
    Prelude.rnf resourceConfig
      `Prelude.seq` Prelude.rnf appId
      `Prelude.seq` Prelude.rnf backendEnvironmentName
      `Prelude.seq` Prelude.rnf resourceName

instance Data.ToHeaders GetBackendAPI where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON GetBackendAPI where
  toJSON GetBackendAPI' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("resourceConfig" Data..=)
              Prelude.<$> resourceConfig,
            Prelude.Just ("resourceName" Data..= resourceName)
          ]
      )

instance Data.ToPath GetBackendAPI where
  toPath GetBackendAPI' {..} =
    Prelude.mconcat
      [ "/backend/",
        Data.toBS appId,
        "/api/",
        Data.toBS backendEnvironmentName,
        "/details"
      ]

instance Data.ToQuery GetBackendAPI where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newGetBackendAPIResponse' smart constructor.
data GetBackendAPIResponse = GetBackendAPIResponse'
  { -- | The app ID.
    appId :: Prelude.Maybe Prelude.Text,
    -- | The name of the backend environment.
    backendEnvironmentName :: Prelude.Maybe Prelude.Text,
    -- | If the request fails, this error is returned.
    error :: Prelude.Maybe Prelude.Text,
    -- | The resource configuration for this response object.
    resourceConfig :: Prelude.Maybe BackendAPIResourceConfig,
    -- | The name of this resource.
    resourceName :: 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 'GetBackendAPIResponse' 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:
--
-- 'appId', 'getBackendAPIResponse_appId' - The app ID.
--
-- 'backendEnvironmentName', 'getBackendAPIResponse_backendEnvironmentName' - The name of the backend environment.
--
-- 'error', 'getBackendAPIResponse_error' - If the request fails, this error is returned.
--
-- 'resourceConfig', 'getBackendAPIResponse_resourceConfig' - The resource configuration for this response object.
--
-- 'resourceName', 'getBackendAPIResponse_resourceName' - The name of this resource.
--
-- 'httpStatus', 'getBackendAPIResponse_httpStatus' - The response's http status code.
newGetBackendAPIResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetBackendAPIResponse
newGetBackendAPIResponse pHttpStatus_ =
  GetBackendAPIResponse'
    { appId = Prelude.Nothing,
      backendEnvironmentName = Prelude.Nothing,
      error = Prelude.Nothing,
      resourceConfig = Prelude.Nothing,
      resourceName = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The app ID.
getBackendAPIResponse_appId :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe Prelude.Text)
getBackendAPIResponse_appId = Lens.lens (\GetBackendAPIResponse' {appId} -> appId) (\s@GetBackendAPIResponse' {} a -> s {appId = a} :: GetBackendAPIResponse)

-- | The name of the backend environment.
getBackendAPIResponse_backendEnvironmentName :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe Prelude.Text)
getBackendAPIResponse_backendEnvironmentName = Lens.lens (\GetBackendAPIResponse' {backendEnvironmentName} -> backendEnvironmentName) (\s@GetBackendAPIResponse' {} a -> s {backendEnvironmentName = a} :: GetBackendAPIResponse)

-- | If the request fails, this error is returned.
getBackendAPIResponse_error :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe Prelude.Text)
getBackendAPIResponse_error = Lens.lens (\GetBackendAPIResponse' {error} -> error) (\s@GetBackendAPIResponse' {} a -> s {error = a} :: GetBackendAPIResponse)

-- | The resource configuration for this response object.
getBackendAPIResponse_resourceConfig :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe BackendAPIResourceConfig)
getBackendAPIResponse_resourceConfig = Lens.lens (\GetBackendAPIResponse' {resourceConfig} -> resourceConfig) (\s@GetBackendAPIResponse' {} a -> s {resourceConfig = a} :: GetBackendAPIResponse)

-- | The name of this resource.
getBackendAPIResponse_resourceName :: Lens.Lens' GetBackendAPIResponse (Prelude.Maybe Prelude.Text)
getBackendAPIResponse_resourceName = Lens.lens (\GetBackendAPIResponse' {resourceName} -> resourceName) (\s@GetBackendAPIResponse' {} a -> s {resourceName = a} :: GetBackendAPIResponse)

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

instance Prelude.NFData GetBackendAPIResponse where
  rnf GetBackendAPIResponse' {..} =
    Prelude.rnf appId
      `Prelude.seq` Prelude.rnf backendEnvironmentName
      `Prelude.seq` Prelude.rnf error
      `Prelude.seq` Prelude.rnf resourceConfig
      `Prelude.seq` Prelude.rnf resourceName
      `Prelude.seq` Prelude.rnf httpStatus