{-# 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.Panorama.DeregisterPackageVersion
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deregisters a package version.
module Amazonka.Panorama.DeregisterPackageVersion
  ( -- * Creating a Request
    DeregisterPackageVersion (..),
    newDeregisterPackageVersion,

    -- * Request Lenses
    deregisterPackageVersion_ownerAccount,
    deregisterPackageVersion_updatedLatestPatchVersion,
    deregisterPackageVersion_packageId,
    deregisterPackageVersion_packageVersion,
    deregisterPackageVersion_patchVersion,

    -- * Destructuring the Response
    DeregisterPackageVersionResponse (..),
    newDeregisterPackageVersionResponse,

    -- * Response Lenses
    deregisterPackageVersionResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDeregisterPackageVersion' smart constructor.
data DeregisterPackageVersion = DeregisterPackageVersion'
  { -- | An owner account.
    DeregisterPackageVersion -> Maybe Text
ownerAccount :: Prelude.Maybe Prelude.Text,
    -- | If the version was marked latest, the new version to maker as latest.
    DeregisterPackageVersion -> Maybe Text
updatedLatestPatchVersion :: Prelude.Maybe Prelude.Text,
    -- | A package ID.
    DeregisterPackageVersion -> Text
packageId :: Prelude.Text,
    -- | A package version.
    DeregisterPackageVersion -> Text
packageVersion :: Prelude.Text,
    -- | A patch version.
    DeregisterPackageVersion -> Text
patchVersion :: Prelude.Text
  }
  deriving (DeregisterPackageVersion -> DeregisterPackageVersion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeregisterPackageVersion -> DeregisterPackageVersion -> Bool
$c/= :: DeregisterPackageVersion -> DeregisterPackageVersion -> Bool
== :: DeregisterPackageVersion -> DeregisterPackageVersion -> Bool
$c== :: DeregisterPackageVersion -> DeregisterPackageVersion -> Bool
Prelude.Eq, ReadPrec [DeregisterPackageVersion]
ReadPrec DeregisterPackageVersion
Int -> ReadS DeregisterPackageVersion
ReadS [DeregisterPackageVersion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeregisterPackageVersion]
$creadListPrec :: ReadPrec [DeregisterPackageVersion]
readPrec :: ReadPrec DeregisterPackageVersion
$creadPrec :: ReadPrec DeregisterPackageVersion
readList :: ReadS [DeregisterPackageVersion]
$creadList :: ReadS [DeregisterPackageVersion]
readsPrec :: Int -> ReadS DeregisterPackageVersion
$creadsPrec :: Int -> ReadS DeregisterPackageVersion
Prelude.Read, Int -> DeregisterPackageVersion -> ShowS
[DeregisterPackageVersion] -> ShowS
DeregisterPackageVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeregisterPackageVersion] -> ShowS
$cshowList :: [DeregisterPackageVersion] -> ShowS
show :: DeregisterPackageVersion -> String
$cshow :: DeregisterPackageVersion -> String
showsPrec :: Int -> DeregisterPackageVersion -> ShowS
$cshowsPrec :: Int -> DeregisterPackageVersion -> ShowS
Prelude.Show, forall x.
Rep DeregisterPackageVersion x -> DeregisterPackageVersion
forall x.
DeregisterPackageVersion -> Rep DeregisterPackageVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeregisterPackageVersion x -> DeregisterPackageVersion
$cfrom :: forall x.
DeregisterPackageVersion -> Rep DeregisterPackageVersion x
Prelude.Generic)

-- |
-- Create a value of 'DeregisterPackageVersion' 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:
--
-- 'ownerAccount', 'deregisterPackageVersion_ownerAccount' - An owner account.
--
-- 'updatedLatestPatchVersion', 'deregisterPackageVersion_updatedLatestPatchVersion' - If the version was marked latest, the new version to maker as latest.
--
-- 'packageId', 'deregisterPackageVersion_packageId' - A package ID.
--
-- 'packageVersion', 'deregisterPackageVersion_packageVersion' - A package version.
--
-- 'patchVersion', 'deregisterPackageVersion_patchVersion' - A patch version.
newDeregisterPackageVersion ::
  -- | 'packageId'
  Prelude.Text ->
  -- | 'packageVersion'
  Prelude.Text ->
  -- | 'patchVersion'
  Prelude.Text ->
  DeregisterPackageVersion
newDeregisterPackageVersion :: Text -> Text -> Text -> DeregisterPackageVersion
newDeregisterPackageVersion
  Text
pPackageId_
  Text
pPackageVersion_
  Text
pPatchVersion_ =
    DeregisterPackageVersion'
      { $sel:ownerAccount:DeregisterPackageVersion' :: Maybe Text
ownerAccount =
          forall a. Maybe a
Prelude.Nothing,
        $sel:updatedLatestPatchVersion:DeregisterPackageVersion' :: Maybe Text
updatedLatestPatchVersion = forall a. Maybe a
Prelude.Nothing,
        $sel:packageId:DeregisterPackageVersion' :: Text
packageId = Text
pPackageId_,
        $sel:packageVersion:DeregisterPackageVersion' :: Text
packageVersion = Text
pPackageVersion_,
        $sel:patchVersion:DeregisterPackageVersion' :: Text
patchVersion = Text
pPatchVersion_
      }

-- | An owner account.
deregisterPackageVersion_ownerAccount :: Lens.Lens' DeregisterPackageVersion (Prelude.Maybe Prelude.Text)
deregisterPackageVersion_ownerAccount :: Lens' DeregisterPackageVersion (Maybe Text)
deregisterPackageVersion_ownerAccount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeregisterPackageVersion' {Maybe Text
ownerAccount :: Maybe Text
$sel:ownerAccount:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
ownerAccount} -> Maybe Text
ownerAccount) (\s :: DeregisterPackageVersion
s@DeregisterPackageVersion' {} Maybe Text
a -> DeregisterPackageVersion
s {$sel:ownerAccount:DeregisterPackageVersion' :: Maybe Text
ownerAccount = Maybe Text
a} :: DeregisterPackageVersion)

-- | If the version was marked latest, the new version to maker as latest.
deregisterPackageVersion_updatedLatestPatchVersion :: Lens.Lens' DeregisterPackageVersion (Prelude.Maybe Prelude.Text)
deregisterPackageVersion_updatedLatestPatchVersion :: Lens' DeregisterPackageVersion (Maybe Text)
deregisterPackageVersion_updatedLatestPatchVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeregisterPackageVersion' {Maybe Text
updatedLatestPatchVersion :: Maybe Text
$sel:updatedLatestPatchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
updatedLatestPatchVersion} -> Maybe Text
updatedLatestPatchVersion) (\s :: DeregisterPackageVersion
s@DeregisterPackageVersion' {} Maybe Text
a -> DeregisterPackageVersion
s {$sel:updatedLatestPatchVersion:DeregisterPackageVersion' :: Maybe Text
updatedLatestPatchVersion = Maybe Text
a} :: DeregisterPackageVersion)

-- | A package ID.
deregisterPackageVersion_packageId :: Lens.Lens' DeregisterPackageVersion Prelude.Text
deregisterPackageVersion_packageId :: Lens' DeregisterPackageVersion Text
deregisterPackageVersion_packageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeregisterPackageVersion' {Text
packageId :: Text
$sel:packageId:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
packageId} -> Text
packageId) (\s :: DeregisterPackageVersion
s@DeregisterPackageVersion' {} Text
a -> DeregisterPackageVersion
s {$sel:packageId:DeregisterPackageVersion' :: Text
packageId = Text
a} :: DeregisterPackageVersion)

-- | A package version.
deregisterPackageVersion_packageVersion :: Lens.Lens' DeregisterPackageVersion Prelude.Text
deregisterPackageVersion_packageVersion :: Lens' DeregisterPackageVersion Text
deregisterPackageVersion_packageVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeregisterPackageVersion' {Text
packageVersion :: Text
$sel:packageVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
packageVersion} -> Text
packageVersion) (\s :: DeregisterPackageVersion
s@DeregisterPackageVersion' {} Text
a -> DeregisterPackageVersion
s {$sel:packageVersion:DeregisterPackageVersion' :: Text
packageVersion = Text
a} :: DeregisterPackageVersion)

-- | A patch version.
deregisterPackageVersion_patchVersion :: Lens.Lens' DeregisterPackageVersion Prelude.Text
deregisterPackageVersion_patchVersion :: Lens' DeregisterPackageVersion Text
deregisterPackageVersion_patchVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeregisterPackageVersion' {Text
patchVersion :: Text
$sel:patchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
patchVersion} -> Text
patchVersion) (\s :: DeregisterPackageVersion
s@DeregisterPackageVersion' {} Text
a -> DeregisterPackageVersion
s {$sel:patchVersion:DeregisterPackageVersion' :: Text
patchVersion = Text
a} :: DeregisterPackageVersion)

instance Core.AWSRequest DeregisterPackageVersion where
  type
    AWSResponse DeregisterPackageVersion =
      DeregisterPackageVersionResponse
  request :: (Service -> Service)
-> DeregisterPackageVersion -> Request DeregisterPackageVersion
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeregisterPackageVersion
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeregisterPackageVersion)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> DeregisterPackageVersionResponse
DeregisterPackageVersionResponse'
            forall (f :: * -> *) a b. Functor 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 DeregisterPackageVersion where
  hashWithSalt :: Int -> DeregisterPackageVersion -> Int
hashWithSalt Int
_salt DeregisterPackageVersion' {Maybe Text
Text
patchVersion :: Text
packageVersion :: Text
packageId :: Text
updatedLatestPatchVersion :: Maybe Text
ownerAccount :: Maybe Text
$sel:patchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:packageVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:packageId:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:updatedLatestPatchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
$sel:ownerAccount:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ownerAccount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
updatedLatestPatchVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
packageId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
packageVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
patchVersion

instance Prelude.NFData DeregisterPackageVersion where
  rnf :: DeregisterPackageVersion -> ()
rnf DeregisterPackageVersion' {Maybe Text
Text
patchVersion :: Text
packageVersion :: Text
packageId :: Text
updatedLatestPatchVersion :: Maybe Text
ownerAccount :: Maybe Text
$sel:patchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:packageVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:packageId:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:updatedLatestPatchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
$sel:ownerAccount:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ownerAccount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
updatedLatestPatchVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
packageId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
packageVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
patchVersion

instance Data.ToHeaders DeregisterPackageVersion where
  toHeaders :: DeregisterPackageVersion -> 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 DeregisterPackageVersion where
  toPath :: DeregisterPackageVersion -> ByteString
toPath DeregisterPackageVersion' {Maybe Text
Text
patchVersion :: Text
packageVersion :: Text
packageId :: Text
updatedLatestPatchVersion :: Maybe Text
ownerAccount :: Maybe Text
$sel:patchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:packageVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:packageId:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:updatedLatestPatchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
$sel:ownerAccount:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/packages/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
packageId,
        ByteString
"/versions/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
packageVersion,
        ByteString
"/patch/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
patchVersion
      ]

instance Data.ToQuery DeregisterPackageVersion where
  toQuery :: DeregisterPackageVersion -> QueryString
toQuery DeregisterPackageVersion' {Maybe Text
Text
patchVersion :: Text
packageVersion :: Text
packageId :: Text
updatedLatestPatchVersion :: Maybe Text
ownerAccount :: Maybe Text
$sel:patchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:packageVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:packageId:DeregisterPackageVersion' :: DeregisterPackageVersion -> Text
$sel:updatedLatestPatchVersion:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
$sel:ownerAccount:DeregisterPackageVersion' :: DeregisterPackageVersion -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"OwnerAccount" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
ownerAccount,
        ByteString
"UpdatedLatestPatchVersion"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
updatedLatestPatchVersion
      ]

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

-- |
-- Create a value of 'DeregisterPackageVersionResponse' 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:
--
-- 'httpStatus', 'deregisterPackageVersionResponse_httpStatus' - The response's http status code.
newDeregisterPackageVersionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeregisterPackageVersionResponse
newDeregisterPackageVersionResponse :: Int -> DeregisterPackageVersionResponse
newDeregisterPackageVersionResponse Int
pHttpStatus_ =
  DeregisterPackageVersionResponse'
    { $sel:httpStatus:DeregisterPackageVersionResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    DeregisterPackageVersionResponse
  where
  rnf :: DeregisterPackageVersionResponse -> ()
rnf DeregisterPackageVersionResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeregisterPackageVersionResponse' :: DeregisterPackageVersionResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus