{-# 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.CodeArtifact.DeletePackageVersions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes one or more versions of a package. A deleted package version
-- cannot be restored in your repository. If you want to remove a package
-- version from your repository and be able to restore it later, set its
-- status to @Archived@. Archived packages cannot be downloaded from a
-- repository and don\'t show up with list package APIs (for example,
-- <https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersions.html ListackageVersions>),
-- but you can restore them using
-- <https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html UpdatePackageVersionsStatus>.
module Amazonka.CodeArtifact.DeletePackageVersions
  ( -- * Creating a Request
    DeletePackageVersions (..),
    newDeletePackageVersions,

    -- * Request Lenses
    deletePackageVersions_domainOwner,
    deletePackageVersions_expectedStatus,
    deletePackageVersions_namespace,
    deletePackageVersions_domain,
    deletePackageVersions_repository,
    deletePackageVersions_format,
    deletePackageVersions_package,
    deletePackageVersions_versions,

    -- * Destructuring the Response
    DeletePackageVersionsResponse (..),
    newDeletePackageVersionsResponse,

    -- * Response Lenses
    deletePackageVersionsResponse_failedVersions,
    deletePackageVersionsResponse_successfulVersions,
    deletePackageVersionsResponse_httpStatus,
  )
where

import Amazonka.CodeArtifact.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:/ 'newDeletePackageVersions' smart constructor.
data DeletePackageVersions = DeletePackageVersions'
  { -- | The 12-digit account number of the Amazon Web Services account that owns
    -- the domain. It does not include dashes or spaces.
    DeletePackageVersions -> Maybe Text
domainOwner :: Prelude.Maybe Prelude.Text,
    -- | The expected status of the package version to delete.
    DeletePackageVersions -> Maybe PackageVersionStatus
expectedStatus :: Prelude.Maybe PackageVersionStatus,
    -- | The namespace of the package versions to be deleted. The package version
    -- component that specifies its namespace depends on its type. For example:
    --
    -- -   The namespace of a Maven package version is its @groupId@. The
    --     namespace is required when deleting Maven package versions.
    --
    -- -   The namespace of an npm package version is its @scope@.
    --
    -- -   Python and NuGet package versions do not contain a corresponding
    --     component, package versions of those formats do not have a
    --     namespace.
    DeletePackageVersions -> Maybe Text
namespace :: Prelude.Maybe Prelude.Text,
    -- | The name of the domain that contains the package to delete.
    DeletePackageVersions -> Text
domain :: Prelude.Text,
    -- | The name of the repository that contains the package versions to delete.
    DeletePackageVersions -> Text
repository :: Prelude.Text,
    -- | The format of the package versions to delete.
    DeletePackageVersions -> PackageFormat
format :: PackageFormat,
    -- | The name of the package with the versions to delete.
    DeletePackageVersions -> Text
package :: Prelude.Text,
    -- | An array of strings that specify the versions of the package to delete.
    DeletePackageVersions -> [Text]
versions :: [Prelude.Text]
  }
  deriving (DeletePackageVersions -> DeletePackageVersions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeletePackageVersions -> DeletePackageVersions -> Bool
$c/= :: DeletePackageVersions -> DeletePackageVersions -> Bool
== :: DeletePackageVersions -> DeletePackageVersions -> Bool
$c== :: DeletePackageVersions -> DeletePackageVersions -> Bool
Prelude.Eq, ReadPrec [DeletePackageVersions]
ReadPrec DeletePackageVersions
Int -> ReadS DeletePackageVersions
ReadS [DeletePackageVersions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeletePackageVersions]
$creadListPrec :: ReadPrec [DeletePackageVersions]
readPrec :: ReadPrec DeletePackageVersions
$creadPrec :: ReadPrec DeletePackageVersions
readList :: ReadS [DeletePackageVersions]
$creadList :: ReadS [DeletePackageVersions]
readsPrec :: Int -> ReadS DeletePackageVersions
$creadsPrec :: Int -> ReadS DeletePackageVersions
Prelude.Read, Int -> DeletePackageVersions -> ShowS
[DeletePackageVersions] -> ShowS
DeletePackageVersions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeletePackageVersions] -> ShowS
$cshowList :: [DeletePackageVersions] -> ShowS
show :: DeletePackageVersions -> String
$cshow :: DeletePackageVersions -> String
showsPrec :: Int -> DeletePackageVersions -> ShowS
$cshowsPrec :: Int -> DeletePackageVersions -> ShowS
Prelude.Show, forall x. Rep DeletePackageVersions x -> DeletePackageVersions
forall x. DeletePackageVersions -> Rep DeletePackageVersions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeletePackageVersions x -> DeletePackageVersions
$cfrom :: forall x. DeletePackageVersions -> Rep DeletePackageVersions x
Prelude.Generic)

