packages feed

amazonka-clouddirectory-2.0: gen/Amazonka/CloudDirectory/UpgradeAppliedSchema.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.CloudDirectory.UpgradeAppliedSchema
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Upgrades a single directory in-place using the @PublishedSchemaArn@ with
-- schema updates found in @MinorVersion@. Backwards-compatible minor
-- version upgrades are instantaneously available for readers on all
-- objects in the directory. Note: This is a synchronous API call and
-- upgrades only one schema on a given directory per call. To upgrade
-- multiple directories from one schema, you would need to call this API on
-- each directory.
module Amazonka.CloudDirectory.UpgradeAppliedSchema
  ( -- * Creating a Request
    UpgradeAppliedSchema (..),
    newUpgradeAppliedSchema,

    -- * Request Lenses
    upgradeAppliedSchema_dryRun,
    upgradeAppliedSchema_publishedSchemaArn,
    upgradeAppliedSchema_directoryArn,

    -- * Destructuring the Response
    UpgradeAppliedSchemaResponse (..),
    newUpgradeAppliedSchemaResponse,

    -- * Response Lenses
    upgradeAppliedSchemaResponse_directoryArn,
    upgradeAppliedSchemaResponse_upgradedSchemaArn,
    upgradeAppliedSchemaResponse_httpStatus,
  )
where

import Amazonka.CloudDirectory.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:/ 'newUpgradeAppliedSchema' smart constructor.
data UpgradeAppliedSchema = UpgradeAppliedSchema'
  { -- | Used for testing whether the major version schemas are backward
    -- compatible or not. If schema compatibility fails, an exception would be
    -- thrown else the call would succeed but no changes will be saved. This
    -- parameter is optional.
    dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The revision of the published schema to upgrade the directory to.
    publishedSchemaArn :: Prelude.Text,
    -- | The ARN for the directory to which the upgraded schema will be applied.
    directoryArn :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'UpgradeAppliedSchema' 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:
--
-- 'dryRun', 'upgradeAppliedSchema_dryRun' - Used for testing whether the major version schemas are backward
-- compatible or not. If schema compatibility fails, an exception would be
-- thrown else the call would succeed but no changes will be saved. This
-- parameter is optional.
--
-- 'publishedSchemaArn', 'upgradeAppliedSchema_publishedSchemaArn' - The revision of the published schema to upgrade the directory to.
--
-- 'directoryArn', 'upgradeAppliedSchema_directoryArn' - The ARN for the directory to which the upgraded schema will be applied.
newUpgradeAppliedSchema ::
  -- | 'publishedSchemaArn'
  Prelude.Text ->
  -- | 'directoryArn'
  Prelude.Text ->
  UpgradeAppliedSchema
newUpgradeAppliedSchema
  pPublishedSchemaArn_
  pDirectoryArn_ =
    UpgradeAppliedSchema'
      { dryRun = Prelude.Nothing,
        publishedSchemaArn = pPublishedSchemaArn_,
        directoryArn = pDirectoryArn_
      }

-- | Used for testing whether the major version schemas are backward
-- compatible or not. If schema compatibility fails, an exception would be
-- thrown else the call would succeed but no changes will be saved. This
-- parameter is optional.
upgradeAppliedSchema_dryRun :: Lens.Lens' UpgradeAppliedSchema (Prelude.Maybe Prelude.Bool)
upgradeAppliedSchema_dryRun = Lens.lens (\UpgradeAppliedSchema' {dryRun} -> dryRun) (\s@UpgradeAppliedSchema' {} a -> s {dryRun = a} :: UpgradeAppliedSchema)

-- | The revision of the published schema to upgrade the directory to.
upgradeAppliedSchema_publishedSchemaArn :: Lens.Lens' UpgradeAppliedSchema Prelude.Text
upgradeAppliedSchema_publishedSchemaArn = Lens.lens (\UpgradeAppliedSchema' {publishedSchemaArn} -> publishedSchemaArn) (\s@UpgradeAppliedSchema' {} a -> s {publishedSchemaArn = a} :: UpgradeAppliedSchema)

-- | The ARN for the directory to which the upgraded schema will be applied.
upgradeAppliedSchema_directoryArn :: Lens.Lens' UpgradeAppliedSchema Prelude.Text
upgradeAppliedSchema_directoryArn = Lens.lens (\UpgradeAppliedSchema' {directoryArn} -> directoryArn) (\s@UpgradeAppliedSchema' {} a -> s {directoryArn = a} :: UpgradeAppliedSchema)

instance Core.AWSRequest UpgradeAppliedSchema where
  type
    AWSResponse UpgradeAppliedSchema =
      UpgradeAppliedSchemaResponse
  request overrides =
    Request.putJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          UpgradeAppliedSchemaResponse'
            Prelude.<$> (x Data..?> "DirectoryArn")
            Prelude.<*> (x Data..?> "UpgradedSchemaArn")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable UpgradeAppliedSchema where
  hashWithSalt _salt UpgradeAppliedSchema' {..} =
    _salt
      `Prelude.hashWithSalt` dryRun
      `Prelude.hashWithSalt` publishedSchemaArn
      `Prelude.hashWithSalt` directoryArn

instance Prelude.NFData UpgradeAppliedSchema where
  rnf UpgradeAppliedSchema' {..} =
    Prelude.rnf dryRun
      `Prelude.seq` Prelude.rnf publishedSchemaArn
      `Prelude.seq` Prelude.rnf directoryArn

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

instance Data.ToJSON UpgradeAppliedSchema where
  toJSON UpgradeAppliedSchema' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("DryRun" Data..=) Prelude.<$> dryRun,
            Prelude.Just
              ("PublishedSchemaArn" Data..= publishedSchemaArn),
            Prelude.Just ("DirectoryArn" Data..= directoryArn)
          ]
      )

