{-# 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.SageMaker.CreateModelPackage
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a model package that you can use to create SageMaker models or
-- list on Amazon Web Services Marketplace, or a versioned model that is
-- part of a model group. Buyers can subscribe to model packages listed on
-- Amazon Web Services Marketplace to create models in SageMaker.
--
-- To create a model package by specifying a Docker container that contains
-- your inference code and the Amazon S3 location of your model artifacts,
-- provide values for @InferenceSpecification@. To create a model from an
-- algorithm resource that you created or subscribed to in Amazon Web
-- Services Marketplace, provide a value for
-- @SourceAlgorithmSpecification@.
--
-- There are two types of model packages:
--
-- -   Versioned - a model that is part of a model group in the model
--     registry.
--
-- -   Unversioned - a model package that is not part of a model group.
module Amazonka.SageMaker.CreateModelPackage
  ( -- * Creating a Request
    CreateModelPackage (..),
    newCreateModelPackage,

    -- * Request Lenses
    createModelPackage_additionalInferenceSpecifications,
    createModelPackage_certifyForMarketplace,
    createModelPackage_clientToken,
    createModelPackage_customerMetadataProperties,
    createModelPackage_domain,
    createModelPackage_driftCheckBaselines,
    createModelPackage_inferenceSpecification,
    createModelPackage_metadataProperties,
    createModelPackage_modelApprovalStatus,
    createModelPackage_modelMetrics,
    createModelPackage_modelPackageDescription,
    createModelPackage_modelPackageGroupName,
    createModelPackage_modelPackageName,
    createModelPackage_samplePayloadUrl,
    createModelPackage_sourceAlgorithmSpecification,
    createModelPackage_tags,
    createModelPackage_task,
    createModelPackage_validationSpecification,

    -- * Destructuring the Response
    CreateModelPackageResponse (..),
    newCreateModelPackageResponse,

    -- * Response Lenses
    createModelPackageResponse_httpStatus,
    createModelPackageResponse_modelPackageArn,
  )
where

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
import Amazonka.SageMaker.Types

-- | /See:/ 'newCreateModelPackage' smart constructor.
data CreateModelPackage = CreateModelPackage'
  { -- | An array of additional Inference Specification objects. Each additional
    -- Inference Specification specifies artifacts based on this model package
    -- that can be used on inference endpoints. Generally used with SageMaker
    -- Neo to store the compiled artifacts.
    CreateModelPackage
-> Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications :: Prelude.Maybe (Prelude.NonEmpty AdditionalInferenceSpecificationDefinition),
    -- | Whether to certify the model package for listing on Amazon Web Services
    -- Marketplace.
    --
    -- This parameter is optional for unversioned models, and does not apply to
    -- versioned models.
    CreateModelPackage -> Maybe Bool
certifyForMarketplace :: Prelude.Maybe Prelude.Bool,
    -- | A unique token that guarantees that the call to this API is idempotent.
    CreateModelPackage -> Maybe Text
clientToken :: Prelude.Maybe Prelude.Text,
    -- | The metadata properties associated with the model package versions.
    CreateModelPackage -> Maybe (HashMap Text Text)
customerMetadataProperties :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The machine learning domain of your model package and its components.
    -- Common machine learning domains include computer vision and natural
    -- language processing.
    CreateModelPackage -> Maybe Text
domain :: Prelude.Maybe Prelude.Text,
    -- | Represents the drift check baselines that can be used when the model
    -- monitor is set using the model package. For more information, see the
    -- topic on
    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-drift-detection Drift Detection against Previous Baselines in SageMaker Pipelines>
    -- in the /Amazon SageMaker Developer Guide/.
    CreateModelPackage -> Maybe DriftCheckBaselines
driftCheckBaselines :: Prelude.Maybe DriftCheckBaselines,
    -- | Specifies details about inference jobs that can be run with models based
    -- on this model package, including the following:
    --
    -- -   The Amazon ECR paths of containers that contain the inference code
    --     and model artifacts.
    --
    -- -   The instance types that the model package supports for transform
    --     jobs and real-time endpoints used for inference.
    --
    -- -   The input and output content formats that the model package supports
    --     for inference.
    CreateModelPackage -> Maybe InferenceSpecification
inferenceSpecification :: Prelude.Maybe InferenceSpecification,
    CreateModelPackage -> Maybe MetadataProperties
metadataProperties :: Prelude.Maybe MetadataProperties,
    -- | Whether the model is approved for deployment.
    --
    -- This parameter is optional for versioned models, and does not apply to
    -- unversioned models.
    --
    -- For versioned models, the value of this parameter must be set to
    -- @Approved@ to deploy the model.
    CreateModelPackage -> Maybe ModelApprovalStatus
modelApprovalStatus :: Prelude.Maybe ModelApprovalStatus,
    -- | A structure that contains model metrics reports.
    CreateModelPackage -> Maybe ModelMetrics
modelMetrics :: Prelude.Maybe ModelMetrics,
    -- | A description of the model package.
    CreateModelPackage -> Maybe Text
modelPackageDescription :: Prelude.Maybe Prelude.Text,
    -- | The name or Amazon Resource Name (ARN) of the model package group that
    -- this model version belongs to.
    --
    -- This parameter is required for versioned models, and does not apply to
    -- unversioned models.
    CreateModelPackage -> Maybe Text
modelPackageGroupName :: Prelude.Maybe Prelude.Text,
    -- | The name of the model package. The name must have 1 to 63 characters.
    -- Valid characters are a-z, A-Z, 0-9, and - (hyphen).
    --
    -- This parameter is required for unversioned models. It is not applicable
    -- to versioned models.
    CreateModelPackage -> Maybe Text
modelPackageName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Simple Storage Service (Amazon S3) path where the sample
    -- payload are stored. This path must point to a single gzip compressed tar
    -- archive (.tar.gz suffix).
    CreateModelPackage -> Maybe Text
samplePayloadUrl :: Prelude.Maybe Prelude.Text,
    -- | Details about the algorithm that was used to create the model package.
    CreateModelPackage -> Maybe SourceAlgorithmSpecification
sourceAlgorithmSpecification :: Prelude.Maybe SourceAlgorithmSpecification,
    -- | A list of key value pairs associated with the model. For more
    -- information, see
    -- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>
    -- in the /Amazon Web Services General Reference Guide/.
    CreateModelPackage -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The machine learning task your model package accomplishes. Common
    -- machine learning tasks include object detection and image
    -- classification. The following tasks are supported by Inference
    -- Recommender: @\"IMAGE_CLASSIFICATION\"@ | @\"OBJECT_DETECTION\"@ |
    -- @\"TEXT_GENERATION\"@ |@\"IMAGE_SEGMENTATION\"@ | @\"FILL_MASK\"@ |
    -- @\"CLASSIFICATION\"@ | @\"REGRESSION\"@ | @\"OTHER\"@.
    --
    -- Specify \"OTHER\" if none of the tasks listed fit your use case.
    CreateModelPackage -> Maybe Text
task :: Prelude.Maybe Prelude.Text,
    -- | Specifies configurations for one or more transform jobs that SageMaker
    -- runs to test the model package.
    CreateModelPackage -> Maybe ModelPackageValidationSpecification
validationSpecification :: Prelude.Maybe ModelPackageValidationSpecification
  }
  deriving (CreateModelPackage -> CreateModelPackage -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateModelPackage -> CreateModelPackage -> Bool
$c/= :: CreateModelPackage -> CreateModelPackage -> Bool
== :: CreateModelPackage -> CreateModelPackage -> Bool
$c== :: CreateModelPackage -> CreateModelPackage -> Bool
Prelude.Eq, ReadPrec [CreateModelPackage]
ReadPrec CreateModelPackage
Int -> ReadS CreateModelPackage
ReadS [CreateModelPackage]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateModelPackage]
$creadListPrec :: ReadPrec [CreateModelPackage]
readPrec :: ReadPrec CreateModelPackage
$creadPrec :: ReadPrec CreateModelPackage
readList :: ReadS [CreateModelPackage]
$creadList :: ReadS [CreateModelPackage]
readsPrec :: Int -> ReadS CreateModelPackage
$creadsPrec :: Int -> ReadS CreateModelPackage
Prelude.Read, Int -> CreateModelPackage -> ShowS
[CreateModelPackage] -> ShowS
CreateModelPackage -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateModelPackage] -> ShowS
$cshowList :: [CreateModelPackage] -> ShowS
show :: CreateModelPackage -> String
$cshow :: CreateModelPackage -> String
showsPrec :: Int -> CreateModelPackage -> ShowS
$cshowsPrec :: Int -> CreateModelPackage -> ShowS
Prelude.Show, forall x. Rep CreateModelPackage x -> CreateModelPackage
forall x. CreateModelPackage -> Rep CreateModelPackage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateModelPackage x -> CreateModelPackage
$cfrom :: forall x. CreateModelPackage -> Rep CreateModelPackage x
Prelude.Generic)

-- |
-- Create a value of 'CreateModelPackage' 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:
--
-- 'additionalInferenceSpecifications', 'createModelPackage_additionalInferenceSpecifications' - An array of additional Inference Specification objects. Each additional
-- Inference Specification specifies artifacts based on this model package
-- that can be used on inference endpoints. Generally used with SageMaker
-- Neo to store the compiled artifacts.
--
-- 'certifyForMarketplace', 'createModelPackage_certifyForMarketplace' - Whether to certify the model package for listing on Amazon Web Services
-- Marketplace.
--
-- This parameter is optional for unversioned models, and does not apply to
-- versioned models.
--
-- 'clientToken', 'createModelPackage_clientToken' - A unique token that guarantees that the call to this API is idempotent.
--
-- 'customerMetadataProperties', 'createModelPackage_customerMetadataProperties' - The metadata properties associated with the model package versions.
--
-- 'domain', 'createModelPackage_domain' - The machine learning domain of your model package and its components.
-- Common machine learning domains include computer vision and natural
-- language processing.
--
-- 'driftCheckBaselines', 'createModelPackage_driftCheckBaselines' - Represents the drift check baselines that can be used when the model
-- monitor is set using the model package. For more information, see the
-- topic on
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-drift-detection Drift Detection against Previous Baselines in SageMaker Pipelines>
-- in the /Amazon SageMaker Developer Guide/.
--
-- 'inferenceSpecification', 'createModelPackage_inferenceSpecification' - Specifies details about inference jobs that can be run with models based
-- on this model package, including the following:
--
-- -   The Amazon ECR paths of containers that contain the inference code
--     and model artifacts.
--
-- -   The instance types that the model package supports for transform
--     jobs and real-time endpoints used for inference.
--
-- -   The input and output content formats that the model package supports
--     for inference.
--
-- 'metadataProperties', 'createModelPackage_metadataProperties' - Undocumented member.
--
-- 'modelApprovalStatus', 'createModelPackage_modelApprovalStatus' - Whether the model is approved for deployment.
--
-- This parameter is optional for versioned models, and does not apply to
-- unversioned models.
--
-- For versioned models, the value of this parameter must be set to
-- @Approved@ to deploy the model.
--
-- 'modelMetrics', 'createModelPackage_modelMetrics' - A structure that contains model metrics reports.
--
-- 'modelPackageDescription', 'createModelPackage_modelPackageDescription' - A description of the model package.
--
-- 'modelPackageGroupName', 'createModelPackage_modelPackageGroupName' - The name or Amazon Resource Name (ARN) of the model package group that
-- this model version belongs to.
--
-- This parameter is required for versioned models, and does not apply to
-- unversioned models.
--
-- 'modelPackageName', 'createModelPackage_modelPackageName' - The name of the model package. The name must have 1 to 63 characters.
-- Valid characters are a-z, A-Z, 0-9, and - (hyphen).
--
-- This parameter is required for unversioned models. It is not applicable
-- to versioned models.
--
-- 'samplePayloadUrl', 'createModelPackage_samplePayloadUrl' - The Amazon Simple Storage Service (Amazon S3) path where the sample
-- payload are stored. This path must point to a single gzip compressed tar
-- archive (.tar.gz suffix).
--
-- 'sourceAlgorithmSpecification', 'createModelPackage_sourceAlgorithmSpecification' - Details about the algorithm that was used to create the model package.
--
-- 'tags', 'createModelPackage_tags' - A list of key value pairs associated with the model. For more
-- information, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>
-- in the /Amazon Web Services General Reference Guide/.
--
-- 'task', 'createModelPackage_task' - The machine learning task your model package accomplishes. Common
-- machine learning tasks include object detection and image
-- classification. The following tasks are supported by Inference
-- Recommender: @\"IMAGE_CLASSIFICATION\"@ | @\"OBJECT_DETECTION\"@ |
-- @\"TEXT_GENERATION\"@ |@\"IMAGE_SEGMENTATION\"@ | @\"FILL_MASK\"@ |
-- @\"CLASSIFICATION\"@ | @\"REGRESSION\"@ | @\"OTHER\"@.
--
-- Specify \"OTHER\" if none of the tasks listed fit your use case.
--
-- 'validationSpecification', 'createModelPackage_validationSpecification' - Specifies configurations for one or more transform jobs that SageMaker
-- runs to test the model package.
newCreateModelPackage ::
  CreateModelPackage
newCreateModelPackage :: CreateModelPackage
newCreateModelPackage =
  CreateModelPackage'
    { $sel:additionalInferenceSpecifications:CreateModelPackage' :: Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications =
        forall a. Maybe a
Prelude.Nothing,
      $sel:certifyForMarketplace:CreateModelPackage' :: Maybe Bool
certifyForMarketplace = forall a. Maybe a
Prelude.Nothing,
      $sel:clientToken:CreateModelPackage' :: Maybe Text
clientToken = forall a. Maybe a
Prelude.Nothing,
      $sel:customerMetadataProperties:CreateModelPackage' :: Maybe (HashMap Text Text)
customerMetadataProperties = forall a. Maybe a
Prelude.Nothing,
      $sel:domain:CreateModelPackage' :: Maybe Text
domain = forall a. Maybe a
Prelude.Nothing,
      $sel:driftCheckBaselines:CreateModelPackage' :: Maybe DriftCheckBaselines
driftCheckBaselines = forall a. Maybe a
Prelude.Nothing,
      $sel:inferenceSpecification:CreateModelPackage' :: Maybe InferenceSpecification
inferenceSpecification = forall a. Maybe a
Prelude.Nothing,
      $sel:metadataProperties:CreateModelPackage' :: Maybe MetadataProperties
metadataProperties = forall a. Maybe a
Prelude.Nothing,
      $sel:modelApprovalStatus:CreateModelPackage' :: Maybe ModelApprovalStatus
modelApprovalStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:modelMetrics:CreateModelPackage' :: Maybe ModelMetrics
modelMetrics = forall a. Maybe a
Prelude.Nothing,
      $sel:modelPackageDescription:CreateModelPackage' :: Maybe Text
modelPackageDescription = forall a. Maybe a
Prelude.Nothing,
      $sel:modelPackageGroupName:CreateModelPackage' :: Maybe Text
modelPackageGroupName = forall a. Maybe a
Prelude.Nothing,
      $sel:modelPackageName:CreateModelPackage' :: Maybe Text
modelPackageName = forall a. Maybe a
Prelude.Nothing,
      $sel:samplePayloadUrl:CreateModelPackage' :: Maybe Text
samplePayloadUrl = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceAlgorithmSpecification:CreateModelPackage' :: Maybe SourceAlgorithmSpecification
sourceAlgorithmSpecification = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateModelPackage' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:task:CreateModelPackage' :: Maybe Text
task = forall a. Maybe a
Prelude.Nothing,
      $sel:validationSpecification:CreateModelPackage' :: Maybe ModelPackageValidationSpecification
validationSpecification = forall a. Maybe a
Prelude.Nothing
    }

-- | An array of additional Inference Specification objects. Each additional
-- Inference Specification specifies artifacts based on this model package
-- that can be used on inference endpoints. Generally used with SageMaker
-- Neo to store the compiled artifacts.
createModelPackage_additionalInferenceSpecifications :: Lens.Lens' CreateModelPackage (Prelude.Maybe (Prelude.NonEmpty AdditionalInferenceSpecificationDefinition))
createModelPackage_additionalInferenceSpecifications :: Lens'
  CreateModelPackage
  (Maybe (NonEmpty AdditionalInferenceSpecificationDefinition))
createModelPackage_additionalInferenceSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications :: Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
$sel:additionalInferenceSpecifications:CreateModelPackage' :: CreateModelPackage
-> Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications} -> Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
a -> CreateModelPackage
s {$sel:additionalInferenceSpecifications:CreateModelPackage' :: Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications = Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
a} :: CreateModelPackage) 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

-- | Whether to certify the model package for listing on Amazon Web Services
-- Marketplace.
--
-- This parameter is optional for unversioned models, and does not apply to
-- versioned models.
createModelPackage_certifyForMarketplace :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Bool)
createModelPackage_certifyForMarketplace :: Lens' CreateModelPackage (Maybe Bool)
createModelPackage_certifyForMarketplace = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe Bool
certifyForMarketplace :: Maybe Bool
$sel:certifyForMarketplace:CreateModelPackage' :: CreateModelPackage -> Maybe Bool
certifyForMarketplace} -> Maybe Bool
certifyForMarketplace) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe Bool
a -> CreateModelPackage
s {$sel:certifyForMarketplace:CreateModelPackage' :: Maybe Bool
certifyForMarketplace = Maybe Bool
a} :: CreateModelPackage)

-- | A unique token that guarantees that the call to this API is idempotent.
createModelPackage_clientToken :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Text)
createModelPackage_clientToken :: Lens' CreateModelPackage (Maybe Text)
createModelPackage_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe Text
clientToken :: Maybe Text
$sel:clientToken:CreateModelPackage' :: CreateModelPackage -> Maybe Text
clientToken} -> Maybe Text
clientToken) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe Text
a -> CreateModelPackage
s {$sel:clientToken:CreateModelPackage' :: Maybe Text
clientToken = Maybe Text
a} :: CreateModelPackage)

-- | The metadata properties associated with the model package versions.
createModelPackage_customerMetadataProperties :: Lens.Lens' CreateModelPackage (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createModelPackage_customerMetadataProperties :: Lens' CreateModelPackage (Maybe (HashMap Text Text))
createModelPackage_customerMetadataProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe (HashMap Text Text)
customerMetadataProperties :: Maybe (HashMap Text Text)
$sel:customerMetadataProperties:CreateModelPackage' :: CreateModelPackage -> Maybe (HashMap Text Text)
customerMetadataProperties} -> Maybe (HashMap Text Text)
customerMetadataProperties) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe (HashMap Text Text)
a -> CreateModelPackage
s {$sel:customerMetadataProperties:CreateModelPackage' :: Maybe (HashMap Text Text)
customerMetadataProperties = Maybe (HashMap Text Text)
a} :: CreateModelPackage) 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 machine learning domain of your model package and its components.
-- Common machine learning domains include computer vision and natural
-- language processing.
createModelPackage_domain :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Text)
createModelPackage_domain :: Lens' CreateModelPackage (Maybe Text)
createModelPackage_domain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe Text
domain :: Maybe Text
$sel:domain:CreateModelPackage' :: CreateModelPackage -> Maybe Text
domain} -> Maybe Text
domain) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe Text
a -> CreateModelPackage
s {$sel:domain:CreateModelPackage' :: Maybe Text
domain = Maybe Text
a} :: CreateModelPackage)

-- | Represents the drift check baselines that can be used when the model
-- monitor is set using the model package. For more information, see the
-- topic on
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-drift-detection Drift Detection against Previous Baselines in SageMaker Pipelines>
-- in the /Amazon SageMaker Developer Guide/.
createModelPackage_driftCheckBaselines :: Lens.Lens' CreateModelPackage (Prelude.Maybe DriftCheckBaselines)
createModelPackage_driftCheckBaselines :: Lens' CreateModelPackage (Maybe DriftCheckBaselines)
createModelPackage_driftCheckBaselines = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe DriftCheckBaselines
driftCheckBaselines :: Maybe DriftCheckBaselines
$sel:driftCheckBaselines:CreateModelPackage' :: CreateModelPackage -> Maybe DriftCheckBaselines
driftCheckBaselines} -> Maybe DriftCheckBaselines
driftCheckBaselines) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe DriftCheckBaselines
a -> CreateModelPackage
s {$sel:driftCheckBaselines:CreateModelPackage' :: Maybe DriftCheckBaselines
driftCheckBaselines = Maybe DriftCheckBaselines
a} :: CreateModelPackage)

-- | Specifies details about inference jobs that can be run with models based
-- on this model package, including the following:
--
-- -   The Amazon ECR paths of containers that contain the inference code
--     and model artifacts.
--
-- -   The instance types that the model package supports for transform
--     jobs and real-time endpoints used for inference.
--
-- -   The input and output content formats that the model package supports
--     for inference.
createModelPackage_inferenceSpecification :: Lens.Lens' CreateModelPackage (Prelude.Maybe InferenceSpecification)
createModelPackage_inferenceSpecification :: Lens' CreateModelPackage (Maybe InferenceSpecification)
createModelPackage_inferenceSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe InferenceSpecification
inferenceSpecification :: Maybe InferenceSpecification
$sel:inferenceSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe InferenceSpecification
inferenceSpecification} -> Maybe InferenceSpecification
inferenceSpecification) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe InferenceSpecification
a -> CreateModelPackage
s {$sel:inferenceSpecification:CreateModelPackage' :: Maybe InferenceSpecification
inferenceSpecification = Maybe InferenceSpecification
a} :: CreateModelPackage)

-- | Undocumented member.
createModelPackage_metadataProperties :: Lens.Lens' CreateModelPackage (Prelude.Maybe MetadataProperties)
createModelPackage_metadataProperties :: Lens' CreateModelPackage (Maybe MetadataProperties)
createModelPackage_metadataProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe MetadataProperties
metadataProperties :: Maybe MetadataProperties
$sel:metadataProperties:CreateModelPackage' :: CreateModelPackage -> Maybe MetadataProperties
metadataProperties} -> Maybe MetadataProperties
metadataProperties) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe MetadataProperties
a -> CreateModelPackage
s {$sel:metadataProperties:CreateModelPackage' :: Maybe MetadataProperties
metadataProperties = Maybe MetadataProperties
a} :: CreateModelPackage)

-- | Whether the model is approved for deployment.
--
-- This parameter is optional for versioned models, and does not apply to
-- unversioned models.
--
-- For versioned models, the value of this parameter must be set to
-- @Approved@ to deploy the model.
createModelPackage_modelApprovalStatus :: Lens.Lens' CreateModelPackage (Prelude.Maybe ModelApprovalStatus)
createModelPackage_modelApprovalStatus :: Lens' CreateModelPackage (Maybe ModelApprovalStatus)
createModelPackage_modelApprovalStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe ModelApprovalStatus
modelApprovalStatus :: Maybe ModelApprovalStatus
$sel:modelApprovalStatus:CreateModelPackage' :: CreateModelPackage -> Maybe ModelApprovalStatus
modelApprovalStatus} -> Maybe ModelApprovalStatus
modelApprovalStatus) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe ModelApprovalStatus
a -> CreateModelPackage
s {$sel:modelApprovalStatus:CreateModelPackage' :: Maybe ModelApprovalStatus
modelApprovalStatus = Maybe ModelApprovalStatus
a} :: CreateModelPackage)

-- | A structure that contains model metrics reports.
createModelPackage_modelMetrics :: Lens.Lens' CreateModelPackage (Prelude.Maybe ModelMetrics)
createModelPackage_modelMetrics :: Lens' CreateModelPackage (Maybe ModelMetrics)
createModelPackage_modelMetrics = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe ModelMetrics
modelMetrics :: Maybe ModelMetrics
$sel:modelMetrics:CreateModelPackage' :: CreateModelPackage -> Maybe ModelMetrics
modelMetrics} -> Maybe ModelMetrics
modelMetrics) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe ModelMetrics
a -> CreateModelPackage
s {$sel:modelMetrics:CreateModelPackage' :: Maybe ModelMetrics
modelMetrics = Maybe ModelMetrics
a} :: CreateModelPackage)

-- | A description of the model package.
createModelPackage_modelPackageDescription :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Text)
createModelPackage_modelPackageDescription :: Lens' CreateModelPackage (Maybe Text)
createModelPackage_modelPackageDescription = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe Text
modelPackageDescription :: Maybe Text
$sel:modelPackageDescription:CreateModelPackage' :: CreateModelPackage -> Maybe Text
modelPackageDescription} -> Maybe Text
modelPackageDescription) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe Text
a -> CreateModelPackage
s {$sel:modelPackageDescription:CreateModelPackage' :: Maybe Text
modelPackageDescription = Maybe Text
a} :: CreateModelPackage)

-- | The name or Amazon Resource Name (ARN) of the model package group that
-- this model version belongs to.
--
-- This parameter is required for versioned models, and does not apply to
-- unversioned models.
createModelPackage_modelPackageGroupName :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Text)
createModelPackage_modelPackageGroupName :: Lens' CreateModelPackage (Maybe Text)
createModelPackage_modelPackageGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe Text
modelPackageGroupName :: Maybe Text
$sel:modelPackageGroupName:CreateModelPackage' :: CreateModelPackage -> Maybe Text
modelPackageGroupName} -> Maybe Text
modelPackageGroupName) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe Text
a -> CreateModelPackage
s {$sel:modelPackageGroupName:CreateModelPackage' :: Maybe Text
modelPackageGroupName = Maybe Text
a} :: CreateModelPackage)

-- | The name of the model package. The name must have 1 to 63 characters.
-- Valid characters are a-z, A-Z, 0-9, and - (hyphen).
--
-- This parameter is required for unversioned models. It is not applicable
-- to versioned models.
createModelPackage_modelPackageName :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Text)
createModelPackage_modelPackageName :: Lens' CreateModelPackage (Maybe Text)
createModelPackage_modelPackageName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe Text
modelPackageName :: Maybe Text
$sel:modelPackageName:CreateModelPackage' :: CreateModelPackage -> Maybe Text
modelPackageName} -> Maybe Text
modelPackageName) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe Text
a -> CreateModelPackage
s {$sel:modelPackageName:CreateModelPackage' :: Maybe Text
modelPackageName = Maybe Text
a} :: CreateModelPackage)

-- | The Amazon Simple Storage Service (Amazon S3) path where the sample
-- payload are stored. This path must point to a single gzip compressed tar
-- archive (.tar.gz suffix).
createModelPackage_samplePayloadUrl :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Text)
createModelPackage_samplePayloadUrl :: Lens' CreateModelPackage (Maybe Text)
createModelPackage_samplePayloadUrl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe Text
samplePayloadUrl :: Maybe Text
$sel:samplePayloadUrl:CreateModelPackage' :: CreateModelPackage -> Maybe Text
samplePayloadUrl} -> Maybe Text
samplePayloadUrl) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe Text
a -> CreateModelPackage
s {$sel:samplePayloadUrl:CreateModelPackage' :: Maybe Text
samplePayloadUrl = Maybe Text
a} :: CreateModelPackage)

-- | Details about the algorithm that was used to create the model package.
createModelPackage_sourceAlgorithmSpecification :: Lens.Lens' CreateModelPackage (Prelude.Maybe SourceAlgorithmSpecification)
createModelPackage_sourceAlgorithmSpecification :: Lens' CreateModelPackage (Maybe SourceAlgorithmSpecification)
createModelPackage_sourceAlgorithmSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe SourceAlgorithmSpecification
sourceAlgorithmSpecification :: Maybe SourceAlgorithmSpecification
$sel:sourceAlgorithmSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe SourceAlgorithmSpecification
sourceAlgorithmSpecification} -> Maybe SourceAlgorithmSpecification
sourceAlgorithmSpecification) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe SourceAlgorithmSpecification
a -> CreateModelPackage
s {$sel:sourceAlgorithmSpecification:CreateModelPackage' :: Maybe SourceAlgorithmSpecification
sourceAlgorithmSpecification = Maybe SourceAlgorithmSpecification
a} :: CreateModelPackage)

-- | A list of key value pairs associated with the model. For more
-- information, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html Tagging Amazon Web Services resources>
-- in the /Amazon Web Services General Reference Guide/.
createModelPackage_tags :: Lens.Lens' CreateModelPackage (Prelude.Maybe [Tag])
createModelPackage_tags :: Lens' CreateModelPackage (Maybe [Tag])
createModelPackage_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateModelPackage' :: CreateModelPackage -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe [Tag]
a -> CreateModelPackage
s {$sel:tags:CreateModelPackage' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateModelPackage) 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 machine learning task your model package accomplishes. Common
-- machine learning tasks include object detection and image
-- classification. The following tasks are supported by Inference
-- Recommender: @\"IMAGE_CLASSIFICATION\"@ | @\"OBJECT_DETECTION\"@ |
-- @\"TEXT_GENERATION\"@ |@\"IMAGE_SEGMENTATION\"@ | @\"FILL_MASK\"@ |
-- @\"CLASSIFICATION\"@ | @\"REGRESSION\"@ | @\"OTHER\"@.
--
-- Specify \"OTHER\" if none of the tasks listed fit your use case.
createModelPackage_task :: Lens.Lens' CreateModelPackage (Prelude.Maybe Prelude.Text)
createModelPackage_task :: Lens' CreateModelPackage (Maybe Text)
createModelPackage_task = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe Text
task :: Maybe Text
$sel:task:CreateModelPackage' :: CreateModelPackage -> Maybe Text
task} -> Maybe Text
task) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe Text
a -> CreateModelPackage
s {$sel:task:CreateModelPackage' :: Maybe Text
task = Maybe Text
a} :: CreateModelPackage)

-- | Specifies configurations for one or more transform jobs that SageMaker
-- runs to test the model package.
createModelPackage_validationSpecification :: Lens.Lens' CreateModelPackage (Prelude.Maybe ModelPackageValidationSpecification)
createModelPackage_validationSpecification :: Lens'
  CreateModelPackage (Maybe ModelPackageValidationSpecification)
createModelPackage_validationSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackage' {Maybe ModelPackageValidationSpecification
validationSpecification :: Maybe ModelPackageValidationSpecification
$sel:validationSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe ModelPackageValidationSpecification
validationSpecification} -> Maybe ModelPackageValidationSpecification
validationSpecification) (\s :: CreateModelPackage
s@CreateModelPackage' {} Maybe ModelPackageValidationSpecification
a -> CreateModelPackage
s {$sel:validationSpecification:CreateModelPackage' :: Maybe ModelPackageValidationSpecification
validationSpecification = Maybe ModelPackageValidationSpecification
a} :: CreateModelPackage)

instance Core.AWSRequest CreateModelPackage where
  type
    AWSResponse CreateModelPackage =
      CreateModelPackageResponse
  request :: (Service -> Service)
-> CreateModelPackage -> Request CreateModelPackage
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 CreateModelPackage
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateModelPackage)))
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 ->
          Int -> Text -> CreateModelPackageResponse
CreateModelPackageResponse'
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"ModelPackageArn")
      )

instance Prelude.Hashable CreateModelPackage where
  hashWithSalt :: Int -> CreateModelPackage -> Int
hashWithSalt Int
_salt CreateModelPackage' {Maybe Bool
Maybe [Tag]
Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
Maybe Text
Maybe (HashMap Text Text)
Maybe MetadataProperties
Maybe DriftCheckBaselines
Maybe ModelApprovalStatus
Maybe ModelMetrics
Maybe SourceAlgorithmSpecification
Maybe InferenceSpecification
Maybe ModelPackageValidationSpecification
validationSpecification :: Maybe ModelPackageValidationSpecification
task :: Maybe Text
tags :: Maybe [Tag]
sourceAlgorithmSpecification :: Maybe SourceAlgorithmSpecification
samplePayloadUrl :: Maybe Text
modelPackageName :: Maybe Text
modelPackageGroupName :: Maybe Text
modelPackageDescription :: Maybe Text
modelMetrics :: Maybe ModelMetrics
modelApprovalStatus :: Maybe ModelApprovalStatus
metadataProperties :: Maybe MetadataProperties
inferenceSpecification :: Maybe InferenceSpecification
driftCheckBaselines :: Maybe DriftCheckBaselines
domain :: Maybe Text
customerMetadataProperties :: Maybe (HashMap Text Text)
clientToken :: Maybe Text
certifyForMarketplace :: Maybe Bool
additionalInferenceSpecifications :: Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
$sel:validationSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe ModelPackageValidationSpecification
$sel:task:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:tags:CreateModelPackage' :: CreateModelPackage -> Maybe [Tag]
$sel:sourceAlgorithmSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe SourceAlgorithmSpecification
$sel:samplePayloadUrl:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageName:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageGroupName:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageDescription:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelMetrics:CreateModelPackage' :: CreateModelPackage -> Maybe ModelMetrics
$sel:modelApprovalStatus:CreateModelPackage' :: CreateModelPackage -> Maybe ModelApprovalStatus
$sel:metadataProperties:CreateModelPackage' :: CreateModelPackage -> Maybe MetadataProperties
$sel:inferenceSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe InferenceSpecification
$sel:driftCheckBaselines:CreateModelPackage' :: CreateModelPackage -> Maybe DriftCheckBaselines
$sel:domain:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:customerMetadataProperties:CreateModelPackage' :: CreateModelPackage -> Maybe (HashMap Text Text)
$sel:clientToken:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:certifyForMarketplace:CreateModelPackage' :: CreateModelPackage -> Maybe Bool
$sel:additionalInferenceSpecifications:CreateModelPackage' :: CreateModelPackage
-> Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
certifyForMarketplace
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
customerMetadataProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domain
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DriftCheckBaselines
driftCheckBaselines
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InferenceSpecification
inferenceSpecification
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MetadataProperties
metadataProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModelApprovalStatus
modelApprovalStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModelMetrics
modelMetrics
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
modelPackageDescription
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
modelPackageGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
modelPackageName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
samplePayloadUrl
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SourceAlgorithmSpecification
sourceAlgorithmSpecification
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
task
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModelPackageValidationSpecification
validationSpecification

instance Prelude.NFData CreateModelPackage where
  rnf :: CreateModelPackage -> ()
rnf CreateModelPackage' {Maybe Bool
Maybe [Tag]
Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
Maybe Text
Maybe (HashMap Text Text)
Maybe MetadataProperties
Maybe DriftCheckBaselines
Maybe ModelApprovalStatus
Maybe ModelMetrics
Maybe SourceAlgorithmSpecification
Maybe InferenceSpecification
Maybe ModelPackageValidationSpecification
validationSpecification :: Maybe ModelPackageValidationSpecification
task :: Maybe Text
tags :: Maybe [Tag]
sourceAlgorithmSpecification :: Maybe SourceAlgorithmSpecification
samplePayloadUrl :: Maybe Text
modelPackageName :: Maybe Text
modelPackageGroupName :: Maybe Text
modelPackageDescription :: Maybe Text
modelMetrics :: Maybe ModelMetrics
modelApprovalStatus :: Maybe ModelApprovalStatus
metadataProperties :: Maybe MetadataProperties
inferenceSpecification :: Maybe InferenceSpecification
driftCheckBaselines :: Maybe DriftCheckBaselines
domain :: Maybe Text
customerMetadataProperties :: Maybe (HashMap Text Text)
clientToken :: Maybe Text
certifyForMarketplace :: Maybe Bool
additionalInferenceSpecifications :: Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
$sel:validationSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe ModelPackageValidationSpecification
$sel:task:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:tags:CreateModelPackage' :: CreateModelPackage -> Maybe [Tag]
$sel:sourceAlgorithmSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe SourceAlgorithmSpecification
$sel:samplePayloadUrl:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageName:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageGroupName:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageDescription:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelMetrics:CreateModelPackage' :: CreateModelPackage -> Maybe ModelMetrics
$sel:modelApprovalStatus:CreateModelPackage' :: CreateModelPackage -> Maybe ModelApprovalStatus
$sel:metadataProperties:CreateModelPackage' :: CreateModelPackage -> Maybe MetadataProperties
$sel:inferenceSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe InferenceSpecification
$sel:driftCheckBaselines:CreateModelPackage' :: CreateModelPackage -> Maybe DriftCheckBaselines
$sel:domain:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:customerMetadataProperties:CreateModelPackage' :: CreateModelPackage -> Maybe (HashMap Text Text)
$sel:clientToken:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:certifyForMarketplace:CreateModelPackage' :: CreateModelPackage -> Maybe Bool
$sel:additionalInferenceSpecifications:CreateModelPackage' :: CreateModelPackage
-> Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
certifyForMarketplace
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
customerMetadataProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
domain
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DriftCheckBaselines
driftCheckBaselines
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InferenceSpecification
inferenceSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MetadataProperties
metadataProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModelApprovalStatus
modelApprovalStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModelMetrics
modelMetrics
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
modelPackageDescription
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
modelPackageGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
modelPackageName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
samplePayloadUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SourceAlgorithmSpecification
sourceAlgorithmSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
task
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ModelPackageValidationSpecification
validationSpecification

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

instance Data.ToJSON CreateModelPackage where
  toJSON :: CreateModelPackage -> Value
toJSON CreateModelPackage' {Maybe Bool
Maybe [Tag]
Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
Maybe Text
Maybe (HashMap Text Text)
Maybe MetadataProperties
Maybe DriftCheckBaselines
Maybe ModelApprovalStatus
Maybe ModelMetrics
Maybe SourceAlgorithmSpecification
Maybe InferenceSpecification
Maybe ModelPackageValidationSpecification
validationSpecification :: Maybe ModelPackageValidationSpecification
task :: Maybe Text
tags :: Maybe [Tag]
sourceAlgorithmSpecification :: Maybe SourceAlgorithmSpecification
samplePayloadUrl :: Maybe Text
modelPackageName :: Maybe Text
modelPackageGroupName :: Maybe Text
modelPackageDescription :: Maybe Text
modelMetrics :: Maybe ModelMetrics
modelApprovalStatus :: Maybe ModelApprovalStatus
metadataProperties :: Maybe MetadataProperties
inferenceSpecification :: Maybe InferenceSpecification
driftCheckBaselines :: Maybe DriftCheckBaselines
domain :: Maybe Text
customerMetadataProperties :: Maybe (HashMap Text Text)
clientToken :: Maybe Text
certifyForMarketplace :: Maybe Bool
additionalInferenceSpecifications :: Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
$sel:validationSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe ModelPackageValidationSpecification
$sel:task:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:tags:CreateModelPackage' :: CreateModelPackage -> Maybe [Tag]
$sel:sourceAlgorithmSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe SourceAlgorithmSpecification
$sel:samplePayloadUrl:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageName:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageGroupName:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelPackageDescription:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:modelMetrics:CreateModelPackage' :: CreateModelPackage -> Maybe ModelMetrics
$sel:modelApprovalStatus:CreateModelPackage' :: CreateModelPackage -> Maybe ModelApprovalStatus
$sel:metadataProperties:CreateModelPackage' :: CreateModelPackage -> Maybe MetadataProperties
$sel:inferenceSpecification:CreateModelPackage' :: CreateModelPackage -> Maybe InferenceSpecification
$sel:driftCheckBaselines:CreateModelPackage' :: CreateModelPackage -> Maybe DriftCheckBaselines
$sel:domain:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:customerMetadataProperties:CreateModelPackage' :: CreateModelPackage -> Maybe (HashMap Text Text)
$sel:clientToken:CreateModelPackage' :: CreateModelPackage -> Maybe Text
$sel:certifyForMarketplace:CreateModelPackage' :: CreateModelPackage -> Maybe Bool
$sel:additionalInferenceSpecifications:CreateModelPackage' :: CreateModelPackage
-> Maybe (NonEmpty AdditionalInferenceSpecificationDefinition)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AdditionalInferenceSpecifications" 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 (NonEmpty AdditionalInferenceSpecificationDefinition)
additionalInferenceSpecifications,
            (Key
"CertifyForMarketplace" 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 Bool
certifyForMarketplace,
            (Key
"ClientToken" 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 Text
clientToken,
            (Key
"CustomerMetadataProperties" 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 (HashMap Text Text)
customerMetadataProperties,
            (Key
"Domain" 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 Text
domain,
            (Key
"DriftCheckBaselines" 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 DriftCheckBaselines
driftCheckBaselines,
            (Key
"InferenceSpecification" 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 InferenceSpecification
inferenceSpecification,
            (Key
"MetadataProperties" 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 MetadataProperties
metadataProperties,
            (Key
"ModelApprovalStatus" 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 ModelApprovalStatus
modelApprovalStatus,
            (Key
"ModelMetrics" 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 ModelMetrics
modelMetrics,
            (Key
"ModelPackageDescription" 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 Text
modelPackageDescription,
            (Key
"ModelPackageGroupName" 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 Text
modelPackageGroupName,
            (Key
"ModelPackageName" 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 Text
modelPackageName,
            (Key
"SamplePayloadUrl" 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 Text
samplePayloadUrl,
            (Key
"SourceAlgorithmSpecification" 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 SourceAlgorithmSpecification
sourceAlgorithmSpecification,
            (Key
"Tags" 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 [Tag]
tags,
            (Key
"Task" 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 Text
task,
            (Key
"ValidationSpecification" 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 ModelPackageValidationSpecification
validationSpecification
          ]
      )

instance Data.ToPath CreateModelPackage where
  toPath :: CreateModelPackage -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

-- |
-- Create a value of 'CreateModelPackageResponse' 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', 'createModelPackageResponse_httpStatus' - The response's http status code.
--
-- 'modelPackageArn', 'createModelPackageResponse_modelPackageArn' - The Amazon Resource Name (ARN) of the new model package.
newCreateModelPackageResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'modelPackageArn'
  Prelude.Text ->
  CreateModelPackageResponse
newCreateModelPackageResponse :: Int -> Text -> CreateModelPackageResponse
newCreateModelPackageResponse
  Int
pHttpStatus_
  Text
pModelPackageArn_ =
    CreateModelPackageResponse'
      { $sel:httpStatus:CreateModelPackageResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:modelPackageArn:CreateModelPackageResponse' :: Text
modelPackageArn = Text
pModelPackageArn_
      }

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

-- | The Amazon Resource Name (ARN) of the new model package.
createModelPackageResponse_modelPackageArn :: Lens.Lens' CreateModelPackageResponse Prelude.Text
createModelPackageResponse_modelPackageArn :: Lens' CreateModelPackageResponse Text
createModelPackageResponse_modelPackageArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateModelPackageResponse' {Text
modelPackageArn :: Text
$sel:modelPackageArn:CreateModelPackageResponse' :: CreateModelPackageResponse -> Text
modelPackageArn} -> Text
modelPackageArn) (\s :: CreateModelPackageResponse
s@CreateModelPackageResponse' {} Text
a -> CreateModelPackageResponse
s {$sel:modelPackageArn:CreateModelPackageResponse' :: Text
modelPackageArn = Text
a} :: CreateModelPackageResponse)

instance Prelude.NFData CreateModelPackageResponse where
  rnf :: CreateModelPackageResponse -> ()
rnf CreateModelPackageResponse' {Int
Text
modelPackageArn :: Text
httpStatus :: Int
$sel:modelPackageArn:CreateModelPackageResponse' :: CreateModelPackageResponse -> Text
$sel:httpStatus:CreateModelPackageResponse' :: CreateModelPackageResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
modelPackageArn