-- |
-- Create a value of 'DeletePackageVersions' 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:
--
-- 'domainOwner', 'deletePackageVersions_domainOwner' - The 12-digit account number of the Amazon Web Services account that owns
-- the domain. It does not include dashes or spaces.
--
-- 'expectedStatus', 'deletePackageVersions_expectedStatus' - The expected status of the package version to delete.
--
-- 'namespace', 'deletePackageVersions_namespace' - The namespace of the package versions to be deleted. The package version
-- component that specifies its namespace depends on its type. For example:
--
-- -   The namespace of a Maven package version is its @groupId@. The
--     namespace is required when deleting Maven package versions.
--
-- -   The namespace of an npm package version is its @scope@.
--
-- -   Python and NuGet package versions do not contain a corresponding
--     component, package versions of those formats do not have a
--     namespace.
--
-- 'domain', 'deletePackageVersions_domain' - The name of the domain that contains the package to delete.
--
-- 'repository', 'deletePackageVersions_repository' - The name of the repository that contains the package versions to delete.
--
-- 'format', 'deletePackageVersions_format' - The format of the package versions to delete.
--
-- 'package', 'deletePackageVersions_package' - The name of the package with the versions to delete.
--
-- 'versions', 'deletePackageVersions_versions' - An array of strings that specify the versions of the package to delete.
newDeletePackageVersions ::
  -- | 'domain'
  Prelude.Text ->
  -- | 'repository'
  Prelude.Text ->
  -- | 'format'
  PackageFormat ->
  -- | 'package'
  Prelude.Text ->
  DeletePackageVersions
newDeletePackageVersions :: Text -> Text -> PackageFormat -> Text -> DeletePackageVersions
newDeletePackageVersions
  Text
pDomain_
  Text
pRepository_
  PackageFormat
pFormat_
  Text
pPackage_ =
    DeletePackageVersions'
      { $sel:domainOwner:DeletePackageVersions' :: Maybe Text
domainOwner =
          forall a. Maybe a
Prelude.Nothing,
        $sel:expectedStatus:DeletePackageVersions' :: Maybe PackageVersionStatus
expectedStatus = forall a. Maybe a
Prelude.Nothing,
        $sel:namespace:DeletePackageVersions' :: Maybe Text
namespace = forall a. Maybe a
Prelude.Nothing,
        $sel:domain:DeletePackageVersions' :: Text
domain = Text
pDomain_,
        $sel:repository:DeletePackageVersions' :: Text
repository = Text
pRepository_,
        $sel:format:DeletePackageVersions' :: PackageFormat
format = PackageFormat
pFormat_,
        $sel:package:DeletePackageVersions' :: Text
package = Text
pPackage_,
        $sel:versions:DeletePackageVersions' :: [Text]
versions = forall a. Monoid a => a
Prelude.mempty
      }