instance Data.ToPath UpgradeAppliedSchema where
  toPath =
    Prelude.const
      "/amazonclouddirectory/2017-01-11/schema/upgradeapplied"

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

-- | /See:/ 'newUpgradeAppliedSchemaResponse' smart constructor.
data UpgradeAppliedSchemaResponse = UpgradeAppliedSchemaResponse'
  { -- | The ARN of the directory that is returned as part of the response.
    directoryArn :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the upgraded schema that is returned as part of the response.
    upgradedSchemaArn :: 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 'UpgradeAppliedSchemaResponse' 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:
--
-- 'directoryArn', 'upgradeAppliedSchemaResponse_directoryArn' - The ARN of the directory that is returned as part of the response.
--
-- 'upgradedSchemaArn', 'upgradeAppliedSchemaResponse_upgradedSchemaArn' - The ARN of the upgraded schema that is returned as part of the response.
--
-- 'httpStatus', 'upgradeAppliedSchemaResponse_httpStatus' - The response's http status code.
newUpgradeAppliedSchemaResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpgradeAppliedSchemaResponse
newUpgradeAppliedSchemaResponse pHttpStatus_ =
  UpgradeAppliedSchemaResponse'
    { directoryArn =
        Prelude.Nothing,
      upgradedSchemaArn = Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | The ARN of the directory that is returned as part of the response.
upgradeAppliedSchemaResponse_directoryArn :: Lens.Lens' UpgradeAppliedSchemaResponse (Prelude.Maybe Prelude.Text)
upgradeAppliedSchemaResponse_directoryArn = Lens.lens (\UpgradeAppliedSchemaResponse' {directoryArn} -> directoryArn) (\s@UpgradeAppliedSchemaResponse' {} a -> s {directoryArn = a} :: UpgradeAppliedSchemaResponse)

-- | The ARN of the upgraded schema that is returned as part of the response.
upgradeAppliedSchemaResponse_upgradedSchemaArn :: Lens.Lens' UpgradeAppliedSchemaResponse (Prelude.Maybe Prelude.Text)
upgradeAppliedSchemaResponse_upgradedSchemaArn = Lens.lens (\UpgradeAppliedSchemaResponse' {upgradedSchemaArn} -> upgradedSchemaArn) (\s@UpgradeAppliedSchemaResponse' {} a -> s {upgradedSchemaArn = a} :: UpgradeAppliedSchemaResponse)

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

instance Prelude.NFData UpgradeAppliedSchemaResponse where
  rnf UpgradeAppliedSchemaResponse' {..} =
    Prelude.rnf directoryArn
      `Prelude.seq` Prelude.rnf upgradedSchemaArn
      `Prelude.seq` Prelude.rnf httpStatus