-- | The 12-digit account number of the Amazon Web Services account that owns
-- the domain. It does not include dashes or spaces.
deletePackageVersions_domainOwner :: Lens.Lens' DeletePackageVersions (Prelude.Maybe Prelude.Text)
deletePackageVersions_domainOwner :: Lens' DeletePackageVersions (Maybe Text)
deletePackageVersions_domainOwner = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersions' {Maybe Text
domainOwner :: Maybe Text
$sel:domainOwner:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
domainOwner} -> Maybe Text
domainOwner) (\s :: DeletePackageVersions
s@DeletePackageVersions' {} Maybe Text
a -> DeletePackageVersions
s {$sel:domainOwner:DeletePackageVersions' :: Maybe Text
domainOwner = Maybe Text
a} :: DeletePackageVersions)

-- | The expected status of the package version to delete.
deletePackageVersions_expectedStatus :: Lens.Lens' DeletePackageVersions (Prelude.Maybe PackageVersionStatus)
deletePackageVersions_expectedStatus :: Lens' DeletePackageVersions (Maybe PackageVersionStatus)
deletePackageVersions_expectedStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersions' {Maybe PackageVersionStatus
expectedStatus :: Maybe PackageVersionStatus
$sel:expectedStatus:DeletePackageVersions' :: DeletePackageVersions -> Maybe PackageVersionStatus
expectedStatus} -> Maybe PackageVersionStatus
expectedStatus) (\s :: DeletePackageVersions
s@DeletePackageVersions' {} Maybe PackageVersionStatus
a -> DeletePackageVersions
s {$sel:expectedStatus:DeletePackageVersions' :: Maybe PackageVersionStatus
expectedStatus = Maybe PackageVersionStatus
a} :: DeletePackageVersions)

-- | The namespace of the package versions to be deleted. The package version
-- component that specifies its namespace depends on its type. For example:
--
-- -   The namespace of a Maven package version is its @groupId@. The
--     namespace is required when deleting Maven package versions.
--
-- -   The namespace of an npm package version is its @scope@.
--
-- -   Python and NuGet package versions do not contain a corresponding
--     component, package versions of those formats do not have a
--     namespace.
deletePackageVersions_namespace :: Lens.Lens' DeletePackageVersions (Prelude.Maybe Prelude.Text)
deletePackageVersions_namespace :: Lens' DeletePackageVersions (Maybe Text)
deletePackageVersions_namespace = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersions' {Maybe Text
namespace :: Maybe Text
$sel:namespace:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
namespace} -> Maybe Text
namespace) (\s :: DeletePackageVersions
s@DeletePackageVersions' {} Maybe Text
a -> DeletePackageVersions
s {$sel:namespace:DeletePackageVersions' :: Maybe Text
namespace = Maybe Text
a} :: DeletePackageVersions)

-- | The name of the domain that contains the package to delete.
deletePackageVersions_domain :: Lens.Lens' DeletePackageVersions Prelude.Text
deletePackageVersions_domain :: Lens' DeletePackageVersions Text
deletePackageVersions_domain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersions' {Text
domain :: Text
$sel:domain:DeletePackageVersions' :: DeletePackageVersions -> Text
domain} -> Text
domain) (\s :: DeletePackageVersions
s@DeletePackageVersions' {} Text
a -> DeletePackageVersions
s {$sel:domain:DeletePackageVersions' :: Text
domain = Text
a} :: DeletePackageVersions)

-- | The name of the repository that contains the package versions to delete.
deletePackageVersions_repository :: Lens.Lens' DeletePackageVersions Prelude.Text
deletePackageVersions_repository :: Lens' DeletePackageVersions Text
deletePackageVersions_repository = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersions' {Text
repository :: Text
$sel:repository:DeletePackageVersions' :: DeletePackageVersions -> Text
repository} -> Text
repository) (\s :: DeletePackageVersions
s@DeletePackageVersions' {} Text
a -> DeletePackageVersions
s {$sel:repository:DeletePackageVersions' :: Text
repository = Text
a} :: DeletePackageVersions)

-- | The format of the package versions to delete.
deletePackageVersions_format :: Lens.Lens' DeletePackageVersions PackageFormat
deletePackageVersions_format :: Lens' DeletePackageVersions PackageFormat
deletePackageVersions_format = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersions' {PackageFormat
format :: PackageFormat
$sel:format:DeletePackageVersions' :: DeletePackageVersions -> PackageFormat
format} -> PackageFormat
format) (\s :: DeletePackageVersions
s@DeletePackageVersions' {} PackageFormat
a -> DeletePackageVersions
s {$sel:format:DeletePackageVersions' :: PackageFormat
format = PackageFormat
a} :: DeletePackageVersions)

-- | The name of the package with the versions to delete.
deletePackageVersions_package :: Lens.Lens' DeletePackageVersions Prelude.Text
deletePackageVersions_package :: Lens' DeletePackageVersions Text
deletePackageVersions_package = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersions' {Text
package :: Text
$sel:package:DeletePackageVersions' :: DeletePackageVersions -> Text
package} -> Text
package) (\s :: DeletePackageVersions
s@DeletePackageVersions' {} Text
a -> DeletePackageVersions
s {$sel:package:DeletePackageVersions' :: Text
package = Text
a} :: DeletePackageVersions)

-- | An array of strings that specify the versions of the package to delete.
deletePackageVersions_versions :: Lens.Lens' DeletePackageVersions [Prelude.Text]
deletePackageVersions_versions :: Lens' DeletePackageVersions [Text]
deletePackageVersions_versions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersions' {[Text]
versions :: [Text]
$sel:versions:DeletePackageVersions' :: DeletePackageVersions -> [Text]
versions} -> [Text]
versions) (\s :: DeletePackageVersions
s@DeletePackageVersions' {} [Text]
a -> DeletePackageVersions
s {$sel:versions:DeletePackageVersions' :: [Text]
versions = [Text]
a} :: DeletePackageVersions) 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

instance Core.AWSRequest DeletePackageVersions where
  type
    AWSResponse DeletePackageVersions =
      DeletePackageVersionsResponse
  request :: (Service -> Service)
-> DeletePackageVersions -> Request DeletePackageVersions
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeletePackageVersions
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeletePackageVersions)))
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 (HashMap Text PackageVersionError)
-> Maybe (HashMap Text SuccessfulPackageVersionInfo)
-> Int
-> DeletePackageVersionsResponse
DeletePackageVersionsResponse'
            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
"failedVersions" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            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
"successfulVersions"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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 DeletePackageVersions where
  hashWithSalt :: Int -> DeletePackageVersions -> Int
hashWithSalt Int
_salt DeletePackageVersions' {[Text]
Maybe Text
Maybe PackageVersionStatus
Text
PackageFormat
versions :: [Text]
package :: Text
format :: PackageFormat
repository :: Text
domain :: Text
namespace :: Maybe Text
expectedStatus :: Maybe PackageVersionStatus
domainOwner :: Maybe Text
$sel:versions:DeletePackageVersions' :: DeletePackageVersions -> [Text]
$sel:package:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:format:DeletePackageVersions' :: DeletePackageVersions -> PackageFormat
$sel:repository:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:domain:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:namespace:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
$sel:expectedStatus:DeletePackageVersions' :: DeletePackageVersions -> Maybe PackageVersionStatus
$sel:domainOwner:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domainOwner
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PackageVersionStatus
expectedStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
namespace
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domain
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
repository
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` PackageFormat
format
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
package
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Text]
versions

instance Prelude.NFData DeletePackageVersions where
  rnf :: DeletePackageVersions -> ()
rnf DeletePackageVersions' {[Text]
Maybe Text
Maybe PackageVersionStatus
Text
PackageFormat
versions :: [Text]
package :: Text
format :: PackageFormat
repository :: Text
domain :: Text
namespace :: Maybe Text
expectedStatus :: Maybe PackageVersionStatus
domainOwner :: Maybe Text
$sel:versions:DeletePackageVersions' :: DeletePackageVersions -> [Text]
$sel:package:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:format:DeletePackageVersions' :: DeletePackageVersions -> PackageFormat
$sel:repository:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:domain:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:namespace:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
$sel:expectedStatus:DeletePackageVersions' :: DeletePackageVersions -> Maybe PackageVersionStatus
$sel:domainOwner:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
domainOwner
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PackageVersionStatus
expectedStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
namespace
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
domain
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
repository
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf PackageFormat
format
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
package
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Text]
versions

instance Data.ToHeaders DeletePackageVersions where
  toHeaders :: DeletePackageVersions -> 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.ToJSON DeletePackageVersions where
  toJSON :: DeletePackageVersions -> Value
toJSON DeletePackageVersions' {[Text]
Maybe Text
Maybe PackageVersionStatus
Text
PackageFormat
versions :: [Text]
package :: Text
format :: PackageFormat
repository :: Text
domain :: Text
namespace :: Maybe Text
expectedStatus :: Maybe PackageVersionStatus
domainOwner :: Maybe Text
$sel:versions:DeletePackageVersions' :: DeletePackageVersions -> [Text]
$sel:package:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:format:DeletePackageVersions' :: DeletePackageVersions -> PackageFormat
$sel:repository:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:domain:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:namespace:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
$sel:expectedStatus:DeletePackageVersions' :: DeletePackageVersions -> Maybe PackageVersionStatus
$sel:domainOwner:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"expectedStatus" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PackageVersionStatus
expectedStatus,
            forall a. a -> Maybe a
Prelude.Just (Key
"versions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [Text]
versions)
          ]
      )

instance Data.ToPath DeletePackageVersions where
  toPath :: DeletePackageVersions -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/v1/package/versions/delete"

instance Data.ToQuery DeletePackageVersions where
  toQuery :: DeletePackageVersions -> QueryString
toQuery DeletePackageVersions' {[Text]
Maybe Text
Maybe PackageVersionStatus
Text
PackageFormat
versions :: [Text]
package :: Text
format :: PackageFormat
repository :: Text
domain :: Text
namespace :: Maybe Text
expectedStatus :: Maybe PackageVersionStatus
domainOwner :: Maybe Text
$sel:versions:DeletePackageVersions' :: DeletePackageVersions -> [Text]
$sel:package:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:format:DeletePackageVersions' :: DeletePackageVersions -> PackageFormat
$sel:repository:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:domain:DeletePackageVersions' :: DeletePackageVersions -> Text
$sel:namespace:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
$sel:expectedStatus:DeletePackageVersions' :: DeletePackageVersions -> Maybe PackageVersionStatus
$sel:domainOwner:DeletePackageVersions' :: DeletePackageVersions -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"domain-owner" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
domainOwner,
        ByteString
"namespace" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
namespace,
        ByteString
"domain" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
domain,
        ByteString
"repository" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
repository,
        ByteString
"format" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: PackageFormat
format,
        ByteString
"package" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
package
      ]

-- | /See:/ 'newDeletePackageVersionsResponse' smart constructor.
data DeletePackageVersionsResponse = DeletePackageVersionsResponse'
  { -- | A @PackageVersionError@ object that contains a map of errors codes for
    -- the deleted package that failed. The possible error codes are:
    --
    -- -   @ALREADY_EXISTS@
    --
    -- -   @MISMATCHED_REVISION@
    --
    -- -   @MISMATCHED_STATUS@
    --
    -- -   @NOT_ALLOWED@
    --
    -- -   @NOT_FOUND@
    --
    -- -   @SKIPPED@
    DeletePackageVersionsResponse
-> Maybe (HashMap Text PackageVersionError)
failedVersions :: Prelude.Maybe (Prelude.HashMap Prelude.Text PackageVersionError),
    -- | A list of the package versions that were successfully deleted. The
    -- status of every successful version will be @Deleted@.
    DeletePackageVersionsResponse
-> Maybe (HashMap Text SuccessfulPackageVersionInfo)
successfulVersions :: Prelude.Maybe (Prelude.HashMap Prelude.Text SuccessfulPackageVersionInfo),
    -- | The response's http status code.
    DeletePackageVersionsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeletePackageVersionsResponse
-> DeletePackageVersionsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeletePackageVersionsResponse
-> DeletePackageVersionsResponse -> Bool
$c/= :: DeletePackageVersionsResponse
-> DeletePackageVersionsResponse -> Bool
== :: DeletePackageVersionsResponse
-> DeletePackageVersionsResponse -> Bool
$c== :: DeletePackageVersionsResponse
-> DeletePackageVersionsResponse -> Bool
Prelude.Eq, ReadPrec [DeletePackageVersionsResponse]
ReadPrec DeletePackageVersionsResponse
Int -> ReadS DeletePackageVersionsResponse
ReadS [DeletePackageVersionsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeletePackageVersionsResponse]
$creadListPrec :: ReadPrec [DeletePackageVersionsResponse]
readPrec :: ReadPrec DeletePackageVersionsResponse
$creadPrec :: ReadPrec DeletePackageVersionsResponse
readList :: ReadS [DeletePackageVersionsResponse]
$creadList :: ReadS [DeletePackageVersionsResponse]
readsPrec :: Int -> ReadS DeletePackageVersionsResponse
$creadsPrec :: Int -> ReadS DeletePackageVersionsResponse
Prelude.Read, Int -> DeletePackageVersionsResponse -> ShowS
[DeletePackageVersionsResponse] -> ShowS
DeletePackageVersionsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeletePackageVersionsResponse] -> ShowS
$cshowList :: [DeletePackageVersionsResponse] -> ShowS
show :: DeletePackageVersionsResponse -> String
$cshow :: DeletePackageVersionsResponse -> String
showsPrec :: Int -> DeletePackageVersionsResponse -> ShowS
$cshowsPrec :: Int -> DeletePackageVersionsResponse -> ShowS
Prelude.Show, forall x.
Rep DeletePackageVersionsResponse x
-> DeletePackageVersionsResponse
forall x.
DeletePackageVersionsResponse
-> Rep DeletePackageVersionsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeletePackageVersionsResponse x
-> DeletePackageVersionsResponse
$cfrom :: forall x.
DeletePackageVersionsResponse
-> Rep DeletePackageVersionsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeletePackageVersionsResponse' 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:
--
-- 'failedVersions', 'deletePackageVersionsResponse_failedVersions' - A @PackageVersionError@ object that contains a map of errors codes for
-- the deleted package that failed. The possible error codes are:
--
-- -   @ALREADY_EXISTS@
--
-- -   @MISMATCHED_REVISION@
--
-- -   @MISMATCHED_STATUS@
--
-- -   @NOT_ALLOWED@
--
-- -   @NOT_FOUND@
--
-- -   @SKIPPED@
--
-- 'successfulVersions', 'deletePackageVersionsResponse_successfulVersions' - A list of the package versions that were successfully deleted. The
-- status of every successful version will be @Deleted@.
--
-- 'httpStatus', 'deletePackageVersionsResponse_httpStatus' - The response's http status code.
newDeletePackageVersionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeletePackageVersionsResponse
newDeletePackageVersionsResponse :: Int -> DeletePackageVersionsResponse
newDeletePackageVersionsResponse Int
pHttpStatus_ =
  DeletePackageVersionsResponse'
    { $sel:failedVersions:DeletePackageVersionsResponse' :: Maybe (HashMap Text PackageVersionError)
failedVersions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:successfulVersions:DeletePackageVersionsResponse' :: Maybe (HashMap Text SuccessfulPackageVersionInfo)
successfulVersions = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeletePackageVersionsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A @PackageVersionError@ object that contains a map of errors codes for
-- the deleted package that failed. The possible error codes are:
--
-- -   @ALREADY_EXISTS@
--
-- -   @MISMATCHED_REVISION@
--
-- -   @MISMATCHED_STATUS@
--
-- -   @NOT_ALLOWED@
--
-- -   @NOT_FOUND@
--
-- -   @SKIPPED@
deletePackageVersionsResponse_failedVersions :: Lens.Lens' DeletePackageVersionsResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text PackageVersionError))
deletePackageVersionsResponse_failedVersions :: Lens'
  DeletePackageVersionsResponse
  (Maybe (HashMap Text PackageVersionError))
deletePackageVersionsResponse_failedVersions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersionsResponse' {Maybe (HashMap Text PackageVersionError)
failedVersions :: Maybe (HashMap Text PackageVersionError)
$sel:failedVersions:DeletePackageVersionsResponse' :: DeletePackageVersionsResponse
-> Maybe (HashMap Text PackageVersionError)
failedVersions} -> Maybe (HashMap Text PackageVersionError)
failedVersions) (\s :: DeletePackageVersionsResponse
s@DeletePackageVersionsResponse' {} Maybe (HashMap Text PackageVersionError)
a -> DeletePackageVersionsResponse
s {$sel:failedVersions:DeletePackageVersionsResponse' :: Maybe (HashMap Text PackageVersionError)
failedVersions = Maybe (HashMap Text PackageVersionError)
a} :: DeletePackageVersionsResponse) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A list of the package versions that were successfully deleted. The
-- status of every successful version will be @Deleted@.
deletePackageVersionsResponse_successfulVersions :: Lens.Lens' DeletePackageVersionsResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text SuccessfulPackageVersionInfo))
deletePackageVersionsResponse_successfulVersions :: Lens'
  DeletePackageVersionsResponse
  (Maybe (HashMap Text SuccessfulPackageVersionInfo))
deletePackageVersionsResponse_successfulVersions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeletePackageVersionsResponse' {Maybe (HashMap Text SuccessfulPackageVersionInfo)
successfulVersions :: Maybe (HashMap Text SuccessfulPackageVersionInfo)
$sel:successfulVersions:DeletePackageVersionsResponse' :: DeletePackageVersionsResponse
-> Maybe (HashMap Text SuccessfulPackageVersionInfo)
successfulVersions} -> Maybe (HashMap Text SuccessfulPackageVersionInfo)
successfulVersions) (\s :: DeletePackageVersionsResponse
s@DeletePackageVersionsResponse' {} Maybe (HashMap Text SuccessfulPackageVersionInfo)
a -> DeletePackageVersionsResponse
s {$sel:successfulVersions:DeletePackageVersionsResponse' :: Maybe (HashMap Text SuccessfulPackageVersionInfo)
successfulVersions = Maybe (HashMap Text SuccessfulPackageVersionInfo)
a} :: DeletePackageVersionsResponse) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance Prelude.NFData DeletePackageVersionsResponse where
  rnf :: DeletePackageVersionsResponse -> ()
rnf DeletePackageVersionsResponse' {Int
Maybe (HashMap Text PackageVersionError)
Maybe (HashMap Text SuccessfulPackageVersionInfo)
httpStatus :: Int
successfulVersions :: Maybe (HashMap Text SuccessfulPackageVersionInfo)
failedVersions :: Maybe (HashMap Text PackageVersionError)
$sel:httpStatus:DeletePackageVersionsResponse' :: DeletePackageVersionsResponse -> Int
$sel:successfulVersions:DeletePackageVersionsResponse' :: DeletePackageVersionsResponse
-> Maybe (HashMap Text SuccessfulPackageVersionInfo)
$sel:failedVersions:DeletePackageVersionsResponse' :: DeletePackageVersionsResponse
-> Maybe (HashMap Text PackageVersionError)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text PackageVersionError)
failedVersions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text SuccessfulPackageVersionInfo)
successfulVersions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus